useradd命令创建无sudo权限的专用Tomcat用户(如tomcat),并设置密码。将Tomcat安装目录(如/opt/tomcat)的所有权归属该用户及组,确保最小权限原则:sudo useradd -r -d /opt/tomcat -s /bin/false tomcat
sudo passwd tomcat
sudo chown -R tomcat:tomcat /opt/tomcat
/etc/systemd/system/tomcat.service),在[Service]部分指定用户和组:[Service]
User=tomcat
Group=tomcat
ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/opt/tomcat/bin/shutdown.sh
Restart=on-failure
重载Systemd配置并重启Tomcat:sudo systemctl daemon-reload
sudo systemctl restart tomcat
tomcat-users.xml配置强密码(包含大小写字母、数字、特殊符号,长度≥8位)的角色和用户,仅授予必要权限(如manager-gui仅允许管理界面访问):<tomcat-users>
<role rolename="manager-gui"/>
<user username="admin" password="ComplexPass123!" roles="manager-gui"/>
</tomcat-users>
进一步通过RemoteAddrValve限制访问IP(如仅允许本地或特定网段):<Context path="/manager" docBase="${catalina.home}/webapps/manager">
<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="^192\.168\.1\.\d+$"/>
</Context>
server.xml中关闭autoDeploy和unpackWARs,防止恶意WAR文件自动部署:<Context path="" docBase="${catalina.home}/webapps" unpackWARs="false" autoDeploy="false"/>
server.xml,将HTTP端口(默认8080)改为非标准端口(如8090),减少扫描攻击:<Connector port="8090" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443"/>
server.xml中添加HTTPS连接器(端口8443):sudo openssl req -newkey rsa:2048 -nodes -keyout /etc/pki/tls/private/tomcat.key -x509 -days 365 -out /etc/pki/tls/certs/tomcat.crt
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
SSLEnabled="true" scheme="https" secure="true"
keystoreFile="/etc/pki/tls/certs/tomcat.crt"
keystorePass="your_keystore_password"/>
添加HTTP到HTTPS的重定向(在server.xml的<Engine>标签内):<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000"
redirectPort="8443"/>
webapps目录下的docs、examples、ROOT、host-manager等默认应用,避免暴露敏感信息:sudo rm -rf /opt/tomcat/webapps/*
server.xml中的server属性,掩盖Tomcat版本:<Connector port="8090" protocol="HTTP/1.1" server="CustomServer/1.0"/>
server.xml的<Host>标签内添加AccessLogValve,记录访问源IP、请求URL、状态码等信息:<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="logs" prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" resolveHosts="false"/>
logrotate工具定期归档和分析日志(如catalina.out、localhost_access_log.*.txt),监控异常访问(如频繁的404错误、可疑IP)。firewalld或iptables限制Tomcat端口的访问,仅允许必要IP(如运维服务器IP)访问管理端口(8443)和HTTP端口(8090):sudo firewall-cmd --zone=public --add-port=8090/tcp --permanent
sudo firewall-cmd --zone=public --add-port=8443/tcp --permanent
sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port port="8443" protocol="tcp" accept' --permanent
sudo firewall-cmd --reload
permissive模式(需重启),或配置正确的SELinux上下文(如httpd_sys_content_t)允许Tomcat访问资源:sudo setenforce 0 # 临时禁用
sudo chcon -R -t httpd_sys_content_t /opt/tomcat # 设置上下文
通过以上措施,可全面覆盖Linux环境下Tomcat的安全管理需求,降低被攻击的风险。需根据实际业务场景调整配置(如调整防火墙规则、扩展角色权限),并定期进行安全评估。