如何使用mod_evasive在Apache上防御DoS和DDoS?

2021年11月22日18:02:57 发表评论 784 次浏览

mod_evasive防御DoS和DDoS教程介绍

mod_evasive 模块是一个 Apache Web 服务模块,可帮助你的服务器在发生攻击时保持运行。一种常见 类型的网络攻击以拒绝服务 (DoS)、分布式拒绝服务 (DDoS) 或试图压倒你的安全的蛮力的形式出现。 这些攻击的本质是使用多台不同的计算机对你的服务器发出重复请求。这会导致服务器耗尽处理能力、内存、网络带宽,并变得无响应。 Apache mod_evasive如何防御DoS和DDoS?本指南将引导你配置和安装 mod_evasive 以防止 DoS 和 DDoS。 先决条件
  • 安装和配置的 LAMP(Linux、Apache、MySQL、PHP)堆栈
  • 使用sudo或 root 权限访问用户帐户
  • 功能正常的邮件服务器(用于电子邮件警报)

Apache mod_evasive 如何工作

mod_evasive阿帕奇工具的工作原理是监控的服务器请求。该工具还监视来自一个 IP 的可疑活动,例如:
  • 一秒钟内对同一页面的多个请求。
  • 每秒超过 50 个并发请求。
  • 在 IP 暂时列入黑名单时发出的请求。
如果发生任何这些事情,模块会发送403 错误。默认情况下,这还包括黑名单上的 10 秒等待期。如果发出请求的 IP 地址在该 10 秒窗口内再次尝试,则等待时间会增加。 mod_evasive可帮助你通过网络检测和管理抵御此类攻击。

安装 mod_evasive Apache 实用程序的步骤

步骤 1:安装 Apache Web 服务器实用程序

如何使用Apache mod_evasive防御DoS和DDoS?在安装该实用程序之前,请使用适用于你的 Linux 发行版的命令更新包存储库: Debian / Ubuntu
sudo apt update
RedHatCentOS
sudo yum update
允许系统刷新和更新你的软件列表。 然后,安装一个辅助工具: Debian / Ubuntu
sudo apt install apache2-utils
如何使用mod_evasive在Apache上防御DoS和DDoS?
RedHat/CentOS
sudo yum install httpd-devel
输出的最后一部分如下所示:
如何使用mod_evasive在Apache上防御DoS和DDoS?
安装mod_evasive需要此实用程序。

第 2 步:安装 mod_evasive

Debian / Ubuntu

Apache mod_evasive如何防御DoS和DDoS?要在 Debian / Ubuntu 上安装mod_evasive模块,请输入以下内容:
sudo apt install libapache2-mod-evasive
如何使用mod_evasive在Apache上防御DoS和DDoS?
当你收到提示时,选择“确定”并选择你的配置。
如何使用mod_evasive在Apache上防御DoS和DDoS?
如果不确定,请选择 无配置仅本地。

CentOS / RedHat

mod_evasive防御DoS和DDoS教程 - 在 RedHat / CentOS 上安装 mod_evasive 模块: 添加 EPEL 存储库:
sudo yum install epel-release
如何使用mod_evasive在Apache上防御DoS和DDoS?
然后,输入:
sudo yum install mod_evasive
允许该过程完成。

第 3 步:配置 mod_evasive

如何使用Apache mod_evasive防御DoS和DDoS?与大多数 Linux 软件包一样,mod_evasive由配置文件控制。作为防止 DDoS 攻击的第一步,在配置文件中进行以下更改: 1. 使用你选择的文本编辑器和以下命令: Debian / Ubuntu
sudo nano /etc/apache2/mods-enabled/evasive.conf
RedHatCentOS
sudo nano /etc/httpd/conf.d/mod_evasive.conf
2. 找到以下条目:
#DOSEmailNotify        you@yourdomain.com
如何使用mod_evasive在Apache上防御DoS和DDoS?
删除#标志,然后替换you@yourdomain.com为你的实际电子邮件地址。使用你定期查看的电子邮件——这是该工具发送警报的地方。 3. 去掉以下条目的注释标签,日志文件如下所示:
DOSHashTableSize 3097

DOSPageCount 2

DOSSiteCount 50

DOSPageInterval 1

DOSSiteInterval 1

DOSBlockingPeriod 10

DOSEmailNotify mail@yourdomain.com

DOSLogDir "/var/log/apache2/"
4. 保存文件并退出。通过输入以下内容重新加载 Apache 服务: Debian / Ubuntu
sudo systemctl reload apache2
RedHatCentOS
sudo systemctl restart httpd.service

测试 mod_evasive

Apache mod_evasive如何防御DoS和DDoS?现在,让我们验证模块是否正常工作。 在本例中,使用 test.pl脚本来测试 mod_evasive。 该脚本位于:/usr/share/doc/libapache2-mod-evasive/examples/test.pl。 使用以下命令运行脚本:
perl /usr/share/doc/libapache2-mod-evasive/examples/test.pl
输出应返回此消息:
如何使用mod_evasive在Apache上防御DoS和DDoS?
mod_evasive防御DoS和DDoS教程

参数和设置

如何使用Apache mod_evasive防御DoS和DDoS?你可以配置许多 mod_evasive 参数:
  • DOSSystemCommand首先,你可能已经注意到该选项作为注释被禁用。此命令允许你指定当 IP 地址添加到黑名单时要运行的系统命令。你可以使用它来启动将 IP 地址添加到防火墙或 IP 过滤器的命令。
  • DOSHashTableSize为繁忙的 Web 服务器增加此项。此配置为运行查找操作分配空间。增加大小会以内存为代价提高速度。
  • DOSPageCount触发黑名单的单个页面的请求数。该值设置为 2,该值较低(且具有攻击性)– 增加此值以减少误报。
  • DOSSiteCount同一个IP地址对同一个站点的请求总数。默认情况下,它设置为 50。你可以增加到 100 以减少误报。
  • DOSPageInterval:的秒数DOSPageCount。默认情况下,这设置为 1 秒。这意味着如果你不更改它,1 秒内请求 2 个页面将暂时将一个 IP 地址列入黑名单。
  • DOSSiteInterval:与 类似DOSPageInterval,此选项指定DOSSiteCount监视的秒数。默认情况下,这设置为 1 秒。这意味着如果一个IP地址在一秒内请求同一个网站上的50个资源,它将被暂时列入黑名单。
  • DOSBlockingPeriod IP 地址在黑名单上的停留时间。默认设置为 10 秒,你可以将其更改为你喜欢的任何值。增加此值可使被阻止的 IP 地址在更长的时间内保持超时。
  • DOSLogDir默认情况下,这设置为将日志写入 /var/log/mod_evasive。稍后可以查看这些日志以评估客户端行为。
你可以创建一个新目录来保存这些apache 访问日志——确保将所有者更改为 Apache,然后更新此条目中的位置:
sudo mkdir /var/log/apache/mod_evasive
sudo chown -R apache:apache /var/log/apache/mod_evasive
sudo nano /etc/apache2/mods-enabled/evasive.conf
DOSLogDir "/var/log/apache/mod_evasive"
将 IP 地址列入白名单:默认情况下,该选项不包含在evasive.conf 文件中。 再次打开文件进行编辑,然后添加以下行:
DOSWhitelist 192.168.0.13

DOSWhitelist 192.168.0.*
将 IP 地址替换为你要列入白名单的 IP 地址。此外,你应该每行只列出一个条目。这通常用于与你的网站交换大量数据的受信任客户端。 该工具擅长检测机器人和脚本。如果有你想要允许的机器人或脚本,你可以将它们列入白名单,以防止这些机器人和脚本触发黑名单操作。 确保保存文件并退出。然后,在测试任何这些选项之前重新加载你的 Apache 服务。

mod_evasive防御DoS和DDoS教程结论

Apache mod_evasive如何防御DoS和DDoS?现在你知道如何在 Apache 上安装和配置 mod_evasive。 凭借其配置的简单性和有效性,它已成为保护 Apache 和 Linux 系统的最受欢迎的工具。有关更多信息和手册,请参阅开发人员的GitHub 文档页面。
木子山

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: