V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
kisshere
V2EX  ›  程序员

套了 CF 的图片站被恶意攻击,怎样查找原始恶意 ip?

  •  
  •   kisshere · 2019-11-26 10:32:31 +08:00 · 3549 次点击
    这是一个创建于 1828 天前的主题,其中的信息可能已经有所发展或是发生改变。

    做了一个图片站玩玩练练手,也没想过怎样推广所以平时也没任何流量,昨天偶然发现流量飙升到峰值,nginx 连接数很大,硬盘 io 一直居高不下,因为我的应用程序、MySQL 以及图片都存在同一台垃圾服务器上的,所以 io 占用高导致连网站都打不开了,由于套了 CF,所以不知道恶意请求的 ip 来自于哪,那么问题来了:

    1. 这是不是传说中的 ddos 攻击?
    2. CF 能不能查看请求量最多的 ip 是啥?
    3. 如果 cf 不能查恶意 ip,怎么来记录追踪恶意 ip ?
    18 条回复    2019-11-26 17:13:53 +08:00
    myqoo
        1
    myqoo  
       2019-11-26 11:09:52 +08:00
    也有可能是搜索引擎抓图片导致的
    xiaoz
        2
    xiaoz  
       2019-11-26 11:40:25 +08:00
    也不一定是被攻击了吧,最好还是结合网站日志进行分析,我之前有遇到被菠菜网站利用的,查看日志发现是对方上传了菠菜图片引用到他的网站,然后他的网站调用非常频繁,一天耗费上百 G 流量。
    RE
        3
    RE  
       2019-11-26 11:48:44 +08:00 via iPhone
    CF 有转发原请求 IP 的,接入的时候文档中也有提示要适配,不然所有基于 IP 做验证的逻辑都会出问题
    mikeguan
        4
    mikeguan  
       2019-11-26 11:58:46 +08:00 via Android
    你的 Nginx 日志里面就有原 IP
    kisshere
        5
    kisshere  
    OP
       2019-11-26 12:13:24 +08:00
    @mikeguan 全是 CF 的 ip
    xmh51
        6
    xmh51  
       2019-11-26 12:16:49 +08:00
    有一个请求头标识原始 ip
    opengps
        7
    opengps  
       2019-11-26 12:29:26 +08:00 via Android
    日志里找带 forwards 的列
    sobigfish
        8
    sobigfish  
       2019-11-26 12:35:42 +08:00
    https://support.cloudflare.com/hc/zh-cn/articles/200170786
    我的服务器日志为什么使用 Cloudflare 时会显示 Cloudflare 的 IP ?
    eason1874
        9
    eason1874  
       2019-11-26 14:18:22 +08:00
    X-Forwarded-For 第一个 IP 就是用户 IP,后面可能还有其他 IP (比如用户自身代理)也可能没有,如果会有以英文逗号分隔
    explore365
        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'] 来源国家
    kisshere
        11
    kisshere  
    OP
       2019-11-26 14:40:20 +08:00
    @explore365 是图片被恶意请求,不是 php 脚本被执行,nginx 没法看图片被请求的真实 ip,全是 CF 的 ip
    eason1874
        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
    lewis89
        13
    lewis89  
       2019-11-26 14:57:27 +08:00
    5s 盾
    explore365
        14
    explore365  
       2019-11-26 14:59:07 +08:00
    @kisshere nginx 也可以啊,也是这几个 header 参数,写法不一样
    explore365
        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 变量
    godZhoujl
        16
    godZhoujl  
       2019-11-26 16:50:32 +08:00
    还以为 CF 是 Cross Fire :satisfied:
    jasamboro
        17
    jasamboro  
       2019-11-26 17:06:14 +08:00
    反正我套了 CF 的图床也被人找到真实 ip 投诉版权了
    netnr
        18
    netnr  
       2019-11-26 17:13:53 +08:00
    CF 请求头里面有客户端的 IP
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3030 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 14:41 · PVG 22:41 · LAX 06:41 · JFK 09:41
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.