温馨提示×

如何防止Ubuntu Tomcat被DDoS攻击

小樊
44
2026-01-11 12:23:40
栏目: 云计算

Ubuntu Tomcat 防 DDoS 实用方案

一 分层防护思路

  • 网络边界/云侧优先开启防护:使用CDNAnti-DDoS 高防IP/流量清洗隐藏源站、吸收大流量并做协议层清洗,这是应对大流量/带宽耗尽型攻击的最有效手段。源站在接入 CDN 后,需在 Tomcat 正确获取X-Forwarded-For等头部以记录真实客户端 IP。对于云上业务,可结合ELB/原生防护联动,丢弃未监听协议与端口的流量,降低源站压力。
  • 主机与系统层做连接与协议栈加固:启用SYN Cookie、调优TCP 队列与重试、限制ICMP/Ping、必要时对异常来源做速率限制与封禁。
  • Tomcat 层减少攻击面与资源占用:删除默认应用、禁用AJP自动部署、限制管理端访问、降权运行、升级版本;同时针对应用层 DoS(如慢速 POST、暴力登录、滥用 HTTP 方法)进行专项配置与代码层防护。

二 网络与系统层加固

  • 边界与云侧
    • 启用CDN高防IP/流量清洗,对外仅暴露 CDN/高防节点,源站仅与清洗中心或 CDN 回源通信;在控制台开启默认或自定义策略并配置告警。
    • 源站 Tomcat 获取真实 IP:在反向代理/CDN 开启X-Forwarded-For,Tomcat 通过请求属性读取并用于日志与访问控制。
  • 主机与内核
    • 开启SYN Cookie并调优队列与重试,缓解SYN Flood
      • net.ipv4.tcp_syncookies = 1
      • net.ipv4.tcp_max_syn_backlog = 4096
      • net.ipv4.tcp_synack_retries = 2
      • net.ipv4.tcp_syn_retries = 2
    • 限制ICMP与异常握手/扫描流量,降低噪声与放大风险:
      • iptables -A INPUT -p tcp --syn -m limit --limit 1/s -j ACCEPT
      • iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
      • iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
    • 调整TIME_WAIT复用与回收,缓解连接耗尽(注意不同内核版本对 tw_recycle 的兼容差异,必要时仅启用 tw_reuse):
      • net.ipv4.tcp_fin_timeout = 30
      • net.ipv4.tcp_keepalive_time = 1200
      • net.ipv4.tcp_tw_reuse = 1
      • net.ipv4.tcp_max_tw_buckets = 5000
      • net.ipv4.ip_local_port_range = 1024 65000
    • 动态封禁高频异常来源:结合fail2banDDoS Deflate对异常 IP 自动封禁,缩短攻击窗口。

三 Tomcat 服务与应用层加固

  • 减少攻击面
    • 删除webapps下默认应用:docs、examples、ROOT、host-manager、manager
    • 禁用AJP连接器(如 AJP/8009 未使用),避免不必要协议暴露与历史漏洞面。
    • 关闭自动部署:server.xml 中设置 autoDeploy=“false”、deployOnStartup=“false”。
    • 降权运行:创建非 root专用用户启动 Tomcat,严格目录权限。
    • 升级至最新稳定版,及时修补已知漏洞。
  • 管理端与认证
    • 限制manager/host-manager访问(仅内网 IP 或禁用),修改tomcat-users.xml使用强密码且仅授予必要角色。
    • 防止暴力破解:配置FailedLoginAttempts或采用 Tomcat 的LockoutRealm在一定失败次数后自动锁定来源。
  • 应用层 DoS 专项
    • 禁用不需要的 HTTP 方法(如 PUT、DELETE、OPTIONS、TRACE、HEAD):在应用的 web.xml 或全局 conf/web.xmlsecurity-constraint 中限制。
    • 缓解Slow HTTP DoS:缩短连接器超时,例如将 connectionTimeout 调整为 8000 ms(默认常见为 20000 ms)。
    • 会话与 Cookie:为会话 Cookie 设置 HttpOnly,降低被脚本窃取风险。
    • 统一异常处理:配置 error-page(如 403/404/500)避免泄露堆栈与敏感信息。

四 监控 响应与演练

  • 监控与告警
    • 在 Tomcat 启用访问日志并输出X-Forwarded-For,结合fail2ban或脚本对异常 IP/UA/速率进行自动封禁与告警。
    • 使用 netstat/ss 与日志分析识别异常连接与来源,例如统计连接数 Top N 的 IP,作为封禁与取证依据。
  • 处置流程
    • 发现异常时,先在边界/云侧开启或调高清洗策略,临时封禁攻击网段;在主机侧通过iptables限速/封禁,观察业务恢复情况。
    • 攻击缓解后复盘规则阈值、日志与告警链路,补齐短板(如漏放行白名单、阈值过低/过高)。
  • 演练与容量规划
    • 定期进行压力测试与攻防演练,验证连接数、线程池、超时、WAF/防火墙规则的有效性,并据此调整内核参数、Tomcat 线程与连接器配置,确保在峰值时仍有冗余容量

0