在两个月前就发过《防范小量攻击》和圣诞礼物《防范 CC 脚本升级版》,但是效果似乎不太明显

get-rid-of-malicious-access

要从根本上防止的话还要看你的硬防,但是如果说缓解的话、前面两篇加上今天的这一篇应该很完善了。

首先回顾一下上两次的内容:

1、自动 ban 恶意 IP 的脚本
2、利用软件:ddos-Deflat
3、适用于 WordPress 的脚本
4、一些高防的 CDN
5、脚本升级版,自动化安装

今天讲的是基于 Nginx 的缓解攻击策略,就是限制并发和 UA 访问。


一、限制单 IP 访问者并发数量:

修改 nginx.conf,在其中合适的地方加入如下内容:

limit_conn_zone $binary_remote_addr zone=perip:10m;

如下图:

get-rid-of-malicious-access001

然后修改你的站点配置,在其中 server 段加入如下内容:

limit_conn perip 10;
limit_rate_after 1m;
limit_rate 300k;

简单来说就是加到你 listen 80; 这句的下面,这里的 10 就是单 IP 的并发数量,1M 和 300K 是在 1M 之前不限速、1M 以上就显示每个并发 100K 。然后检查一下 nginx 配置是否有问题:

/usr/local/nginx/sbin/nginx -t

如果如下图就说明没问题:

get-rid-of-malicious-access002

如果有问题就自行检查一下,没问题就重载 nginx 即可:

/etc/init.d/nginx reload

二、限制个别 UA 进行访问:

这个相对简单,直接修改你的站点配置、在其中加入如下:

if ($request_method !~ ^(GET|HEAD|POST)$ ) {
	return 403;
}

if ($http_user_agent ~* (Bench|bench|Apache|apache) ) {
	return 444;
}

这里屏蔽了 GET、HEAD、POST 等请求方式,同时禁止部分 UA 访问(返回444),更多的 UA 可以自己添加到如上后重载 nginx 即可生效使用、你可以顺便测试自己是否成功 。。


小结

配合前几篇文章来说,可以有效阻止多并发的而已访问。但是还是只能防住一些压力测试党 ...

目前有19条回应
Comment
Trackback
Loading ....
  • hm 回应于2014/02/20 10:04 回复TA

    good 收藏

  • 盒子 回应于2014/02/13 12:50 回复TA

    我是来水经验的! 😡

  • 老左博客 回应于2014/02/12 20:16 回复TA

    这个有用,回头我也测试。

  • voncing 回应于2014/02/09 00:19 回复TA

    最近在玩vps,学习学习

  • 鄭仁翔 回应于2014/02/08 15:50 回复TA

    好像來太晚了 ➡

  • peascloud 回应于2014/02/08 12:37 回复TA

    要真 D 什么都防不了。

    • Tomas 回应于2014/02/10 18:44 回复TA

      集群硬防 。。。

  • Dzing 回应于2014/02/08 10:28 回复TA

    CC也烦恼,呵呵

    • Tomas 回应于2014/02/08 11:51 回复TA

      唉,主要是防那些压力测试的 。。。现在很多新手喜欢把压力测试软件当做是 DDOS / CC 软件,虽然很天真但是会让很多人很烦 。。

  • 神父 回应于2014/02/08 09:38 回复TA

    欢迎来搞吗

    • Tomas 回应于2014/02/08 11:40 回复TA

      @神父: 😎 ,你那无法获取真实 IP 的,真有人刷的话你就糟糕了 。。

      • 王琪亮 回应于2014/02/08 12:10 回复TA

        @Tomas: 欢迎来搞,我连IPTABLES都没开

        • Tomas 回应于2014/02/08 12:12 回复TA

          @王琪亮: 😎 iPtables 也不会自动防御的, 🙁 况且真的来一场攻击的话 ds 就封你机子了

  • Dahai 回应于2014/02/07 22:54 回复TA

    学习了,虽然完全看不懂

    • Tomas 回应于2014/02/08 11:38 回复TA

      估计你现在用的不是 Nginx 所以不太清楚我讲的是什么,不过 Nginx 真的是一款不错的服务器软件呢

  • ivmm 回应于2014/02/07 21:48 回复TA

    limit_conn_zone 不是要添加模块才能用的么?现在默认支持了?

    看了一下那还不如用senginx呢,还能轻微防御ddos

    • Tomas 回应于2014/02/07 21:51 回复TA

      默认就能用 。。好像是 nginx 1.18 之后就默认可以,网上有的教程都好老、逛了逛 vpser 的论坛才发现的 。。

  • 本篇文章没有Trackback
你目前的身份是游客,请输入昵称和电邮!