apache event mpm通过异步事件模型缓解慢速连接攻击,但需调优timeout、keepalivetimeout等参数,并结合mod_security、mod_evasive及后端tomcat协同加固。
apache在event模式下本身不直接处理java应用,它作为web服务器通常与java应用服务器(如tomcat)配合使用。所谓“apache对慢速连接攻击的防御”,实际是指apache http server在启用event mpm时,如何缓解slowloris、slow post等慢速http攻击——这类攻击通过维持大量半开或低速传输的连接,耗尽服务器连接资源,间接影响后端java服务的可用性。
Event MPM本身对慢速连接的天然优势
相比prefork和worker,event MPM采用异步事件驱动模型,主线程负责监听和调度,专用线程处理长连接(如Keep-Alive)和SSL握手,避免为每个慢连接独占一个worker进程/线程。这意味着:
- 单个慢速连接不会长期占用处理线程,资源利用率更高
- 可支撑更大并发连接数,延缓资源耗尽时间
- 但
event仍需依赖超时配置和模块协同,不能完全免疫慢速攻击
关键防御配置:超时与连接限制
必须显式调优以下参数(在httpd.conf或MPM配置段中):
- Timeout:设置整体请求处理最大等待时间(默认300秒),建议降至10–30秒,防止恶意长等待
- KeepAliveTimeout:空闲Keep-Alive连接保持时间(默认5秒),建议设为2–5秒
- MaxKeepAliveRequests:单个连接允许的最大请求数(默认100),设为20–50可限制滥用
- LimitRequestFields 和 LimitRequestFieldSize:防超长/过多HTTP头导致解析阻塞
增强防护:启用mod_security与mod_evasive
仅靠MPM不够,需结合安全模块:
- mod_security:启用规则集(如OWASP CRS),识别Slow POST特征(如极低上传速率、超长Content-Length但数据迟迟不全)
-
mod_evasive:对同一IP在短时间内发起过多连接(如超过50次/秒)自动封禁,配合
DOSEmailNotify告警 - 注意:两者需编译加载,并在
event模式下验证兼容性(推荐使用mod_security v3.x + SecRuleEngine On)
与Java后端协同的关键点
Apache作为反向代理时(如用mod_proxy_http转发至Tomcat),需同步加固后端:
- 在Apache代理配置中设置
ProxyTimeout(如15秒),避免前端等待后端无响应 - Tomcat自身也需调优:
connectionTimeout、maxConnections、acceptCount,并启用Connection: close策略应对可疑客户端 - 网络层建议配合iptables或云WAF,限制单IP新建连接速率(如
iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 50 -j REJECT)
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










