servername 不具备防御慢速死连接攻击的能力,仅用于标识虚拟主机、影响重定向和日志,真正防护依赖 mod_reqtimeout、keepalive 控制及 mpm 并发限制等机制。

ServerName 本身不参与防御慢速死连接攻击,它仅用于标识虚拟主机的主域名、影响重定向和日志记录,对连接生命周期、超时控制或请求速率毫无作用。把防御希望寄托在 ServerName 上,就像用门牌号防小偷——标识功能≠防护能力。
真正起效的是 Apache 的连接管理机制与限速模块,而 ServerName 配置不当甚至可能间接削弱防护(例如多个站点共用同一 IP+端口但未正确隔离时)。
✅ 正确方向:用 ServerName 配合真正的防护机制
1. 确保 ServerName 明确,避免配置冲突导致模块失效
当多个 <virtualhost></virtualhost> 共享同一 IP:Port 时,若 ServerName 和 ServerAlias 模糊或重复,Apache 可能无法准确路由请求,导致:
-
mod_reqtimeout规则未命中目标虚拟主机(因配置加载错位) -
KeepAlive Off或RequestReadTimeout未生效于高危入口
✅ 做法:
- 每个
<virtualhost></virtualhost>必须有唯一、明确的ServerName(如api.example.com) - 高风险接口(如
/login,/api/v1/)单独设虚拟主机,不与静态资源混用 - 避免通配符
ServerName *或留空
<virtualhost>
ServerName api.example.com
ServerAlias www.api.example.com
KeepAlive Off # 关键:面向API禁用复用
RequestReadTimeout header=20-40,minrate=500 body=20,minrate=500
# …其他SSL和路径配置
</virtualhost>
2. 利用 ServerName 实现按站点差异化防护
虽然 KeepAliveTimeout 不能按虚拟主机设置,但你可以通过 ServerName 区分站点,在不同 <virtualhost></virtualhost> 中启用不同策略:
- 对
admin.example.com:KeepAlive Off+ 严格RequestReadTimeout - 对
static.example.com:KeepAlive On+ 较宽松KeepAliveTimeout 8+ 仅限 GET/HEAD
⚠️ 注意:RequestReadTimeout 可写在 <virtualhost></virtualhost> 内(服务器级上下文),这是唯一能按站点定制的慢速防护参数。
PHP中文网提供Apache 2.4.62 官方 tar.gz 源码包下载,通过源码编译安装,开发者能够灵活定制模块、优化性能并精准控制安装路径,满足多样化的业务需求。
3. 防止域名劫持带来的间接攻击面扩大
慢速攻击常配合域名伪造(如用恶意子域发起大量连接)。ServerName 配合以下措施可缩小攻击入口:
- 删除未使用的
ServerAlias(如*.example.com),只保留业务必需域名 - 对非主站域名返回 444(关闭连接)或重定向到主站:
<virtualhost> ServerName attacker-domain.com Redirect 444 / </virtualhost>
❌ 常见误区(千万别做)
- 在
<directory></directory>或.htaccess里写RequestReadTimeout→ 静默失效 - 把
Timeout 300当成防护手段 → 反而延长攻击窗口 - 仅靠
ServerName example.com就以为“绑定了域名就安全了” → 完全无关
? 核心防护必须做的三件事(与 ServerName 无关,但需在其基础上部署)
-
启用并配置
mod_reqtimeout:LoadModule reqtimeout_module modules/mod_reqtimeout.so RequestReadTimeout header=20-40,minrate=500 body=20,minrate=500
-
关键入口禁用 Keep-Alive:
KeepAlive Off
-
使用
eventMPM 并限制并发:MaxRequestWorkers 150
配置后务必重启(systemctl restart apache2),再用 slowhttptest 实测验证是否在 40 秒内断连,并检查 error_log 是否出现 client denied 记录。
不复杂但容易忽略。










