Apache代理节点需协同配置四类模块:一、启用mod_security并设SecRuleEngine DetectionOnly调试,关闭SecResponseBodyAccess,写XSS验证规则;二、启用mod_reqtimeout防慢速攻击;三、启用mod_evasive封禁高频请求;四、启用mod_headers强制X-Frame-Options等安全响应头。

Apache 本身不是专业的负载均衡器,但常被用作反向代理层(如前置 Nginx 或直连后端应用),此时可在其上叠加安全模块,形成“代理 + WAF + 限速 + 封禁”一体化防护。关键不是给负载均衡器“加模块”,而是在 Apache 代理节点上部署防御能力,拦截攻击于抵达真实后端之前。
以下四类模块配置需协同生效,缺一不可:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
一、启用 mod_security 并配置最小可行 WAF 规则
这是防御 SQLi/XSS/路径遍历等应用层攻击的核心:
- 确保
mod_security2已加载:a2enmod security2(Debian/Ubuntu)或确认LoadModule security2_module modules/mod_security2.so存在且未注释 - 设置
SecRuleEngine DetectionOnly初期观察流量,日志路径设为/var/log/apache2/modsec_audit.log - 启用基础规则前,必须关闭响应体检查:
SecResponseBodyAccess Off(除非真需防敏感信息泄露) - 写一条验证性规则测试 XSS 拦截:
SecRule ARGS "@rx <script" "id:1001,phase:2,deny,status:403,msg:'XSS attempt detected'"
- 修改后执行
systemctl reload apache2,勿用 restart
二、用 mod_reqtimeout 防慢速头部攻击(Slowloris 类)
仅靠 Timeout 参数无效,必须启用并配置该模块:
- 确认
mod_reqtimeout已加载:a2enmod reqtimeout或检查LoadModule reqtimeout_module modules/mod_reqtimeout.so - 在
<VirtualHost>或全局配置中添加:RequestReadTimeout header=20-40,minrate=500 body=20-60,minrate=500
- HTTPS 站点建议 header 起始时间设为 20 秒(避免 TLS 握手延迟误杀)
- 该指令不可放在
.htaccess或<Directory>中,否则不生效
三、用 mod_evasive 封禁高频恶意请求
适用于 HTTP Flood、扫描探测类攻击:
- 安装后启用模块:
a2enmod evasive(Ubuntu/Debian)或手动编译加载 - 配置示例(单位时间内限制单 IP 行为):
<IfModule mod_evasive20.c> DOSPageCount 2 DOSSiteCount 50 DOSPageInterval 1 DOSSiteInterval 1 DOSBlockingPeriod 10 DOSHashTableSize 3097 </IfModule> - 注意:
DOSPageCount 2表示同一页面 1 秒内超 2 次即封;DOSSiteCount 50是全站总请求数阈值 - 封禁 IP 默认写入
/tmp,确保该目录可写,否则静默失效
四、用 mod_headers 强制安全响应头,阻断点击劫持与 MIME 嗅探
虽不直接“防攻击”,但能切断常见利用链:
- 启用 headers 模块:
a2enmod headers - 在
<VirtualHost *:443>(仅 HTTPS)中添加:Header always set X-Frame-Options "SAMEORIGIN" Header always set X-Content-Type-Options "nosniff" Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
- 若 Apache 代理后端(如 Node.js/PHP-FPM),需在
ProxyPass后显式重设这些头,否则会被丢弃 - 不要混用
X-Frame-Options和Content-Security-Policy: frame-ancestors,后者优先级更高且更灵活
不复杂但容易忽略

















