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

PHP 如何应对较高并发, 1 秒钟 3000-5000 次

  •  
  •   tianxiacangshen · 2017-07-13 16:11:20 +08:00 · 5527 次点击
    这是一个创建于 2675 天前的主题,其中的信息可能已经有所发展或是发生改变。
    流量不是很多,每天 12000 ip 32000pv,但是这几天有些坏人一直在发动并发访问,对方找到网站上的所有 post 之后,利用几个 ip 不断访问 post 页面,一秒钟 3000-5000 次,添加了验证码,但是验证码好像失效了,这样没达到攻击级别,但是却让 cpu 长期 100%,导致网站很卡。

    这种情况怎么办?
    29 条回复    2017-07-14 21:06:25 +08:00
    xiaowu365
        1
    xiaowu365  
       2017-07-13 16:12:19 +08:00
    百度云加速
    tianxiacangshen
        2
    tianxiacangshen  
    OP
       2017-07-13 16:15:26 +08:00
    @xiaowu365 是英文站,用了 cloudflare 的 pro 版,
    alex321
        3
    alex321  
       2017-07-13 16:18:26 +08:00
    Nginx 负载均衡下。。。自动脚本分析每秒超过 5 次 post 的 IP 添加到 Nginx 的 black list。
    sydra
        4
    sydra  
       2017-07-13 16:18:30 +08:00
    全局增加一个根据 ip 的访问时间间隔限制不就好了.
    hosea
        5
    hosea  
       2017-07-13 16:20:13 +08:00
    属于被攻击防御范畴的问题了吧。。建议先封 ip。。然后配置 server 层面的访问拦截
    nullen
        6
    nullen  
       2017-07-13 16:33:31 +08:00
    nginx 有 rate limit 模块,可以试试看先?
    andrewDDC
        7
    andrewDDC  
       2017-07-13 16:34:49 +08:00
    nginx +lua + iptable 设置一下规则,超过的直接 drop 掉
    yghack
        8
    yghack  
       2017-07-13 16:39:02 +08:00
    waf
    wwek
        9
    wwek  
       2017-07-13 16:48:45 +08:00
    继续挂在 cloudflare 下
    自己用 nginx +lua 做二次清洗
    we3613040
        10
    we3613040  
       2017-07-13 16:55:05 +08:00
    按照 ip 做限制,对方换代理也需要成本的
    wujunze
        11
    wujunze  
       2017-07-13 16:58:23 +08:00
    这个属于被 CC 了 用 Nginx 限制一下
    yylzcom
        12
    yylzcom  
       2017-07-13 17:03:13 +08:00
    之前遇到过
    nginx+fail2ban 禁用 ip24 小时
    windfarer
        13
    windfarer  
       2017-07-13 17:03:49 +08:00
    打回去。。
    towser
        14
    towser  
       2017-07-13 17:10:34 +08:00
    去搜防 CC 脚本,一抓一大把 ,调试好了后台跑在服务器上,其他什么都不用管。
    lan894734188
        15
    lan894734188  
       2017-07-13 18:48:05 +08:00 via Android
    redis cache 静态化 php7
    jellybool
        16
    jellybool  
       2017-07-13 19:34:59 +08:00 via iPhone
    这种情况跟我之前遇到的好像....nginx + lua 可以的,基本就是分析特征,匹配(不管是 ip 或者 agent 或者 header ),然后处理掉就好……
    cst4you
        17
    cst4you  
       2017-07-13 19:37:29 +08:00
    cc 还是好防的, 针对对方攻击的方式做限制就好
    a570295535
        18
    a570295535  
       2017-07-13 19:46:29 +08:00
    虽然我不懂啥技术,但是我的评论框提交评论后会有 15 秒的等待时间,
    还有就是对页面刷新时间进行限制,这样清净不少。。。
    ddou
        19
    ddou  
       2017-07-13 21:26:20 +08:00 via iPhone
    oldgun
        20
    oldgun  
       2017-07-13 21:52:06 +08:00
    干掉就好
    falcon05
        21
    falcon05  
       2017-07-13 22:09:47 +08:00 via iPhone
    @a570295535 这种前端的限制只能防君子防不了小人……
    xiaoz
        22
    xiaoz  
       2017-07-14 08:09:01 +08:00 via iPhone
    @yylzcom 我之前用 ng+f2 对 http 有效,对 https 的网站无效,有遇到过吗?
    yylzcom
        23
    yylzcom  
       2017-07-14 08:14:22 +08:00
    @xiaoz #22 我只做了 http 的,原理是自建 fail2ban 的 filter 来读取 nginx 的日志,建议要从 nginx 的日志入手看看吧。如果确定 fail2ban 的 filter 能对应到 nginx 日志里的条目但是无效,那就是玄学了……
    glouhao
        24
    glouhao  
       2017-07-14 08:26:09 +08:00 via Android
    @falcon05 都是小人吧,能防笨小人就是了
    Betacoefficient
        25
    Betacoefficient  
       2017-07-14 08:33:33 +08:00
    @glouhao 你说的对,有些人就是这样坏。
    msg7086
        26
    msg7086  
       2017-07-14 08:40:57 +08:00
    rate limit 配合 fail2ban 真的够用了。
    xiaoz
        27
    xiaoz  
       2017-07-14 08:47:23 +08:00
    @yylzcom 我看 f2 的日志中是匹配出了 IP 的,但是未对 IP 屏蔽。
    yylzcom
        28
    yylzcom  
       2017-07-14 08:50:03 +08:00
    @xiaoz #27 检查你的 fail2ban 的自定义 filter 里的 action 等号后面
    [iptables[name=xxx, port=http, protocol=tcp]
    看看修改 port 为 https 试试看?
    leekafai
        29
    leekafai  
       2017-07-14 21:06:25 +08:00 via Android
    web server 直接斩 ip 吧,增大 d 站成本说不定别人觉得没好处就收了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   947 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 20:47 · PVG 04:47 · LAX 12:47 · JFK 15:47
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.