跳转到主内容
趣航编程网 - 趣学编程,启航技术之路!

怎么利用mod_evasive模块在Apache层有效抵御CC攻击与应用层DoS

mod_evasive对单IP、HTTP/1.x轻量级CC和应用层DoS有效,需合理配置双阈值(DOSPageCount/DOSPageInterval、DOSSiteCount/DOSSiteInterval)、设DOSBlockingPeriod为300–600秒、加白名单,并通过ab压测+日志验证拦截生效;它不替代防火墙,仅返回403,对分布式、混淆、HTTP/2攻击无效。

mod_evasive 对轻量级 CC 攻击和应用层 DoS 有明确效果,但前提是配置合理、验证到位、不孤立使用。它不是防火墙替代品,而是 Apache 内部的“实时请求节流器”,靠内存哈希表毫秒级响应,适合中小站点快速布防。

确认模块已真正启用并运行安装不等于生效。常见静默失效原因包括配置块被注释、日志目录无写权限、DOSBlockingPeriod 设为 0 或配置文件未被主配置 Include。

Ubuntu/Debian:执行sudo a2enmod evasive后重启服务(sudo systemctl restartapache2)

CentOS/RHEL:检查/etc/httpd/conf.d/mod_evasive.conf是否存在且未被注释,确认块已启用验证方式:用ab -n 100 -c 30 http://localhost/模拟并发,立即查日志(tail -n 20 /var/log/apache2/mod_evasive.log或/var/log/httpd/mod_evasive.log),应看到Blacklisted for exceeding request limits记录核心参数调优:双阈值 + 封禁时长关键不在“严”,而在“准”。需兼顾真实用户行为与攻击特征:Apache 2.4.62 PHP中文网提供Apache 2.4.62 官方 tar.gz 源码包下载,通过源码编译安装,开发者能够灵活定制模块、优化性能并精准控制安装路径,满足多样化的业务需求。

下载DOSPageCount 3–10 + DOSPageInterval 1:防单页高频刷新(如登录爆破)。设太低会误杀 SPA 首屏资源加载;静态页(/favicon.ico)建议配合白名单或忽略DOSSiteCount 40–60 + DOSSiteInterval 1:控整站总并发。50 是较稳妥起点;若含 AJAX 轮询,可延长 DOSSiteInterval 至 2–5 秒,改用累计计数DOSBlockingPeriod 300–600(5–10 分钟):太短(如 60 秒)易被绕过;太长(如 3600 秒)可能误伤临时网络抖动用户避免误封与增强联动默认只返回 403,不主动阻断连接,所以封禁后仍能发请求——这是正常现象,不代表失效。

务必加DOSWhitelist:至少包含

127.0.0.1

和内网段(如

192.168.1.*

),对搜索引擎爬虫(User-Agent 含 Googlebot/Bingbot)跳过限制日志路径(DOSLogDir)需确保 Apache 运行用户(如 www-data 或 apache)有写权限,否则拦截不记录

可选增强:

DOSBlockingExec "iptables -I INPUT -s %s -j DROP"实现系统级封禁,但需注意 iptables 规则持久化问题认清能力边界,不依赖单一手段mod_evasive 仅对单 IP、简单节奏、HTTP/1.x 的轻量 CC 有效。面对以下场景即失效:分布式多 IP 攻击(需结合 CDN 或云 WAF)

请求头混淆(如随机 User-Agent、Referer)、慢速攻击(Slowloris)

HTTP/2 多路复用导致单连接高频请求(模块无法按流区分)

大量 404/400 扫描类流量(建议搭配 mod_security + CRS 的 REQUEST-912-DOS-PROTECTION 规则)

相关文章