mod_evasive能有效拦截高频单ip集中路径的自动扫描,需配置dospagecount 2/dospageinterval 1防爆破、dossitecount 30/dossiteinterval 2控整站流量、dosblockingperiod 600秒封禁,并配合白名单与日志验证;对分布式、慢速、伪造头或经cdn的扫描无效。

mod_evasive 能有效拦截多数自动扫描行为,前提是扫描具备“高频、单 IP、集中路径”的特征——比如目录爆破(/admin、/wp-login.php)、CMS指纹探测(/phpmyadmin、/robots.txt)、或简单爬虫无节制抓取。它不依赖规则库,而是靠实时请求频次建模,在毫秒级完成判断,对这类轻量级自动化扫描响应迅速。
识别典型扫描行为模式
自动扫描往往暴露在日志中:同一 IP 在几秒内密集访问多个非常规路径;反复请求 404 页面;User-Agent 留有明显工具痕迹(如 sqlmap、dirb、gobuster、masscan)。mod_evasive 不解析 UA,但会捕获其高频请求节奏——只要满足阈值,即触发拦截。
针对性配置关键参数
默认配置偏保守,需微调以适配扫描防御场景:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- DOSPageCount 2 + DOSPageInterval 1:同一 IP 1 秒内访问任一页面超 2 次即记入黑名单。适合防目录爆破,例如连续请求 /login.php、/admin.php、/backup.zip 等敏感路径
- DOSSiteCount 30 + DOSSiteInterval 2:整站层面放宽至 2 秒内 30 次请求。既覆盖扫描器并发探测,又避免误伤正常用户首屏加载(含 JS/CSS/API)
- DOSBlockingPeriod 600:封禁时长设为 10 分钟。足够打断扫描流程,又不会因网络抖动导致真实用户长期无法访问
- DOSHashTableSize 3097:保持默认即可。中小流量站点无需调整;若日均 IP 数超 5 万,可增至 6197 防哈希冲突
配合白名单与日志验证
扫描防御不能一刀切:
- 用 DOSWhitelist 放行可信来源,例如运维出口 IP、监控系统地址、搜索引擎爬虫(Googlebot、Bingbot)
- 确保 DOSLogDir 目录(如 /var/log/apache2/mod_evasive.log)权限正确(Apache 运行用户可写),否则日志静默失效
- 主动测试:用 curl 或 ab 工具模拟扫描请求,立即查日志确认是否出现 [client x.x.x.x] Blacklisted for exceeding request limits 记录
注意它的能力边界
mod_evasive 对以下情况无效:
- 分布式扫描(IP 池轮换,每 IP 请求频率低于阈值)
- 慢速扫描(如每 3 秒发 1 个请求,绕过秒级窗口)
- 伪造 Header 或使用 HTTP/2 多路复用混淆计数逻辑
- 已通过 CDN 或反向代理(如 Nginx)前置的流量——此时 Apache 收到的是代理 IP,非真实源 IP
若需应对更复杂扫描,应前置 WAF 或结合 fail2ban 解析 mod_evasive 日志做网络层封禁。










