Ubuntu Tomcat如何防止DDoS攻击
导读:Ubuntu Tomcat 防 DDoS 实用方案 一 分层防护思路 边缘与系统层:在Ubuntu上启用UFW限制来源与端口,调优内核网络参数以抵御SYN Flood,必要时用iptables connlimit限制单源并发连接,降低资源...
Ubuntu Tomcat 防 DDoS 实用方案
一 分层防护思路
- 边缘与系统层:在Ubuntu上启用UFW限制来源与端口,调优内核网络参数以抵御SYN Flood,必要时用iptables connlimit限制单源并发连接,降低资源被占满的风险。
- 反向代理与边界层:在 Tomcat 前部署Nginx/Apache作为反向代理,启用速率限制、连接数限制、请求体大小限制与WAF(如 ModSecurity),过滤异常与恶意流量。
- Tomcat 应用层:收紧Connector 并发与超时、禁用不必要协议与组件(如AJP)、关闭自动部署、删除管理应用、限制管理接口访问、开启访问日志与监控,减少可被利用的攻击面与放大点。
二 关键配置示例
-
Tomcat 连接器收紧(server.xml)
- 将连接与线程收敛到业务所需范围,建议:connectionTimeout=2000–5000 ms、maxThreads=150–400、acceptCount=100–500;禁用或删除未使用的AJP连接器;关闭autoDeploy/deployOnStartup;删除或限制访问webapps/manager、host-manager。示例:
< Connector port="8080" protocol="HTTP/1.1" connectionTimeout="2000" maxThreads="200" minSpareThreads="25" maxSpareThreads="75" acceptCount="100" redirectPort="8443" enableLookups="false" maxHttpHeaderSize="8192" URIEncoding="UTF-8" /> - 说明:缩短超时与收紧并发可有效缓解**HTTP 慢速攻击(Slowloris/Slow POST/Range)**与连接耗尽;关闭自动部署与移除管理应用能减少被滥用风险。
- 将连接与线程收敛到业务所需范围,建议:connectionTimeout=2000–5000 ms、maxThreads=150–400、acceptCount=100–500;禁用或删除未使用的AJP连接器;关闭autoDeploy/deployOnStartup;删除或限制访问webapps/manager、host-manager。示例:
-
系统与防火墙(UFW + iptables)
- UFW 仅放行必要来源与端口(示例仅开放 8080/8443 给内网/白名单):
sudo ufw allow from 203.0.113.0/24 to any port 8080,8443 proto tcp sudo ufw enable - 限制单源并发连接(示例:每个来源 IP 对 80/443 最多 20 个并发连接):
sudo iptables -A INPUT -p tcp --syn --dport 80,443 -m connlimit --connlimit-above 20 -j REJECT --reject-with tcp-reset - 说明:连接数限制可显著抑制CC/连接耗尽类攻击;UFW 提供基础策略,iptables 实现细粒度控制。
- UFW 仅放行必要来源与端口(示例仅开放 8080/8443 给内网/白名单):
-
内核参数(抵御 SYN Flood)
- 临时启用与调优(攻击期间按需应用,平时不建议长期改动):
sudo sysctl -w net.ipv4.tcp_syncookies=1 sudo sysctl -w net.ipv4.tcp_max_syn_backlog=1280 sudo sysctl -w net.ipv4.tcp_synack_retries=2 sudo sysctl -w net.ipv4.tcp_syn_retries=2 - 说明:syncookies 在半连接队列溢出时启用挑战应答,backlog 与重试次数调小可加速回收半开连接,降低资源占用。
- 临时启用与调优(攻击期间按需应用,平时不建议长期改动):
-
反向代理与 WAF(Nginx 示例)
- 速率与并发限制、请求体限制与基础 WAF:
http { limit_req_zone $binary_remote_addr zone=api:10m rate=10r/s; limit_conn_zone $binary_remote_addr zone=perip:10m; server { listen 80; server_name your.domain; location / { limit_req zone=api burst=20 nodelay; limit_conn perip 20; client_max_body_size 10m; proxy_pass http://127.0.0.1:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } # 可选:启用 ModSecurity/WAF # modsecurity on; # modsecurity_rules_file /etc/nginx/modsec/main.conf; } } - 说明:在代理侧进行速率/并发/大小限制与WAF规则匹配,可提前丢弃大量恶意请求,显著降低 Tomcat 压力。
- 速率与并发限制、请求体限制与基础 WAF:
三 检测与应急
- 快速判断异常
- 查看连接状态与来源分布:
netstat -ntu | awk '{ print $5} ' | cut -d: -f1 | sort | uniq -c | sort -nr | head ss -s - 抓包识别高频方法(如大量 GET/POST):
sudo tcpdump -s0 -A -n -i any | grep -o -E '(GET|POST|HEAD) .*' - 观察 SYN_RECEIVED 是否异常增多以识别 SYN Flood。
- 查看连接状态与来源分布:
- 处置步骤
- 立即在UFW/iptables层面封禁攻击源段或全局限流;临时下调 Tomcat maxThreads/acceptCount 并缩短 connectionTimeout;在代理/WAF 上开启更严格的速率与规则;保留日志用于溯源与取证。
四 安全加固与运维要点
- 删除或限制管理应用(docs、examples、manager、host-manager),修改默认端口,禁用PUT/DELETE等不必要方法,开启访问日志与错误页面自定义,隐藏版本信息,降低信息泄露与滥用风险。
- 使用非 root用户运行 Tomcat,最小化权限;仅开放必要端口与协议;定期更新 Tomcat 与系统补丁;对管理界面实施IP 白名单或禁用。
五 何时引入专业防护
- 当遭遇大流量/应用层 CC且单台服务器与常规限速难以缓解时,建议引入云厂商/专业 DDoS 防护/CDN或上游清洗服务,结合自动伸缩与边界 WAF,形成多层纵深防御。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu Tomcat如何防止DDoS攻击
本文地址: https://pptw.com/jishu/770481.html
