Linux系统下如何防止Tomcat被攻击
导读:1. 用户与权限管理:最小权限原则 创建专用低权限用户:使用useradd -r -d /opt/tomcat -s /bin/false tomcat命令创建系统用户(如tomcat),避免以root身份运行Tomcat。通过chown...
1. 用户与权限管理:最小权限原则
- 创建专用低权限用户:使用
useradd -r -d /opt/tomcat -s /bin/false tomcat
命令创建系统用户(如tomcat
),避免以root
身份运行Tomcat。通过chown -R tomcat:tomcat /opt/tomcat
设置Tomcat目录所有权,chmod -R 750 /opt/tomcat
限制目录权限(所有者可读写执行,组用户可读执行,其他用户无权限)。 - 配置管理用户权限:编辑
conf/tomcat-users.xml
,仅保留必要角色(如manager-gui
仅授权给运维人员),设置强密码(组合大小写字母、数字、特殊符号,长度≥8位)。可通过LockOutRealm
(在server.xml
的Engine
节点添加)配置账户锁定:failureCount="5"
(连续失败5次)、lockOutTime="300"
(锁定5分钟),防止暴力破解。
2. 网络与访问控制:限制暴露面
- 修改默认端口:将
server.xml
中的HTTP连接器端口从8080
改为非标准端口(如8081
),减少自动扫描工具的发现概率。若无需AJP协议(常用于与Apache/Nginx集成),注释或删除8009
端口配置。 - 防火墙规则配置:使用
firewalld
(推荐)或iptables
限制访问:firewall-cmd --zone=public --add-port=8081/tcp --permanent
(添加端口)、firewall-cmd --reload
(生效);或iptables -A INPUT -p tcp --dport 8081 -s 192.168.1.100 -j ACCEPT
(仅允许指定IP访问),拒绝其他IP的连接。 - 限制管理界面IP:在
server.xml
的Host
节点添加< Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="192\.168\.1\.\d+" />
,仅允许特定IP段访问管理界面(如manager
、host-manager
)。
3. 应用与组件安全:减少攻击面
- 移除不必要的内置应用:删除
webapps
目录下的docs
(文档)、examples
(示例)、ROOT
(默认页)、host-manager
(主机管理)、manager
(应用管理)等目录。若无需这些功能,彻底移除可避免潜在漏洞。 - 禁用自动部署:修改
server.xml
中的Host
节点,设置autoDeploy="false"
(关闭自动部署)、deployOnStartup="false"
(禁止启动时部署),防止恶意WAR文件自动部署。建议将应用部署到非默认目录(如/opt/tomcat/custom_webapps
),并通过手动启动。 - 关闭AJP连接器:若未使用Apache/Nginx作为前端代理,注释
server.xml
中的AJP连接器配置(< Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
),避免暴露AJP协议的潜在漏洞。
4. 数据传输安全:加密通信
- 启用SSL/TLS:使用
keytool
生成证书(keytool -genkey -alias tomcat -keyalg RSA -keystore /etc/tomcat/keystore -validity 365
),修改server.xml
添加HTTPS连接器:< Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" SSLEnabled="true" scheme="https" secure="true" keystoreFile="/etc/tomcat/keystore" keystorePass="your_password" clientAuth="false" sslProtocol="TLS" />
。强制应用使用HTTPS(如在web.xml
中添加< security-constraint>
标签,要求敏感页面使用CONFIDENTIAL
传输)。
5. 日志与监控:及时发现异常
- 启用详细日志:配置
server.xml
中的AccessLogValve
,记录访问日志(directory="logs" prefix="localhost_access_log." suffix=".txt" pattern="common"
),包含IP、时间、请求方法、URL、状态码等信息。启用应用日志(如log4j
或java.util.logging
),记录应用层异常(如SQL注入、XSS攻击尝试)。 - 定期审计与监控:每日检查Tomcat日志(
logs/catalina.out
、logs/localhost_access_log.*.txt
),使用grep
命令查找异常关键词(如404
错误过多、sql injection
、xss
)。部署入侵检测系统(IDS,如Snort)或SIEM(如Elastic SIEM),实时监控流量和日志,预警潜在攻击。
6. 系统与Tomcat版本维护:修复已知漏洞
- 定期更新Tomcat:关注Apache Tomcat官网的安全公告(如CVE漏洞),及时下载最新稳定版本(如Tomcat 10.1.x),替换旧版本。更新前备份配置文件(
conf/
)和应用数据(webapps/
),避免数据丢失。 - 操作系统安全加固:定期更新Linux系统(如CentOS的
yum update
、Ubuntu的apt update
),安装安全补丁。禁用不必要的系统服务(如FTP、Telnet),使用chkconfig
或systemctl
关闭未使用的服务。设置SSH密钥认证,禁用密码登录(修改/etc/ssh/sshd_config
中的PasswordAuthentication no
),防止SSH暴力破解。
7. 应用层安全:强化应用自身防护
- 禁用危险HTTP方法:编辑
web.xml
,添加< security-constraint>
限制请求方法:< web-resource-collection> < web-resource-name> Restricted Methods< /web-resource-name> < url-pattern> /*< /url-pattern> < http-method> PUT< /http-method> < http-method> DELETE< /http-method> < http-method> TRACE< /http-method> < /web-resource-collection> < auth-constraint /> < /security-constraint>
,防止攻击者通过PUT/DELETE方法上传恶意文件或探测系统。 - 设置HttpOnly Cookie:在
conf/context.xml
中添加< Context useHttpOnly="true">
,防止JavaScript通过document.cookie
访问会话Cookie,减少会话劫持风险。 - 应用代码安全:对应用进行安全编码(如使用PreparedStatement防止SQL注入、输出编码防止XSS、CSRF Token防止跨站请求伪造),定期进行代码审计(如使用SonarQube)和渗透测试(如使用Burp Suite)。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Linux系统下如何防止Tomcat被攻击
本文地址: https://pptw.com/jishu/731113.html