Apache 防DDOS攻击 使用mod_rpaf模块 mod_evasive模块

作者:沈小然    编写时间:2013-10-22

使用mod_rpaf模块解决代理后端的Apache获取到互联网真实的IP(默认Apache获取的是代理服务器的IP

1.1  mod_rpaf介绍

mod_rpaf模块可以让躲在代理服务器后面的Apache服务器获取到代理外面的互联网真实访问IP地址(默认Apache获得的是来自代理服务器的IP),然后再利用mod_evasive模块自动判断连接频率,把可疑ip阻挡掉,或配合ipables将判断的ip地址添加到黑名单。

官网下载:http://www.stderr.net/apache/rpaf/

1.2  mod_rpaf安装

官网地址:http://www.stderr.net/apache/rpaf/

当前最新版本是:mod_rpaf-0.6.tar.gz

1.       安装模块

wget http://stderr.net/apache/rpaf/download/mod_rpaf-0.6.tar.gz

tar xvfz mod_rpaf-0.6.tar.gz

cd mod_rpaf-0.6

/usr/local/apache/bin/apxs -i -c -n mod_rpaf-2.0.so mod_rpaf-2.0.c

2.       配置apache

LoadModule rpaf_module modules/mod_rpaf-2.0.so

#Include conf/extra/mod_rpaf.conf

<IfModule mod_rpaf-2.0.c>

RPAFenable On

RPAFproxy_ips 183.136.133.* 183.60.211.* 220.181.55.* 101.226.4.* 180.153.235.* 122.143.15.* 27.221.20.* 202.102.85.* 61.160.224.* 112.25.60.* 182.140.227.*

RPAFsethostname On

RPAFheader X-Forwarded-For

</IfModule>

注意:RPAFproxy_ips 指填写代理服务器的ip地址,不是Apache服务自身的地址。网段可以写成类似183.136.133.*这种格式。与mod_evasive模块的网段写法类似。

# 修改apache的日志输出格式,如下

LogFormat "\"%{X-Forwarded-For}i\" %h %l %u %t \"%r\" %>s %b %{deviceId}i \"%{Referer}i\" \"%{User-Agent}i\" " combined

3.       重启apache使之生效

使用mod_evasive模块自动阻止DDOS攻击

2.1  mod_evasive介绍:

mod_evasive Apachehttpd)服务器防DDOS攻击的一个模块。对于WEB服务器来说,是目前比较好的一个防护DDOS攻击的扩展模块。虽然并不能完全防御 DDOS攻击,但在一定条件下,还是起到缓服Apachehttpd)服务器的攻击压力,可以配合iptables命令实现自动判断攻击ip,自动添加到iptables阻止列表中。实践证明效果明显有效。

官方网站:http://www.zdziarski.com

 

2.2  mod_evasive安装

阅读README文件,里面有安装和配置的方法,支持Apache 1.3 and 2.0

1)  安装模块

$APACHE_ROOT/bin/apxs -i -a -c mod_evasive20.c

安装完成后,modules/mod_evasive20.so目录下将增加一个mod_evasive20.so的文件。

注:apxs 命令用于编译模块工具;如果安装的apache不是默认的rpm包,apxs命令位于您安装的apache安装路径bin目录下。

2)  配置httpd.conf文件

LoadModule evasive20_module modules/mod_evasive20.so

<IfModule mod_evasive20.c>

    DOSHashTableSize    5120

    DOSPageCount        3

    DOSSiteCount        50

    DOSPageInterval     1

    DOSSiteInterval     1

    DOSBlockingPeriod   10

    DOSLogDir "/tmp"

#   DOSSystemCommand    "su - someuser -c '/sbin/... %s ...'"

DOSSystemCommand    "sudo /sbin/iptables -A INPUT -s %s -p tcp --dport 80 -j DROP"

DOSEmailNotify shenxiaoran@7500.com.cn

    DOSWhiteList 127.0.0.1

    DOSWhiteList 192.168.123.*

</IfModule>

说明:这里使用sudo 命令执行iptables实现自动把识别的攻击ip添加到防火墙内策略。

3)  重启apache使模块生效

参数说明:

<IfModule mod_evasive20.c>

DOSHashTableSize 3097

#记录和存放黑名单表大小,如果服务器访问量很大,可以加大该值,增加这个值会消耗更多的内存空间

   

DOSPageCount 5

#同一个页面在同一时间内可以被同一个用户访问的次数,超过该数字就会被列为攻击,同一时间的数值可以在DosPageInterval参数中设置.

 

DOSSiteCount 100

#同一个用户在同一个网站内可以同时打开的访问数,同一个时间的数值在DOSSiteInterval中设置。

 

DOSPageInterval 1

#设置DOSPageCount中时间长度标准,默认值为1

 

DOSSiteInterval 1

设置DOSSiteCount中时间长度标准,默认值为1

 

DOSBlockingPeriod 10

#被封时间间隔秒,这中间会收到 403 (Forbidden) 的返回,默认10秒。

 

# 下面3项可选添加,主要用来邮件提醒;自定义shell命令;记录日志。

DOSEmailNotify victorman45@sohu.com

#设置受到攻击时接收攻击信息提示的邮箱地址。

DOSSystemCommand    "su - root -c '/opt/foundir/csmail/mta/bin/sendmail %s < /tmp/ddos_warnning.eml'"

#用来调用自定义shell脚本来执行发信报警或其它动作。%s是引用的地址变量

DOSLogDir "/var/log/mod_evasive"

#攻击日志存放目录,注意这个目录的权限,是运行apache程序的用户。

 

DOSWhitelist    127.0.0.*

DOSWhitelist    10.1.6.51

#添加白名单,加多个就添加多行,写一行不生效。

</IfModule>

 

2.3  mod_evasive测试

1. 查看 /tmp目录下,发现有dos-xxx.xxx.xxx.xxx文件说明模块生效了。

-rw-r--r-- 1 daemon  daemon      6 Oct 24 11:55 dos-110.167.181.201

-rw-r--r-- 1 daemon  daemon      6 Oct 24 13:51 dos-110.176.79.135

-rw-r--r-- 1 daemon  daemon      6 Oct 24 13:31 dos-110.211.157.21

-rw-r--r-- 1 daemon  daemon      6 Oct 24 12:12 dos-110.80.111.183

-rw-r--r-- 1 daemon  daemon      6 Oct 24 13:26 dos-110.89.10.25

-rw-r--r-- 1 daemon  daemon      6 Oct 24 13:27 dos-110.90.41.56

-rw-r--r-- 1 daemon  daemon      6 Oct 24 14:32 dos-111.174.167.183

-rw-r--r-- 1 daemon  daemon      6 Oct 24 11:52 dos-111.177.13.104

-rw-r--r-- 1 daemon  daemon      6 Oct 24 11:36 dos-112.224.21.14

同时查看iptables列表,观察是否成功添加了策略。

# iptables –L

2. mod_evasive_1.10.1.tar.gz解压目录下面有个测试脚本,test.pl是用perl写的,如果你看到下面的截图,就表示该模块安装成功。


如果你使用了DOSLogDir "/var/log/mod_evasive"参数,该目录的属主要是nobody:nobody,发生攻击时,将生成一个dos-127.0.0.1文件。如果没指定日志,默认在/tmp目录下。

还可以直接用浏览器测试:

访问apache,不断刷新,达到一定的阀值就会出现下面提示:

Forbidden

You don't have permission to access / on this server.

转载于:https://my.oschina.net/lionel45/blog/172624

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值