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

1 分钟(60 秒)内,同一 IP 刷新了多少次,就当作恶意刷新关小黑屋?(防御单一 IP 的 CC 攻击)

  •  
  •   kmvan · 2014-09-26 00:29:36 +08:00 · 8423 次点击
    这是一个创建于 3741 天前的主题,其中的信息可能已经有所发展或是发生改变。
    1分钟内,刷 30 次?还是 60 次呢?或者有没有其他更好的方案?
    31 条回复    2014-09-28 05:44:41 +08:00
    thinkxen
        1
    thinkxen  
       2014-09-26 01:04:11 +08:00 via Android   ❤️ 1
    暂时没
    qwe321
        2
    qwe321  
       2014-09-26 01:25:53 +08:00   ❤️ 1
    有些网站F5就刷挂了
    0x142857
        3
    0x142857  
       2014-09-26 05:19:09 +08:00 via Android   ❤️ 1
    都是按秒算
    rockpine
        4
    rockpine  
       2014-09-26 08:41:20 +08:00   ❤️ 1
    @qwe321 比如说v2ex,在当前页面按住F5不放,就被关小黑屋了,哈哈
    bjzhush
        5
    bjzhush  
       2014-09-26 09:00:44 +08:00   ❤️ 1
    根据业务场景来,其实直接ban不太好,有些单位公网IP是同一个,几百人在用
    可以加不同难度的验证码并为之设定有效时间
    imn1
        6
    imn1  
       2014-09-26 09:16:02 +08:00   ❤️ 1
    善用 http 304
    geew
        7
    geew  
       2014-09-26 10:19:36 +08:00   ❤️ 1
    @rockpine 刚去试了下 真被v2关小黑屋了。。。。。
    wwlweihai
        8
    wwlweihai  
       2014-09-26 10:22:22 +08:00   ❤️ 1
    @geew 那是白屋 好吧 刚刚刷进去了
    ddosinhell
        9
    ddosinhell  
       2014-09-26 10:48:37 +08:00   ❤️ 1
    前几天回复稍微频繁 就被关了
    CoX
        10
    CoX  
       2014-09-26 10:54:43 +08:00   ❤️ 1
    如果你用的是apache+php的话,可以尝试一下这个模块mod_evasive
    ryd994
        11
    ryd994  
       2014-09-26 11:06:31 +08:00   ❤️ 1
    nginx可以加conn_limit和req_limit
    也可以iptables限制连接频率和并发连接
    geew
        12
    geew  
       2014-09-26 11:15:31 +08:00   ❤️ 1
    @wwlweihai 。。。why you try
    qwe321
        13
    qwe321  
       2014-09-26 12:11:19 +08:00   ❤️ 1
    @geew 。。。why you try
    durrrr
        14
    durrrr  
       2014-09-26 12:32:45 +08:00   ❤️ 1
    Please retry after 1121 seconds.
    我也进去了
    pubby
        15
    pubby  
       2014-09-26 13:01:41 +08:00   ❤️ 1
    现在也在用一个简单防CC策略

    1. 每隔10秒将 nginx access log文件交给php脚本分析,得到可疑ip
    2. 将可疑ip放入防火墙<check>队列,该队列会将80端口的请求导入到一个检测服务
    3. 用golang写了一个检测程序:
    第一步:尝试js跳转,cookie验证,如果通过,则将请求relay到原80端口,并且继续观察后续请求频率。
    第二步:如果第一步通过后访问频率还是高,就进入验证码验证,如果验证码通过,就把ip从<check>队列移除。
    4. <check>中每个ip只保留1小时,防止误伤。
    young
        16
    young  
       2014-09-26 13:10:19 +08:00   ❤️ 1
    我刚出来...
    lbp0200
        17
    lbp0200  
       2014-09-26 13:31:46 +08:00   ❤️ 1
    我的vps供应商设置的是5/s
    evefree2
        18
    evefree2  
       2014-09-26 13:36:12 +08:00   ❤️ 1
    特定时间 内, 某一IP如果在特定规则下刷 就关小黑屋,然后特定时间解锁就ok
    ZMOM1031
        19
    ZMOM1031  
       2014-09-26 13:36:39 +08:00   ❤️ 1
    暂时没碰到过这种情况,以前经常浏览器自动刷新的,
    要是就因为这事把我关进去了,我保证给他DDoS。

    遇到CC攻击不会通过防火墙检测把他的数据包丢弃掉吗?
    kivensun
        20
    kivensun  
       2014-09-26 14:26:01 +08:00
    果然有小黑屋 刚出来
    demo
        21
    demo  
       2014-09-26 14:58:13 +08:00
    no zuo no die, 才出来没多久...

    amh有个防cc模块,楼主可以研究下: http://www.lsanday.com/386.html
    soulteary
        22
    soulteary  
       2014-09-26 15:16:48 +08:00
    - fail2ban
    - iptables
    - limit-req2
    - 其实现在看来更大的隐患不是快速攻击这种容易发觉的,而是慢速的长期嗅探。
    ryd994
        23
    ryd994  
       2014-09-26 22:09:23 +08:00
    @soulteary 更坑的是小规模cc混合http slow, 表面上看是cc,实际上卡死的slow
    msg7086
        24
    msg7086  
       2014-09-27 08:31:35 +08:00
    @pubby -> fail2ban

    不过这么频繁检查日志,对于大流量的网站来说会死得很惨哦
    pubby
        25
    pubby  
       2014-09-27 10:41:00 +08:00 via Android
    @msg7086 为什么会死很惨?
    msg7086
        26
    msg7086  
       2014-09-27 14:10:11 +08:00
    @pubby 因为大流量的网站,accesslog每时每刻都在更新,所以fail2ban会一直收到inotify。
    pubby
        27
    pubby  
       2014-09-27 15:39:11 +08:00
    @msg7086 每次先将accesslog mv到一个临时文件的。所以accesslog中只有10s内的数据
    msg7086
        28
    msg7086  
       2014-09-27 18:32:28 +08:00
    @pubby 你真的知道「文件句柄」这种东西吧……
    还有,你要怎么每10秒执行一次?你知道cron是每分钟一发的吧……
    pubby
        29
    pubby  
       2014-09-27 23:32:35 +08:00
    @msg7086 我当然知道cron的精度只有1分钟 10秒执行一次自然是脚本自己控制的
    莫非你以为10s还处理不了10s内access log数据?
    msg7086
        30
    msg7086  
       2014-09-28 05:43:37 +08:00 via iPhone
    @pubby 不对不对…我说的是fail2ban的情况。

    这种分析accesslog的东西我以前做好,但是不停地让web server重新打开文件太麻烦了,还不如用lua+redis来做,方便多了。我做的是bt tracker。
    msg7086
        31
    msg7086  
       2014-09-28 05:44:41 +08:00 via iPhone
    s/做好/做过/
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   6090 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 02:15 · PVG 10:15 · LAX 18:15 · JFK 21:15
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.