1. 初始化配置:移除默认风险组件
首次安装Tomcat后,需立即清理webapps目录下的默认应用(如docs、examples、host-manager、manager、ROOT),避免恶意代码通过默认路径部署。同时,注释或删除conf/tomcat-users.xml中的所有用户配置,防止未授权访问管理界面。此外,通过修改server.xml中的Connector节点添加server属性(如server="MyAppServer/1.0"),或修改catalina.jar中的ServerInfo.properties文件,隐藏Tomcat版本信息,降低信息泄露风险。
2. 用户与权限管理:最小化运行权限
绝对禁止使用root用户启动Tomcat,应创建专用用户(如tomcat),并赋予其Tomcat目录的所有权(chown -R tomcat:tomcat /usr/share/tomcat)。通过修改systemd服务文件(/etc/systemd/system/tomcat.service),将User和Group设置为tomcat,并禁用不必要的系统服务(如AJP端口,若无需使用可修改server.xml中的port="-1"),进一步限制权限范围。
3. 端口与服务安全:减少攻击面
修改Tomcat默认端口(如将HTTP端口从8080改为非标准端口,或在Tomcat前端配置Nginx反向代理,将80端口请求转发至Tomcat端口),降低端口扫描攻击概率。通过修改server.xml中的autoDeploy="false"和unpackWARs="false",禁用自动部署功能,防止恶意WAR文件自动解压执行。同时,使用firewalld或iptables限制对Tomcat端口的访问,仅允许必要IP地址(如运维人员IP)访问(如firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="8080" accept')。
4. 应用安全配置:强化应用层防护
通过修改web.xml文件,设置<param-name>listings</param-name><param-value>false</param-value>,禁止目录列表泄露敏感文件(如WEB-INF下的配置文件)。修改JSESSIONID的名称(如在context.xml中添加<Context sessionCookieName="MY_SESSION_ID">)和属性(sessionCookieHttpOnly="true"、sessionCookieSecure="true"),减少会话劫持风险。此外,确保应用程序目录与Tomcat运行用户分离(如应用程序目录归www-data用户所有,Tomcat用户仅有读取权限),防止恶意代码写入。
5. HTTPS加密:保障传输安全
使用keytool工具生成SSL证书(keytool -genkey -alias tomcat -keyalg RSA -keystore /etc/tomcat/keystore.jks),并在server.xml中配置HTTPS连接器(取消注释或添加如下内容):
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
SSLEnabled="true" scheme="https" secure="true"
keystoreFile="/etc/tomcat/keystore.jks"
keystorePass="your_keystore_password"/>
强制应用使用HTTPS(如在web.xml中添加<security-constraint>标签,要求敏感URL(如/login、/admin)必须通过HTTPS访问)。
6. 日志与监控:及时发现异常
启用Tomcat详细访问日志(在server.xml的Connector节点添加accessLogEnabled="true"、accessLogPattern="%h %l %u %t "%r" %s %b %D"),记录客户端IP、请求方法、响应状态、处理时间等信息。定期审查日志文件(位于logs目录下的access_log.*.txt),监控异常活动(如频繁的404错误、大量POST请求)。配置系统日志(rsyslog)收集Tomcat日志,并使用ELK Stack(Elasticsearch+Logstash+Kibana)或Splunk等工具进行集中分析和告警。
7. 定期更新与补丁管理
定期检查Tomcat官方网站(apache.org)的安全公告,及时升级至最新稳定版本(如从Tomcat 9.0.87升级至9.0.88),修复已知漏洞(如CVE-2025-XXXX)。同时,更新Java运行环境(如从OpenJDK 1.8.0_392升级至1.8.0_401),确保依赖组件无安全风险。
8. 高级防护:增强系统安全性
配置安全管理器(SecurityManager),在catalina.sh中添加-Djava.security.manager -Djava.security.policy=/etc/tomcat/policy.policy参数,限制应用程序的权限(如禁止访问系统文件、网络端口)。使用fail2ban工具防范暴力破解(如针对Tomcat管理界面的登录尝试),配置自动封禁IP(如5分钟内失败5次则封禁1小时)。此外,定期备份Tomcat配置文件(conf目录)和应用数据(webapps目录),确保灾难发生时可快速恢复。