如何为 Apache DDoS 保护配置 mod_evasive

mod_evasive是一个Apache模块,用于防止暴力和DoS攻击,通过限制并发请求来保护服务器。配置包括设定客户端的并发请求数限制和阻止时间。当超过限制时,会发送403错误并可选地发送电子邮件通知。白名单功能允许特定IP不受限制。测试可通过大量请求检查模块功能。确保适当配置以避免影响正常流量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述
mod_evasive 是一个 Apache 模块,可帮助保护您的服务器免受暴力和拒绝服务攻击。设置 mod_evasive 为您提供了一个安全网,可以在恶意行为者开始降低服务器性能之前将其捕获。

该模块带有多个配置参数,可让您定义客户端在设定的时间范围内可以发出的并发请求数。超出限制后,进一步的请求将被阻止一段时间。

安装 mod_evasive

安装步骤因您的操作系统发行版和 Apache 版本而异。对于基于 Debian 的系统上最流行的 Apache 2.4 组合,请使用以下步骤。项目的存储库中还提供了从源代码构建的说明。

apt update
apt install libapache2-mod-evasive

安装通过apt将自动启用该模块。

您可以使用该apachectl实用程序进行检查:

apachectl -M | grep evasive

如果模块处于活动状态,您应该会看到显示的模块名称。

配置阻止设置

mod_evasive 配置文件通常可以在/etc/apache2/mods-enabled/evasive.conf. 它使用与其他 Apache 配置文件相同的格式。可以在mod_evasive文档中找到完整的参考。

这是具有多个自定义项的示例配置文件:

<IfModule mod_evasive20.c>
    DOSPageCount 5
    DOSSiteCount 10

    DOSPageInterval 1
    DOSSiteInterval 2

    DOSBlockingPeriod 300

    DOSEmailNotify user@example.com
</IfModule>

mod_evasive 区分页面请求和站点请求。您可以相互独立地设置这两个阻塞因子。此示例将阻止在 1 秒间隔内五次请求相同 URI 的客户端。对于在两秒间隔内从单个站点请求 10 个以上 URI 的客户端,将另外施加一个块。

当超过任一限制时,客户端将被阻止在五分钟(300 秒)内发出更多请求。mod_evasive 将发送电子邮件user@example.com通知 IP 地址已被阻止。

mod_evasive 还支持在达到限制时运行任意系统命令。这可用于将该工具与您自己的应用程序或防火墙集成,以便您可以在数据库中记录块。设置DOSSystemCommand设置,%s用于表示被阻止的IP地址:

DOSSystemCommand /app/blacklisted_ip.php --ip=%s

将已知 IP 列入白名单

mod_evasive 支持已知 IP 的白名单以帮助开发和测试。开发人员有时会在服务器上工作时创建大量请求,无论是有意还是无意。

使用该DOSWhiteList设置指定要忽略的 IP 地址范围。这些地址中的任何一个都不会受到限制。

DOSWhiteList 127.0.0.1
DOSWhiteList 192.168.0.*

它是如何工作的?

mod_evasive 通过在临时黑名单中维护 IP 地址和 URI 的哈希表来发挥作用。IP 地址和 URI 被散列以创建一个密钥,该密钥可用于检查客户端之前是否请求过相同的页面。

当 URI 或站点以超出您允许的频率出现在 IP 的哈希表中时,就会发生阻止。这会导致将403状态代码发送回客户端。状态是客户端将收到的唯一响应,最大限度地减少处理被认为是虚假或恶意的请求所需的服务器资源。

一旦达到上限,客户端必须等待指定的DOSBlockingPeriod时间才能发出另一个成功的请求。在等待期间再次尝试会导致施加更长的块。其他 IP 地址将继续像往常一样被接纳,不应因拒绝服务尝试而中断。

该模块可能会导致非常活跃的服务器的性能下降。它需要记录每个请求并检查IP是否已被阻止,或需要被阻止。具有足够内存的繁忙服务器应该增加DOSHashTableSize设置以允许更大的内存哈希表。这减少了根据其他最近的请求查找传入 IP 所需的时间。

DOSHashTableSize 32768

测试您的安装

测试 mod_evasive 的最佳方法是发起大量请求以检查您的服务器如何响应。正确启用 mod_evasive 后,您应该很快就会看到 403 和电子邮件警报(如果已配置)。

该ab命令行工具可以用来发起连接集体:

ab -n 1000 -c 50 http://...

您应该调整-n和-c参数以适合您的 mod_evasive 配置和预期的服务器影响:

  • -n – 要发出的请求总数。
  • -c – 要打开的并发连接数。

上面的示例将以 50 个为一组发送 1,000 个请求。

ab是一个强大的工具,可以发起真正的拒绝服务攻击。在发送请求之前,请加倍确保您指定了正确的服务器地址!

概括

mod_evasive 是一个简单但有效的模块,用于防止暴力攻击影响服务器的运行。您可以配置适用于每个尝试连接的客户端的每页和每站点限制。如果客户端最终超过限制,他们将收到 403 并且必须让步到临时阻止期。

作为管理员,您可以选择在实施新阻止时接收电子邮件警报。这可以让您了解潜在的攻击,并让您监控误报。您确实需要在服务器上有一个功能正常的电子邮件堆栈 - mod_evasive 使用系统邮件传输代理发送。

最后,只要 IP 被列入黑名单,就可以通过运行系统命令将 mod_evasive 与应用程序的其他部分集成。此功能可用于标记数据库用户、在第三方监控工具中创建警报,或将块中继到您的其他服务器以保护基础架构的其他部分。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mikes zhang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值