Linux上如何防止Tomcat被攻击
导读:Linux上防止Tomcat被攻击的实用加固清单 一 基础加固 删除或禁用管理应用:清理 $CATALINA_HOME/webapps 下的 docs、examples、ROOT、host-manager、manager;若必须保留管理端...
Linux上防止Tomcat被攻击的实用加固清单
一 基础加固
- 删除或禁用管理应用:清理 $CATALINA_HOME/webapps 下的 docs、examples、ROOT、host-manager、manager;若必须保留管理端,仅在内网开放并严格限制来源 IP。
- 降权运行:创建专用系统用户(如 tomcat),禁止 root 启动;将安装目录属主设为该用户,仅赋予必要权限。
- 移除未使用组件:如无前置 Apache/Nginx,在 server.xml 中删除 AJP 连接器(8009)。
- 禁用自动部署:将 autoDeploy 与 deployOnStartup 设为 false,避免恶意 WAR 被自动加载。
- 强口令与最小权限:在 conf/tomcat-users.xml 仅保留必要账号与最小角色,设置复杂密码并定期更换。
- 防暴力破解:在 server.xml 的 Engine 中使用 LockOutRealm,设置失败次数与锁定时间。
- 版本与补丁:保持 Tomcat 与 操作系统 为最新稳定版,及时修复已知漏洞。
二 网络与访问控制
- 防火墙策略:仅开放必要端口(如 8080/8443);使用 UFW/firewalld/iptables 限制来源 IP 访问管理端或管理端口。
- 管理端访问控制:对 manager/host-manager 配置 allow 规则仅允许内网或跳板机网段访问;或直接删除管理应用。
- 关闭或保护 SHUTDOWN 端口:修改 server.xml 中的 8005 端口与关闭命令字符串,或将监听地址改为 127.0.0.1;也可直接关闭该端口。
- 加密传输:配置 SSL/TLS(8443),使用 keytool 生成证书并在 server.xml 中启用 HTTPS 连接器。
三 应用与运行时安全
- 禁用危险方法与目录浏览:在 conf/web.xml 的 DefaultServlet 将 readonly 设为 true(禁用 PUT/DELETE);将 listings 设为 false 防止目录遍历。
- 隐藏版本信息:修改 catalina.jar 中的 ServerInfo.properties(如移除 Server 字段),降低信息泄露面。
- 访问日志与审计:在 server.xml 的 Host 中启用 AccessLogValve,记录 客户端 IP、请求方法、URL、状态码、字节数 等关键字段,便于溯源。
- 连接与超时控制:在 server.xml 的 Connector 中合理设置 maxThreads、acceptCount、connectionTimeout,缓解资源耗尽与慢速攻击。
四 抗拒绝服务与监控
- 连接与速率限制:在 firewalld/iptables 限制单 IP 并发连接数(如 connlimit),对异常来源进行 reject/drop。
- 边界与清洗:部署 WAF(如 ModSecurity) 识别并阻断恶意请求;结合 CDN/反向代理 做流量分散与缓存。
- 资源隔离:使用 cgroups 限制 CPU/内存 等资源,避免单实例被压垮影响其他服务。
- 监控告警与日志分析:持续检查 access/error/catalina 日志,监控 线程数、连接数、响应时延 等指标,配合 Prometheus/Grafana 设置阈值告警。
五 快速检查清单与示例
- 快速检查清单
- 管理应用已移除或来源 IP 严格受限;tomcat 为非 root 运行。
- AJP 8009 已移除;autoDeploy/deployOnStartup 为 false。
- 8005 已改端口/命令或仅本地监听;listings=false、readonly=true。
- SSL/TLS 已启用;AccessLogValve 已开启;版本信息已隐藏。
- 防火墙仅放行业务端口与必要来源;已配置 WAF/CDN/监控告警。
- 示例命令
- 创建专用用户与目录权限:
- sudo useradd -r -m -d /opt/tomcat -s /bin/false tomcat
- sudo chown -R tomcat:tomcat /opt/tomcat
- sudo chmod +x /opt/tomcat/bin/*.sh
- UFW 仅允许内网访问 8080:
- sudo ufw allow from 192.168.1.0/24 to any port 8080
- sudo ufw deny 8080
- firewalld 限制单 IP 并发连接数:
- sudo firewall-cmd --permanent --zone=public --add-rich-rule=‘rule family=“ipv4” source address=“1.2.3.4” reject’
- sudo firewall-cmd --reload
- 生成自签名证书并配置 HTTPS(示例):
- $JAVA_HOME/bin/keytool -genkey -alias tomcat -keyalg RSA -keystore /path/to/keystore
- 在 server.xml 添加 Connector:
- 验证响应头是否隐藏版本:
- curl -I http://your-domain:8080
- 创建专用用户与目录权限:
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Linux上如何防止Tomcat被攻击
本文地址: https://pptw.com/jishu/748625.html
