apache 的 块不能直接防护 cc 攻击,因其仅控制文件系统级权限,不处理请求频率;cc 防护须依赖 mod_evasive(全局配置)、mod_security(嵌入规则)或前置 waf, 仅可辅助禁用目录浏览、限制脚本执行、关闭 .htaccess 覆盖以缩小攻击面。

在 Apache 的 <directory></directory> 配置块中,不能直接实现 CC 攻击防护——因为 CC 是高频、低特征的 HTTP 请求层攻击,而 <directory></directory> 仅控制文件系统级访问权限(如目录浏览、脚本执行、符号链接等),不处理请求频率、并发连接或 IP 行为分析。
真正有效的 CC 防护需在 模块层或服务层 实现。但你可以在 <directory></directory> 中配合相关模块做辅助加固,提升整体防御纵深。以下是清晰、可落地的配置逻辑:
✅ 正确做法:用 mod_evasive 在全局或虚拟主机中设限(非 Directory 块内)
mod_evasive 是 Apache 官方推荐的轻量级 CC 防御模块,它基于 IP 统计请求速率,必须放在 <virtualhost></virtualhost> 或主 httpd.conf 的 IfModule 块中,不能写在 <directory></directory> 内。
示例配置(推荐放在 /etc/httpd/conf.d/mod-evasive.conf):
<ifmodule mod_evasive20.c>
DOSHashTableSize 3097
DOSPageCount 10 # 同一页面 1 秒内最多 10 次请求
DOSSiteCount 50 # 全站 1 秒内最多 50 次请求
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 600 # 触发后封禁 10 分钟
DOSEmailNotify admin@yourdomain.com
DOSLogDir "/var/log/mod_evasive"
</ifmodule>
⚠️ 注意:
DOSPageCount和DOSSiteCount的“秒级”统计是核心,不是按分钟——这正是防 CC 的关键粒度。
✅ 可在 <directory></directory> 中做的配合性防护(增强可信边界)
虽然不防 CC,但能减少攻击面,避免被利用放大攻击效果:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
-
禁用目录浏览(防止暴露敏感路径,间接降低扫描器成功率)
<directory> Options -Indexes +FollowSymLinks AllowOverride None Require all denied </directory> -
限制脚本执行权限(防恶意上传后执行)
<directory> Options -ExecCGI -Includes AddHandler none .php .phtml .pl .py .sh Require all granted </directory> -
关闭 .htaccess 覆盖能力(防攻击者篡改规则)
<directory> AllowOverride None # 禁用 .htaccess,由主配置统一管控 Require all granted </directory>
✅ 进阶组合:Directory + mod_security 自定义规则(精准拦截异常行为)
如果你已启用 mod_security,可在 <directory></directory> 中嵌入局部规则,拦截特定目录下的可疑 CC 行为,例如:
<directory><ifmodule mod_security2.c>
# 拦截 /api/ 下每秒超 5 次的同一 IP 请求(需 CRS 或自定义规则支持)
SecRule REQUEST_URI "@beginsWith /api/" "phase:1,pass,nolog,tag:'CC-protection'"
SecRule IP:cc_attack_counter "@gt 5" "phase:1,deny,status:429,msg:'CC rate limit exceeded',tag:'block'"
SecAction "phase:1,initcol:ip=%{REMOTE_ADDR},pass,nolog,setvar:ip.cc_attack_counter=+1,expirevar:ip.cc_attack_counter=1"
</ifmodule></directory>
? 提示:该逻辑依赖
mod_security的变量跟踪能力,需确保SecDataDir可写且SecRuleEngine On已启用。
❌ 常见误区(请避开)
- 把
limit_req(Nginx 语法)误写进 Apache 配置; - 在
<directory></directory>中试图用MaxConnectionsPerIP(Apache 不支持该指令); - 仅靠
Require ip 192.168.1.0/24这类白名单应对 CC——攻击者用代理池绕过极容易; - 忽略
mod_evasive日志目录权限(/var/log/mod_evasive需属主apache且可写)。
Apache 的 <directory></directory> 是权限守门员,不是流量警察。防 CC 要靠 mod_evasive、mod_security 或前置 WAF(如 DDoS 高防)。把它用对位置,再配以目录级最小权限原则,才能既稳定又安全。









