做了一个图片站玩玩练练手,也没想过怎样推广所以平时也没任何流量,昨天偶然发现流量飙升到峰值,nginx 连接数很大,硬盘 io 一直居高不下,因为我的应用程序、MySQL 以及图片都存在同一台垃圾服务器上的,所以 io 占用高导致连网站都打不开了,由于套了 CF,所以不知道恶意请求的 ip 来自于哪,那么问题来了:
1
myqoo 2019-11-26 11:09:52 +08:00
也有可能是搜索引擎抓图片导致的
|
2
xiaoz 2019-11-26 11:40:25 +08:00
也不一定是被攻击了吧,最好还是结合网站日志进行分析,我之前有遇到被菠菜网站利用的,查看日志发现是对方上传了菠菜图片引用到他的网站,然后他的网站调用非常频繁,一天耗费上百 G 流量。
|
3
RE 2019-11-26 11:48:44 +08:00 via iPhone
CF 有转发原请求 IP 的,接入的时候文档中也有提示要适配,不然所有基于 IP 做验证的逻辑都会出问题
|
4
mikeguan 2019-11-26 11:58:46 +08:00 via Android
你的 Nginx 日志里面就有原 IP
|
6
xmh51 2019-11-26 12:16:49 +08:00
有一个请求头标识原始 ip
|
7
opengps 2019-11-26 12:29:26 +08:00 via Android
日志里找带 forwards 的列
|
8
sobigfish 2019-11-26 12:35:42 +08:00
https://support.cloudflare.com/hc/zh-cn/articles/200170786
我的服务器日志为什么使用 Cloudflare 时会显示 Cloudflare 的 IP ? |
9
eason1874 2019-11-26 14:18:22 +08:00
X-Forwarded-For 第一个 IP 就是用户 IP,后面可能还有其他 IP (比如用户自身代理)也可能没有,如果会有以英文逗号分隔
|
10
explore365 2019-11-26 14:32:35 +08:00
$_SERVER['HTTP_CF_CONNECTING_IP'] 来源 IP
$_SERVER['HTTP_CF_VISITOR'] 访问协议 $_SERVER['HTTP_CF_RAY'] CF 节点 $_SERVER['HTTP_CF_IPCOUNTRY'] 来源国家 |
11
kisshere OP @explore365 是图片被恶意请求,不是 php 脚本被执行,nginx 没法看图片被请求的真实 ip,全是 CF 的 ip
|
12
eason1874 2019-11-26 14:56:39 +08:00
@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 |
13
lewis89 2019-11-26 14:57:27 +08:00
5s 盾
|
14
explore365 2019-11-26 14:59:07 +08:00
@kisshere nginx 也可以啊,也是这几个 header 参数,写法不一样
|
15
explore365 2019-11-26 15:03:08 +08:00
$http_cf_connecting_ip 来源 IP
$http_cf_visitor 访问协议 $http_cf_ray CF 节点 $http_cf_ipcountry 来源国家 nginx 变量 |
16
godZhoujl 2019-11-26 16:50:32 +08:00
还以为 CF 是 Cross Fire :satisfied:
|
17
jasamboro 2019-11-26 17:06:14 +08:00
反正我套了 CF 的图床也被人找到真实 ip 投诉版权了
|
18
netnr 2019-11-26 17:13:53 +08:00
CF 请求头里面有客户端的 IP
|