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

再聊防网站攻击

  •  
  •   Jack · 2015-01-02 21:18:35 +08:00 · 4288 次点击
    这是一个创建于 3608 天前的主题,其中的信息可能已经有所发展或是发生改变。

    折腾一番装了fail2ban和redis后,被攻击情况有所好转,fail2ban封掉一批访问频繁的ip,redis缓存时间段内的搜索词减少mysql压力,同ip一分钟内搜索次数也做了限制,但是还是无法完全解决。

    昨儿晚上封掉1000多个IP,因为IP数量多,即使不短时间内密集访问也一样能有海量请求,搜索词不断变化,redis缓存和限制搜索频率也基本起不了太大作用,这种IP量加速乐也完全无效形同虚设,所以还得靠自己。

    所以现在即使不是完全瘫掉,也会经常打不开页面,求问还有什么解决思路可以有效根治?

    20 条回复    2015-05-20 21:47:32 +08:00
    tigerstudent
        1
    tigerstudent  
       2015-01-02 22:04:53 +08:00 via Android
    怎么会IP封不完?
    ryd994
        2
    ryd994  
       2015-01-02 22:07:56 +08:00
    cdn形同虚设谁说的?
    cdn有没有用不是取决于客户数量,而是取决于动态内容的数量。(当然用户的分布也会有少许,但是应该不大)
    根治就该注册啊
    ytf4425
        3
    ytf4425  
       2015-01-02 22:19:37 +08:00
    卧槽那人IP这么多!
    遇见大流量攻击就找CloudFlare
    typcn
        4
    typcn  
       2015-01-02 22:28:32 +08:00
    表示上 ccav 那天被十万IP攻击,我默默喝着 coffee 看着数字上涨,网站依然秒开。
    CDN 只是起一个辅助作用,帮你过滤掉一些频率高的访问。
    程序优化 和 服务器的配置才是最关键的部分,上次就跟你说了搜索加一些限制或者加一些验证。
    不想改代码就加钱上高配。
    Jack
        5
    Jack  
    OP
       2015-01-02 22:36:40 +08:00
    @typcn 加了1分钟搜5次,不是很有效果
    typcn
        6
    typcn  
       2015-01-02 22:40:05 +08:00
    @Jack

    tcpdump 看发过来的包是否有明显 HTTP 代理特征,如果是就屏蔽此 header
    注册之后才能搜索
    搜索需要输入验证码
    搜索需要浏览器运行复杂JS代码
    binux
        7
    binux  
       2015-01-02 22:41:17 +08:00
    @typcn "当天晚上百度加速上面我的网站连缓存都不能刷了,设置都进不去,全部都是参数错误" 强行秒卡。
    typcn
        8
    typcn  
       2015-01-02 22:43:59 +08:00
    @Jack 99.9% 的 bot 都不可能运行 JS,也没有人那么闲去写支持 JS 的攻击器,加一些需要 js 运算的东西,使用 obfuscator 保证不被轻易破解,比如根据 forum 内容生成 以及打开时间 进行 aes 加密 + base64 ,算出 表单 secret , 服务器保证这个 secret 正确的情况下载进行搜索。当然让客户端计算 hash 也可以。
    typcn
        9
    typcn  
       2015-01-02 22:44:24 +08:00
    @binux 白天超大访问量一直正常的,,晚上不知道被谁搞了
    typcn
        10
    typcn  
       2015-01-02 22:46:30 +08:00
    @binux 不能刷缓存是百度一台服务器的问题,不能说秒开但是网站起码还是可以正常访问的。
    ricorico
        11
    ricorico  
       2015-01-02 22:48:31 +08:00 via iPad
    @binux 秒卡是什么意思喵...
    binux
        12
    binux  
       2015-01-02 22:50:08 +08:00
    @ricorico 写错了不行吗!
    LU35
        13
    LU35  
       2015-01-02 23:00:38 +08:00
    试过服务器安全狗吗?
    iannil
        14
    iannil  
       2015-01-02 23:21:53 +08:00
    @Jack 同typcn所说,你可以参考下58同城登录所用的前端逻辑,每次提交表单都用js+时间戳计算出一个60s内有效的key。如果能做到那种复杂度,攻击难度会提高N个难度。

    其实所有使用软件方式做网站攻防都是个动态的过程,除了加大服务器性能和带宽到N高以外,没有什么绝对根治的办法,你需要针对攻击方式不断更改防御的方式,直到把攻击方的攻击成本加到他们无法承受的程度才可以。
    leeyiw
        15
    leeyiw  
       2015-01-02 23:48:05 +08:00
    搜索加验证码尝试过吗?
    hjc4869
        16
    hjc4869  
       2015-01-02 23:56:23 +08:00 via iPhone
    @leeyiw 验证码还不能忘记缓存
    roricon
        17
    roricon  
       2015-01-03 01:48:16 +08:00


    你说行就行喽~
    amxku
        18
    amxku  
       2015-01-03 10:28:36 +08:00
    如果Nginx,可以试试
    http limit conn
    http limit req
    willis
        19
    willis  
       2015-01-03 12:08:52 +08:00
    @amxku Nginx还有mod_security
    leeyiw
        20
    leeyiw  
       2015-05-20 21:47:32 +08:00
    @hjc4869 把 POST 数据放到 Cookie 里面应该是可行的。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5948 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 02:20 · PVG 10:20 · LAX 18:20 · JFK 21:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.