做了一个图片站玩玩练练手,也没想过怎样推广所以平时也没任何流量,昨天偶然发现流量飙升到峰值,nginx 连接数很大,硬盘 io 一直居高不下,因为我的应用程序、MySQL 以及图片都存在同一台垃圾服务器上的,所以 io 占用高导致连网站都打不开了,由于套了 CF,所以不知道恶意请求的 ip 来自于哪,那么问题来了:
- 这是不是传说中的 ddos 攻击?
- CF 能不能查看请求量最多的 ip 是啥?
- 如果 cf 不能查恶意 ip,怎么来记录追踪恶意 ip ?
做了一个图片站玩玩练练手,也没想过怎样推广所以平时也没任何流量,昨天偶然发现流量飙升到峰值,nginx 连接数很大,硬盘 io 一直居高不下,因为我的应用程序、MySQL 以及图片都存在同一台垃圾服务器上的,所以 io 占用高导致连网站都打不开了,由于套了 CF,所以不知道恶意请求的 ip 来自于哪,那么问题来了:
|
myqooNov 26, 2019
1
也有可能是搜索引擎抓图片导致的
|
|
xiaozNov 26, 2019
2
也不一定是被攻击了吧,最好还是结合网站日志进行分析,我之前有遇到被菠菜网站利用的,查看日志发现是对方上传了菠菜图片引用到他的网站,然后他的网站调用非常频繁,一天耗费上百 G 流量。
|
|
RENov 26, 2019 via iPhone
3
CF 有转发原请求 IP 的,接入的时候文档中也有提示要适配,不然所有基于 IP 做验证的逻辑都会出问题
|
|
mikeguanNov 26, 2019 via Android
4
你的 Nginx 日志里面就有原 IP
|
|
xmh51Nov 26, 2019
6
有一个请求头标识原始 ip
|
|
opengpsNov 26, 2019 via Android
7
日志里找带 forwards 的列
|
|
run2Nov 26, 2019
8
https://support.cloudflare.com/hc/zh-cn/articles/200170786
我的服务器日志为什么使用 Cloudflare 时会显示 Cloudflare 的 IP ? |
|
eason1874Nov 26, 2019
9
X-Forwarded-For 第一个 IP 就是用户 IP,后面可能还有其他 IP (比如用户自身代理)也可能没有,如果会有以英文逗号分隔
|
|
explore365Nov 26, 2019
10
$_SERVER['HTTP_CF_CONNECTING_IP'] 来源 IP
$_SERVER['HTTP_CF_VISITOR'] 访问协议 $_SERVER['HTTP_CF_RAY'] CF 节点 $_SERVER['HTTP_CF_IPCOUNTRY'] 来源国家 |
|
11
@explore365 是图片被恶意请求,不是 php 脚本被执行,nginx 没法看图片被请求的真实 ip,全是 CF 的 ip
|
|
eason1874Nov 26, 2019
12
@kisshere #11 Nginx 默认的日志字段里的 $http_x_forwarded_for 就是我前面说的 X-Forwarded-For,这个记录的第一个 IP 就是用户 IP,你可以用来排查旧日志。
因为 X-Forwarded-For 可能会叠加用户 IP、代理 IP 和用户自定义的值,CF 建议用他们自定义字段 CF-Connecting-IP,具体写到 Nginx 日志格式就是这样 $http_cf_connecting_ip |
|
lewis89Nov 26, 2019
13
5s 盾
|
|
explore365Nov 26, 2019
14
@kisshere nginx 也可以啊,也是这几个 header 参数,写法不一样
|
|
explore365Nov 26, 2019
15
$http_cf_connecting_ip 来源 IP
$http_cf_visitor 访问协议 $http_cf_ray CF 节点 $http_cf_ipcountry 来源国家 nginx 变量 |
|
godZhoujlNov 26, 2019
16
还以为 CF 是 Cross Fire :satisfied:
|
|
jasamboroNov 26, 2019
17
反正我套了 CF 的图床也被人找到真实 ip 投诉版权了
|
|
netnrNov 26, 2019
18
CF 请求头里面有客户端的 IP
|