测试 mod_evasive

检查是否已加载 mod_evasive 模块。

[root@appserver ~]# httpd -M | grep evasive
Syntax OK 
evasive20_module (shared) 
[root@appserver ~]#

使用 mod_evasive 提供的 Perl 脚本生成流量以测试配置。

[root@appserver html]# /usr/share/doc/mod_evasive-1.10.1/test.pl
HTTP/1.1 200 OK 
HTTP/1.1 200 OK 
HTTP/1.1 200 OK 
HTTP/1.1 403 Forbidden 
HTTP/1.1 403 Forbidden

从输出中,很明显 mod_evasive 正在阻止DDOS连接。
我们可以根据服务器流量,使用 mod_evasive 参数对其进行优化。

Apache 如何避免DDOS 攻击

Web服务器如何应对DDOS 攻击?

我们可以使用 Apache HTTP 服务器的模块mod_evasive,它用于保护 Apache HTTP 服务器免受 DoS(拒绝服务)、DDoS(分布式拒绝服务)和蛮力攻击。

该模块通过维护 IP 地址和 URI 的内部动态表以及在以下任何情况下拒绝任何单个 IP 地址来工作:

  • 每秒请求同一页面超过 n 次
  • 每秒对同一个子进程发出 n 个以上的并发请求
  • 在暂时列入黑名单时提出任何请求

在本文中,我们将介绍如何为 Apache HTTP Server 安装和配置 mod_evasive 以防御 DoS、DDoS 和蛮力攻击。

欢迎 on it road

apache 安装mod_evasive

mod_evasive 在 EPEL (Extra Packages for Enterprise Linux) 存储库上可用,因此我们应该首先将 EPEL 存储库添加到 yum 。

[root@appserver ~]# wget http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

使用 yum 安装 mod_evasive。

[root@appserver ~]# yum install mod_evasive

为 mod_evasive 创建日志目录

[root@appserver ~]# mkdir -p /var/log/mod_evasive 
[root@appserver ~]# chown -R apache:apache /var/log/mod_evasive

mod_evasive 不需要任何另外的配置,它在默认设置下工作正常。
但是,根据我们服务器的流量自定义 /etc/httpd/conf.d/mod_evasive.conf 中的以下参数是一个很好的做法。

DOSEmailNotify      jackli_mansoor@hotmail.com 
DOSPageInterval     1 
DOSPageCount        2 
DOSSiteInterval     1 
DOSSiteCount        50 
DOSBlockingPeriod   60 
DOSLogDir           "/var/log/mod_evasive"

重新启动 httpd 服务使更改生效。

[root@appserver mod_evasive]# service httpd restart
Stopping httpd:                                            [  OK  ] 
Starting httpd:                                            [  OK  ] 
[root@appserver mod_evasive]#

配置 mod_evasive

检查 mod_evasive 是否已经安装。

[root@appserver ~]# httpd -M | grep evasive
Syntax OK
日期:2020-09-17 00:16:34 来源:oir作者:oir