1. 安装Tomcat及依赖
在Debian上安装Tomcat前,需先更新软件源并安装OpenJDK(Tomcat的运行环境)及Tomcat本身。推荐使用apt包管理器安装,确保组件版本兼容且易于后续更新:
sudo apt update
sudo apt install tomcat9 tomcat9-admin default-jdk
2. 创建专用Tomcat用户
为避免以root权限运行Tomcat(降低被攻击后的影响范围),需创建专用系统用户及组,并将Tomcat目录所有权转移给该用户:
# 创建tomcat组及用户(禁用登录shell)
sudo groupadd tomcat
sudo useradd -s /bin/false -g tomcat -d /opt/tomcat tomcat
# 更改Tomcat目录所有权(若安装在/opt/tomcat)
sudo chown -R tomcat:tomcat /opt/tomcat
sudo chmod -R 750 /opt/tomcat # 限制目录权限
3. 配置Tomcat以专用用户运行
编辑Tomcat的systemd服务文件(/etc/systemd/system/tomcat9.service),确保User和Group设置为tomcat,并添加UMask 0007(限制新文件权限):
[Service]
Type=forking
Environment="JAVA_HOME=/usr/lib/jvm/default-java"
Environment="CATALINA_PID=/opt/tomcat/temp/tomcat.pid"
Environment="CATALINA_HOME=/opt/tomcat"
Environment="CATALINA_BASE=/opt/tomcat"
ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/opt/tomcat/bin/shutdown.sh
User=tomcat
Group=tomcat
UMask=0007
RestartSec=10
Restart=always
修改后需重新加载systemd并重启Tomcat:
sudo systemctl daemon-reload
sudo systemctl restart tomcat9
4. 修改默认端口
默认的8080(HTTP)和8009(AJP)端口易被扫描工具识别,需编辑/etc/tomcat9/server.xml,修改Connector标签的port属性(如将HTTP改为1234,AJP改为10009):
<Connector port="1234" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
<Connector port="10009" protocol="AJP/1.3" redirectPort="8443" />
5. 隐藏Tomcat版本信息
在server.xml的Connector标签中添加server属性,替换为自定义字符串(如MySecureTomcat),防止攻击者通过HTTP响应头识别Tomcat版本:
<Connector port="1234" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" server="MySecureTomcat" />
6. 限制远程管理界面访问
Tomcat的manager和host-manager应用默认暴露在公网,易遭受暴力破解或未授权访问。可通过以下两种方式限制:
sudo rm -rf /var/lib/tomcat9/webapps/manager /var/lib/tomcat9/webapps/host-manager
/etc/tomcat9/web.xml,在<security-constraint>中添加<ip-address>限制:<security-constraint>
<web-resource-collection>
<web-resource-name>Restricted Areas</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>manager-gui</role-name>
</auth-constraint>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
7. 配置SSL/TLS加密
为避免数据在传输过程中被窃取,需启用HTTPS。首先生成自签名证书(或使用Let’s Encrypt获取免费证书),然后编辑server.xml添加SSL连接器:
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
keystoreFile="/path/to/your/keystore.jks" keystorePass="your_keystore_password"
clientAuth="false" sslProtocol="TLS" />
8. 配置用户权限与认证
编辑/etc/tomcat9/tomcat-users.xml,添加管理用户并分配最小必要角色(如manager-gui仅允许访问管理界面,admin-gui允许访问主机管理):
<tomcat-users>
<role rolename="manager-gui"/>
<role rolename="admin-gui"/>
<user username="secureAdmin" password="StrongPassword123!" roles="manager-gui,admin-gui"/>
</tomcat-users>
注意:避免使用弱密码,建议使用密码管理器生成复杂密码。
9. 配置防火墙限制访问
使用ufw(Uncomplicated Firewall)限制仅允许必要端口(如80/443转发至Tomcat端口、SSH端口22)的流量,阻止非法访问:
# 允许HTTP(80)转发至Tomcat HTTP端口(如1234)
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 1234/tcp
sudo ufw allow 8443/tcp
# 允许SSH(22)用于远程管理
sudo ufw allow 22/tcp
# 启用防火墙
sudo ufw enable
# 查看规则
sudo ufw status
10. 定期更新与监控
sudo apt update && sudo apt upgrade tomcat9),及时修复已知漏洞。logwatch或journalctl定期审查Tomcat日志(/var/log/tomcat9/catalina.out、/var/log/tomcat9/localhost_access_log.*.txt),监控异常访问(如频繁的401错误、可疑IP地址)。server.xml、tomcat-users.xml)及web应用,防止配置丢失或被篡改。