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

建站一个月几乎每天都被攻击。。求解决思路

  •  1
     
  •   Jack · 2014-12-23 21:42:53 +08:00 · 15935 次点击
    这是一个创建于 3414 天前的主题,其中的信息可能已经有所发展或是发生改变。

    建站一个月。。。几乎每天都在被攻击。。。而且道高一丈魔高一丈的。。。攻击方法不断升级。。。

    我的架构是nginx php mysql,今天搭上了SSDB,依旧未管用

    主要攻击是在搜索页,一开始是单一ip单一词汇刷而已
    封了ip以后变成n个ip不停刷
    于是我就把搜索使用的词封掉,于是变成n个8-10个词的组合不停的刷,就这也算有规律可循
    但是到了今天变成了拿字典来刷,完全无规律组合词多ip不停搜索

    一上来我就挂,即使我把搜过的纪录全放到了SSDB,但是还是一刷就挂,一堆新组合词语,mysql瞬间200%,nginx 503。

    最后只能放上了验证码,机制是搜索10次填写一次验证码。。。至于这个办法是否管用现在还不知道。。。

    有人建议用sphinx,我还没用,貌似文档不太友好,对我这个非技术人员比较头疼。。。

    求专业技术大拿提供解决问题思路。。。

    第 1 条附言  ·  2014-12-23 22:46:59 +08:00
    验证码也挂了。。。。一分钟几十万请求。。。。 无解了。。。。
    第 2 条附言  ·  2014-12-23 22:49:39 +08:00
    进入听天由命状态..
    146 条回复    2014-12-27 02:08:12 +08:00
    1  2  
    hicdn
        101
    hicdn  
       2014-12-24 11:50:58 +08:00
    @Jack 来用加速乐 www.jiasule.com,我们的防 CC 引擎会自动识别并拦截,如果有漏网之鱼,开启 Cookie 防 CC 和验证码防 CC,完美解决
    oott123
        102
    oott123  
       2014-12-24 11:53:18 +08:00 via Android
    @invite 你没有理解我的意思。
    每个 token 5分钟过期的意思是每个 token 在内存里保存五分钟。
    也就是说如果你要填满我的内存,你在五分钟内算出来的 token 个数应当比我的内存还大。
    以一个 32 位 16 进制数为例,内存仅有 4 字节。假设每分钟计算100个token(已经很多了),五分钟才1m不到…
    也许我算错了?
    keefe
        103
    keefe  
       2014-12-24 11:54:08 +08:00
    是subhd.com吧? 前天搜索字幕的时候还不需要输入验证码。

    伪射手也在被攻击

    加油哦!
    bobopu
        104
    bobopu  
       2014-12-24 11:54:24 +08:00 via iPhone
    找sitelock
    invite
        105
    invite  
       2014-12-24 11:56:30 +08:00
    @oott123 如果保存5分钟,也就是5分钟以后,我能重新使用这个token了,对吧?那只要我计算足够多的token,来填满这5分钟就可以了,然后重复使用。
    oott123
        106
    oott123  
       2014-12-24 12:12:48 +08:00 via Android
    @invite 五分钟以后你就没法用了啊…
    算 token 的时候把时间戳插进去不就完事了…

    服务端给出一个 base string = hash ( secret key + timestamp ),再给出前面用的 timestamp
    要求客户端请求时发送 challenge = hash ( base string + random ) 和前面用的 timestamp 以及 random
    要求 challenge 的前 n 位为 0
    Jack
        107
    Jack  
    OP
       2014-12-24 12:22:30 +08:00
    @lolicon 请问这个国内访问速度如何呢。。
    Jack
        108
    Jack  
    OP
       2014-12-24 12:23:44 +08:00
    @hicdn 网站不在国内没有备案,你们能帮忙通过一下吗。。。
    lolicon
        109
    lolicon  
       2014-12-24 12:29:48 +08:00   ❤️ 1
    @Jack 收费版有香港节点 测速http://chdbits.org
    invite
        110
    invite  
       2014-12-24 12:34:11 +08:00   ❤️ 1
    @oott123

    basestring在服务器端存储多长时间?一个IP对应一个basestring?
    Jack
        111
    Jack  
    OP
       2014-12-24 12:34:23 +08:00
    @lolicon 价格略高。。。。对一个小站来说。。。
    lolicon
        112
    lolicon  
       2014-12-24 12:35:51 +08:00
    @Jack 那你就用免费版不就得了
    lolicon
        113
    lolicon  
       2014-12-24 12:38:03 +08:00
    @Jack 还有一家这个incapsula
    oott123
        114
    oott123  
       2014-12-24 12:48:21 +08:00 via Android
    @invite 不用存啊,只校验合法性…
    比如你要对 IP 限定,你把 IP 也加到 base string 的 hash 里面去就是了…
    服务器收到的时候,检查时间戳是否合法;如果合法,把收到的时间戳,IP和secret拼起来一看,和你传回来的 base string 一样不?不一样就丢了。
    oott123
        115
    oott123  
       2014-12-24 12:49:29 +08:00 via Android
    顺便提醒楼主,用 CDN 的话要屏蔽一切不来自 CDN 的访问,否则就没用了。
    invite
        116
    invite  
       2014-12-24 12:58:34 +08:00
    @oott123 不存储?

    那假设一开始对方根据 base string 和 timestamp 计算了一个 :

    challenge = hash ( base string + random ) ,发送了一次: challenge 和 timestamp 和 random

    那服务器怎么比较的?
    oott123
        117
    oott123  
       2014-12-24 13:00:20 +08:00 via Android
    @invite 你看啊,secret key 是固定的对吧,也就是对于唯一确定的 timestamp 有唯一确定的 base string 值对吧,那我还原出来不就好了…
    invite
        118
    invite  
       2014-12-24 13:11:31 +08:00
    @oott123 那客户端多次发送同样的 challenge 和 timestamp 和 random,那服务器比较结果也是对的。肯定得存储一个值,来确保没有重复使用吧。
    oott123
        119
    oott123  
       2014-12-24 13:58:15 +08:00 via Android
    @invite 刚刚不是说了存 token 么…
    102 楼…
    hicdn
        120
    hicdn  
       2014-12-24 14:13:24 +08:00
    @Jack 没有备案只能用香港节点,http://www.jiasule.com/activity/kdjq/
    Jack
        121
    Jack  
    OP
       2014-12-24 14:26:30 +08:00
    @hicdn 客服QQ无反应
    bf68
        122
    bf68  
       2014-12-24 14:35:43 +08:00
    楼主解决了吗?
    Jack
        123
    Jack  
    OP
       2014-12-24 14:38:17 +08:00
    @bf68 静待下一轮攻击ing
    hicdn
        124
    hicdn  
       2014-12-24 14:39:58 +08:00
    @Jack 你发一下qq,我让客服联系你
    nilai
        125
    nilai  
       2014-12-24 14:41:00 +08:00
    @Jack 网站真的有漏洞哦。 在漏洞地方可插入DOS代码哦。
    数据库名:08
    表名:
    articles
    articles_r
    bbs_reply
    bbs_topic
    category
    ding_count
    down
    funfact
    group_a
    group_user
    jr_list
    jr_name
    list
    list_r
    notice
    pic_gallery
    pic_pictures
    pic_relationships
    poster
    reply
    subject
    subject_actor
    subject_ep
    subject_rating
    subject_type
    subject_type_r
    t_talk
    t_tr
    user
    user_add
    user_feed
    user_follow
    user_show
    video
    video_list

    管理员用户名: [email protected]
    管理员密码: sain**ng
    glasslion
        126
    glasslion  
       2014-12-24 14:50:20 +08:00
    @nilai LZ已经被人盯上了,你再公开发这种敏感信息是不是不太合适。而且密码只打了两位码。
    bf68
        127
    bf68  
       2014-12-24 14:53:07 +08:00
    大哥他们为什么攻击你了
    Siglud
        128
    Siglud  
       2014-12-24 14:56:52 +08:00
    限制同一IP单位时间内搜索的次数是最简单粗暴的方法,超过次数一概404即可
    mengskysama
        129
    mengskysama  
       2014-12-24 15:04:37 +08:00
    对同一IP限制搜索次数,现在各大BBS应该都是这样做的
    Jack
        130
    Jack  
    OP
       2014-12-24 15:08:36 +08:00
    @nilai 擦。。虽然不是这个站,不过求QQ号~~~
    Jack
        131
    Jack  
    OP
       2014-12-24 15:09:19 +08:00
    @hicdn 879790 麻烦了~
    invite
        132
    invite  
       2014-12-24 16:48:47 +08:00   ❤️ 1
    @oott123 没理解你这个token是什么意思。这个token是怎么出来的?跟那些hash的是什么关系?
    simapple
        133
    simapple  
       2014-12-24 17:13:13 +08:00
    攻击你也是有代价的,看来是个事
    bjzhush
        134
    bjzhush  
       2014-12-24 17:17:59 +08:00
    用js验证,比如用js执行计算,然后返回server端验证,否则就ban
    或者加一些第三方的验证码,slide unlock的那种
    验证码并不是万能的,尤其是你没做后续的判断,手动识别一次验证码后续就可以一直保持会话来攻击了,保持会话很简单,设定cookie里面session的值就行了
    Jack
        135
    Jack  
    OP
       2014-12-24 17:29:51 +08:00
    8590
    黑客攻击总数
    1782
    WEB黑客攻击数
    6808
    CC攻击
    51
    发现黑客攻击IP

    加速乐开了半小时。。。。
    oott123
        136
    oott123  
       2014-12-24 18:12:32 +08:00 via Android
    @invite Orz…算了…就当我没说过好了…
    MonkLuf
        137
    MonkLuf  
       2014-12-24 19:35:34 +08:00
    没有完全的防护方法,一般就是通过:

    1. 限制单IP访问频率,过多访问封禁IP,过段时间再解封IP: http://blog.csdn.net/zengbin3013/article/details/9313979
    2. 如果IP基数太大那也没办法,在ningx中限制整体请求数和连接数吧:limit_req, limit_conn
    3. 在应用程序里边也可以在访问频率过高的时候需要验证码才能过。
    Roboo
        138
    Roboo  
       2014-12-24 22:55:13 +08:00
    subhd吧
    希望能挺住呀
    zhicheng
        139
    zhicheng  
       2014-12-24 23:03:29 +08:00
    页面上放个 Flash ?
    xiaoz
        140
    xiaoz  
       2014-12-25 00:06:31 +08:00 via Android
    要不试试服务器安全狗?
    diguoemo
        141
    diguoemo  
       2014-12-25 13:38:00 +08:00
    @Jack
    网站现在打开很缓慢 翻墙打开速度不错 不翻墙很慢 四川联通
    Jack
        142
    Jack  
    OP
       2014-12-25 14:51:05 +08:00
    @diguoemo 我这里速度正常。。。dns换成了jiasule.com的香港结点。。。
    不过用了360的CDN,貌似不是很快
    diguoemo
        143
    diguoemo  
       2014-12-25 20:56:55 +08:00
    @Jack 知道了 现在你开了个首页重置还是什么的 打开首页先是白屏然后才会进去网站
    手机打开不了我以为坏了 电脑chrome能开
    jimrok
        144
    jimrok  
       2014-12-25 22:45:27 +08:00
    用redis限制ip的访问量,超过就block这个ip。redis的io性能很好。
    Jack
        145
    Jack  
    OP
       2014-12-25 22:51:18 +08:00
    @diguoemo 不是。。。那是在从360的CDN读东西。。。。360的CDN特别不稳定。。。我已经停用了,你现在应该没有那个问题了
    ourbbs
        146
    ourbbs  
       2014-12-27 02:08:12 +08:00
    访问subhd.com提示:

    12 111: Connection refused
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2830 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 00:27 · PVG 08:27 · LAX 17:27 · JFK 20:27
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.