tianxiacangshen
V2EX  ›  PHP

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

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