Linux下如何防止大量IP的并发访问(DDos)
2015-08-04 14:03
645 查看
PDF版本
近期在Drupal大学上看到一个问题
首先,看看iptable解决办法。
对于要解决syn flood以及ddos等推荐用iptable,比较轻量级,也是iptable比较擅长的。
在网上找了一下,iptable的 recent模块可以解决问题,
先看一下recent的参数,
最终测试,下面的代码可以测试通过:
向服务器发送超过10次请求,就会出现connect closed的错误消息,表示成功。
测试用浏览器即可,因为之后10次请求,多的话可以用ab -n xx -c xx。
其次,varnish的解决方案。
varnish的优点是VCL功能强大,之前笔者用varnish做过防止robots抓取的操作,但是vcl如何防止ddos以及同一ip的限制,在网上看到一个解决方案,就是security.vcl,但是感觉vcl写得忒忒多,不知道是不是因为功能太复杂的原因。
具体查看这个VCL
https://github.com/ssm/security.vcl
最后,Nginx和Apache解决方案
Nginx和Apache是最终的web服务器,所以安全层面可以放到这里来做,关于并发访问的模块。
Nginx有一个 ngx_http_limit_conn_module
http://nginx.org/en/docs/http/ngx_http_limit_conn_module.html
Apache的模块,limitipconn
http://dominia.org/djao/limitipconn2.html
后记:
阿里云服务器自带ddos防御机制,所以一般没问题。因此drupal方面,可以使用fast404等模块,减少这种404多带来的cpu压力。
再顺便推荐一下drupal的一个安全模块,Security kit: https://www.drupal.org/project/seckit
声明: 本站所有文章欢迎转载,所有文章未说明,均属于原创,转载均请注明出处。
本文有效链接: http://www.drupal001.com/2014/09/linux-ddos-ip/
版权所有:
Drupal与高性能网站架构 http://www.drupal001.com
近期在Drupal大学上看到一个问题
《如何用varnish缓存或其他手段防止不友好人群模拟不同ip同时访问网站》,
问题的来源是一个无效的请求的导致drupal进程特别消耗服务器资源,导致cpu超高。由于近期也在研究iptable的ddos策略,所以就研究了一下,大概列举一下相关的解决方案。首先,看看iptable解决办法。
对于要解决syn flood以及ddos等推荐用iptable,比较轻量级,也是iptable比较擅长的。
在网上找了一下,iptable的 recent模块可以解决问题,
先看一下recent的参数,
--name #设定列表名称,默认DEFAULT。 --rsource #源地址,此为默认。 --rdest #目的地址 --seconds #指定时间内 --hitcount #命中次数 --set #将地址添加进列表,并更新信息,包含地址加入的时间戳。 --rcheck #检查地址是否在列表,以第一个匹配开始计算时间。 --update #和rcheck类似,以最后一个匹配计算时间。 --remove #在列表里删除相应地址,后跟列表名称及地址。 |
#!/bin/bash IPT=/sbin/iptables # Max connection in seconds SECONDS=100 # Max connections per IP BLOCKCOUNT=10 # .... # .. # default action can be DROP or REJECT DACTION="REJECT" $IPT -A INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --set $IPT -A INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --update --seconds ${SECONDS} --hitcount ${BLOCKCOUNT} -j ${DACTION} # .... # .. |
测试用浏览器即可,因为之后10次请求,多的话可以用ab -n xx -c xx。
其次,varnish的解决方案。
varnish的优点是VCL功能强大,之前笔者用varnish做过防止robots抓取的操作,但是vcl如何防止ddos以及同一ip的限制,在网上看到一个解决方案,就是security.vcl,但是感觉vcl写得忒忒多,不知道是不是因为功能太复杂的原因。
具体查看这个VCL
https://github.com/ssm/security.vcl
最后,Nginx和Apache解决方案
Nginx和Apache是最终的web服务器,所以安全层面可以放到这里来做,关于并发访问的模块。
Nginx有一个 ngx_http_limit_conn_module
http://nginx.org/en/docs/http/ngx_http_limit_conn_module.html
Apache的模块,limitipconn
http://dominia.org/djao/limitipconn2.html
后记:
阿里云服务器自带ddos防御机制,所以一般没问题。因此drupal方面,可以使用fast404等模块,减少这种404多带来的cpu压力。
再顺便推荐一下drupal的一个安全模块,Security kit: https://www.drupal.org/project/seckit
声明: 本站所有文章欢迎转载,所有文章未说明,均属于原创,转载均请注明出处。
本文有效链接: http://www.drupal001.com/2014/09/linux-ddos-ip/
版权所有:
Drupal与高性能网站架构 http://www.drupal001.com
相关文章推荐
- 关于Linux/Unix的Profile文件
- 阿里云centos6.6磁盘扩容
- linux中,安装程序,指定路径./configure --prefix=/ABC
- linux基础之操作系统
- linux下rsync的使用
- linux pthread 多线程操作
- 设置linux时间和时区 php时间等等
- [Ptrace]Linux内存替换(三)运行控制
- 每天一个linux命令
- Linux查找方法
- CentOS6.4上glusterfs安装配置
- Linux命令详解 -- tar
- linux kafka 搭建运行环境
- centos6.6_x64升级firefox
- Linux下的top命令
- Linux操作系统-标准IO库(1)
- linux 内存中buffer 和cache 的区别
- 通过 Linux文件描述符/Windows句柄 来看 C语言里的"FILE"
- 用socket实现Linux和Windows之间的通信
- Centos 下 mysql root 密码重置