tianxiacangshen
V2EX  ›  PHP

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

  •  
  •   tianxiacangshen · Jul 13, 2017 · 6310 views
    This topic created in 3225 days ago, the information mentioned may be changed or developed.
    流量不是很多,每天 12000 ip 32000pv,但是这几天有些坏人一直在发动并发访问,对方找到网站上的所有 post 之后,利用几个 ip 不断访问 post 页面,一秒钟 3000-5000 次,添加了验证码,但是验证码好像失效了,这样没达到攻击级别,但是却让 cpu 长期 100%,导致网站很卡。

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