资源说明:### Apache防DDoS模块mod_evasive安装与配置详解
#### 一、mod_evasive简介
mod_evasive 是 Apache 服务器的一个扩展模块,主要用于防御分布式拒绝服务(DDoS)攻击。虽然不能完全阻止所有类型的DDoS攻击,但它能够在一定程度上缓解攻击压力,并配合其他安全措施(如iptables或硬件防火墙)提高整体安全性。mod_evasive通过跟踪和分析HTTP请求来识别潜在的恶意行为。
#### 二、mod_evasive工作原理
mod_evasive的工作原理是基于一种高效的哈希表机制,用来存储HTTP请求的信息。通过预先设置的规则,该模块能够检测并阻止来自特定IP地址的异常请求。一旦某个IP地址的请求超过了预设的阈值,mod_evasive就会将这个IP暂时加入黑名单或者执行其他防御操作(例如发送警告邮件、启动防火墙规则等)。
#### 三、mod_evasive安装步骤
1. **下载mod_evasive**
使用`wget`命令从官方网站下载mod_evasive的源代码包。例如:
```bash
wget http://www.zdziarski.com/blog/wp-content/uploads/2010/02/mod_evasive_1.10.1.tar.gz
```
2. **解压并进入目录**
解压下载的文件,并进入解压后的目录:
```bash
tar zxvf mod_evasive_1.10.1.tar.gz
cd mod_evasive/
```
3. **编译并安装模块**
使用`apxs`工具编译并安装模块。注意,`apxs`通常位于`/usr/sbin`目录,如果你自定义编译了Apache,可能需要手动指定路径:
```bash
apxs -i -a -c mod_evasive20.c
```
其中,`-i`表示安装模块,`-a`表示添加模块,`-c`表示编译指定的C源文件。
4. **检查Apache配置**
编译安装完成后,会自动向Apache配置文件中添加一行以加载mod_evasive模块。对于Apache 2.x版本,这通常会出现在配置文件中的某一行:
```apache
LoadModule evasive20_module lib/httpd/modules/mod_evasive20.so
```
#### 四、配置mod_evasive
1. **编辑Apache配置文件**
打开Apache的主配置文件`httpd.conf`,添加以下配置段:
```apache
DOSHashTableSize 3097 # 哈希表大小
DOSPageCount 2 # 单位时间内同一IP请求同一网页次数限制
DOSSiteCount 10 # 单位时间内同一IP请求网站次数限制
DOSPageInterval 1 # 网页存取间隔
DOSSiteInterval 1 # 网站存取间隔
DOSBlockingPeriod 10 # 限制访问时间
DOSEmailNotify # 疑似攻击时邮件通知
DOSSystemCommand "su - novps -c iptables -I INPUT -s %s --dport 80 -j DROP" # 疑似攻击时用防火墙限制IP访问80端口
DOSLogDir "/var/log/" # 日志目录
DOSWhiteList 127.0.0.1 # 添加白名单
```
2. **创建单独配置文件**
如果不确定将这些配置放入何处,可以创建一个单独的配置文件(例如`/etc/mod_evasive.conf`),并将上述配置段放入其中。
3. **包含配置文件**
在`httpd.conf`文件的最后一行加入以下行,以包含刚才创建的配置文件:
```apache
Include /etc/mod_evasive.conf
```
4. **重启Apache服务**
修改完成后,重启Apache服务以使配置生效:
```bash
/etc/init.d/httpd restart
```
#### 五、测试mod_evasive
完成配置后,可以通过以下方式测试mod_evasive的有效性:
1. **使用Apache自带的ab工具**
使用`ab`工具发送大量请求至目标站点,观察mod_evasive是否按预期工作。例如:
```bash
/usr/sbin/ab -n 1000 -c 50 http://www.example.com:80/
```
2. **使用mod_evasive提供的测试脚本**
运行mod_evasive解压包中的`test.pl`脚本来测试模块。修改脚本中的IP地址为测试目标地址,然后运行:
```bash
perl test.pl
```
#### 六、配置参数详解
1. **DOSHashTableSize**
定义哈希表的大小。哈希表用于存储HTTP请求的信息。较大的哈希表可以处理更多的并发连接,但也会占用更多内存。例如:
```apache
DOSHashTableSize 3097
```
这里的值3097可以根据实际需求进行调整。
2. **DOSPageCount**
设置在规定时间内从同一IP地址请求相同页面的最大次数。例如:
```apache
DOSPageCount 2
```
表示同一IP在单位时间内最多只能请求2次相同的页面。
3. **DOSSiteCount**
设置在规定时间内从同一IP地址请求整个网站的最大次数。例如:
```apache
DOSSiteCount 10
```
表示同一IP在单位时间内最多只能请求10次网站的不同页面。
4. **DOSPageInterval 和 DOSSiteInterval**
设置两次请求之间的最小间隔时间。这两个参数分别针对单个页面和整个网站。例如:
```apache
DOSPageInterval 1
DOSSiteInterval 1
```
表示单个页面和整个网站的请求之间至少要有1秒的间隔。
5. **DOSBlockingPeriod**
当检测到潜在攻击时,IP地址被禁止访问的时间长度。例如:
```apache
DOSBlockingPeriod 10
```
表示被检测为潜在攻击者的IP将在10秒内无法访问。
6. **DOSEmailNotify**
设置当检测到疑似攻击时发送警告邮件的功能。例如:
```apache
DOSEmailNotify
```
可以在此基础上进一步配置邮件通知的具体细节。
7. **DOSSystemCommand**
设置当检测到疑似攻击时触发的系统命令。例如:
```apache
DOSSystemCommand "su - novps -c iptables -I INPUT -s %s --dport 80 -j DROP"
```
这条命令会在检测到攻击时,通过iptables防火墙规则阻止该IP访问80端口。
8. **DOSLogDir**
设置日志文件的保存位置。例如:
```apache
DOSLogDir "/var/log/"
```
所有与mod_evasive相关的日志都会记录在这个目录下的文件中。
9. **DOSWhiteList**
设置白名单,即不受mod_evasive监控的IP地址列表。例如:
```apache
DOSWhiteList 127.0.0.1
```
这里指定了本地回环地址作为白名单。
通过以上详细的步骤和解释,您可以有效地安装和配置mod_evasive模块,从而为您的Apache服务器提供一层额外的安全保护。同时,合理地调整各个参数可以帮助您更准确地检测和应对潜在的DDoS攻击威胁。
本源码包内暂不包含可直接显示的源代码文件,请下载源码包。