1. 及时更新Tomcat至最新稳定版本
保持Tomcat及Debian系统的最新状态是防范已知漏洞的核心措施。定期通过sudo apt update && sudo apt upgrade tomcat9(以Tomcat 9为例)命令更新软件包,优先升级到官方发布的安全补丁版本(如修复CVE-2025-24813、CVE-2016-1240等漏洞的最新版)。升级前务必备份配置文件(如server.xml、tomcat-users.xml)和应用程序数据,避免升级过程中数据丢失。
2. 最小化安装与默认组件禁用
安装Tomcat时选择“最小化”选项,删除默认示例、文档和不必要的组件(如docs、examples文件夹),减少潜在攻击面。通过以下命令清理:
sudo rm -rf /opt/tomcat/webapps/docs /opt/tomcat/webapps/examples
关闭未使用的协议(如AJP协议),在server.xml中注释或删除AJP Connector配置,避免攻击者通过AJP端口入侵。
3. 强化访问控制与权限管理
server.xml配置IP白名单,仅允许特定IP(如公司内网)访问管理界面(/manager、/host-manager),示例如下:<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="192\.168\.1\.\d+" />
或直接禁用管理应用(重命名manager、host-manager目录):sudo mv /opt/tomcat/webapps/manager /opt/tomcat/webapps/manager_disabled
sudo mv /opt/tomcat/webapps/host-manager /opt/tomcat/webapps/host-manager_disabled
tomcat-users.xml,为用户分配最小必要角色(如仅授予manager-gui而非manager-script),并设置复杂密码(包含大小写字母、数字和特殊字符):<tomcat-users>
<user username="admin" password="SecurePass123!" roles="manager-gui,admin-gui"/>
</tomcat-users>
tomcat),并将其加入tomcat组,修改Tomcat目录权限:sudo groupadd tomcat
sudo useradd -s /bin/false -g tomcat -d /opt/tomcat tomcat
sudo chgrp -R tomcat /opt/tomcat
sudo chmod -R 750 /opt/tomcat
在systemd服务文件(/etc/systemd/system/tomcat.service)中指定用户:[Service]
User=tomcat
Group=tomcat
重启Tomcat使权限生效:sudo systemctl daemon-reload && sudo systemctl restart tomcat。4. 配置防火墙限制端口访问
使用ufw(Uncomplicated Firewall)限制对Tomcat端口的访问,默认仅开放HTTP(8080)、HTTPS(8443)端口,禁止其他端口访问:
sudo ufw allow 8080/tcp # HTTP端口
sudo ufw allow 8443/tcp # HTTPS端口
sudo ufw enable # 启用防火墙
若需进一步限制,可通过ufw限制访问源IP(如仅允许公司IP访问8080端口):
sudo ufw allow from 192.168.1.0/24 to any port 8080/tcp
5. 配置SSL/TLS加密通信
为Tomcat配置SSL证书,启用HTTPS,防止中间人攻击(MITM)。可使用Let’s Encrypt免费获取证书,步骤如下:
sudo apt install certbot python3-certbot-nginx(若使用Nginx反向代理)或sudo apt install certbot(直接为Tomcat配置)。sudo certbot certonly --standalone -d yourdomain.com。server.xml,添加SSL Connector:<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
SSLEnabled="true" scheme="https" secure="true"
keystoreFile="/etc/letsencrypt/live/yourdomain.com/keystore.jks"
keystorePass="your_keystore_password"
clientAuth="false" sslProtocol="TLS"/>
重启Tomcat使SSL生效:sudo systemctl restart tomcat。6. 监控与日志审计
定期审查Tomcat日志(catalina.out、localhost_access_log.*.txt),监控异常活动(如频繁的登录失败、未授权访问尝试)。使用logwatch工具自动化日志分析,配置邮件通知:
sudo apt install logwatch
sudo logwatch --service tomcat --output mail --mailto your-email@example.com --detail high
设置实时监控告警(如使用Zabbix、Prometheus+Granafa),当检测到异常CPU使用率、内存占用或网络流量时及时通知管理员。
7. 禁用自动部署与强化部署安全
禁用Tomcat的自动部署功能,避免攻击者通过上传恶意WAR文件直接部署应用。编辑server.xml,设置:
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="false" deployOnStartup="false">
部署应用时,通过Tomcat Manager手动上传WAR文件,或使用CI/CD流水线自动化部署,确保应用来源可信。
8. 隐藏Tomcat信息与关闭不必要的服务
server.xml中的server属性,替换为自定义字符串(如MySecureTomcat),避免泄露Tomcat版本:<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" server="MySecureTomcat"/>
web.xml,添加自定义错误页面(如404、500),隐藏服务器内部信息:<error-page>
<error-code>404</error-code>
<location>/error/404.html</location>
</error-page>
<error-page>
<error-code>500</error-code>
<location>/error/500.html</location>
</error-page>
server.xml中的shutdown端口设置为-1:<Server port="-1" shutdown="SHUTDOWN">
此操作需通过本地控制台或SSH管理Tomcat,增加安全性。