webapps目录下所有默认应用(如docs、examples、host-manager、manager、ROOT),避免恶意代码通过默认路径部署。命令:rm -rf /opt/tomcat/webapps/*。tomcat-users.xml中的所有用户定义,防止未授权访问管理界面。示例:将<tomcat-users>标签内的内容全部注释。server.xml中的Connector配置,添加server属性(如server="MyAppServer/1.0"),避免泄露Tomcat版本,降低针对性攻击风险。tomcat),并赋予Tomcat目录所有权(chown -R tomcat:tomcat /opt/tomcat),禁止以root身份启动Tomcat,减少权限滥用风险。命令:useradd -r -s /sbin/nologin tomcat。firewalld限制Tomcat端口(默认8080)的访问,仅允许可信IP段访问。示例:sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent && sudo firewall-cmd --reload。server.xml的Host标签中设置autoDeploy="false"和unpackWARs="false",禁止Tomcat自动解压和部署上传的WAR文件,避免恶意应用植入。context.xml或应用的web.xml中,配置会话Cookie的HttpOnly(防XSS窃取)、Secure(仅HTTPS传输)和自定义名称(如JSESSIONID改为MYAPP_SESSION),降低会话劫持风险。示例:<Context sessionCookieHttpOnly="true" sessionCookieSecure="true" sessionCookieName="MYAPP_SESSION"/>。web.xml中的listings属性为false,防止Tomcat列出目录内容,避免敏感文件(如WEB-INF下的配置文件)泄露。示例:<servlet><servlet-name>default</servlet-name><init-param><param-name>listings</param-name><param-value>false</param-value></init-param></servlet>。server.xml添加Connector配置,启用HTTPS(端口8443)。示例:<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
SSLEnabled="true" scheme="https" secure="true"
keystoreFile="/etc/pki/tls/certs/tomcat.keystore"
keystorePass="your_keystore_password"/>
```。
bin、conf、lib等核心目录仅允许tomcat用户读写,webapps目录限制为tomcat用户专属。命令:chown -R tomcat:tomcat /opt/tomcat && chmod -R 750 /opt/tomcat/conf /opt/tomcat/bin。/etc/systemd/system/tomcat.service),定义Tomcat的启动/停止脚本,设置开机自启,并通过systemctl命令管理服务。示例:[Unit]
Description=Apache Tomcat
After=network.target
[Service]
Type=forking
User=tomcat
Group=tomcat
Environment="CATALINA_HOME=/opt/tomcat"
ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/opt/tomcat/bin/shutdown.sh
Restart=on-failure
[Install]
WantedBy=multi-user.target
执行systemctl daemon-reload && systemctl enable tomcat && systemctl start tomcat启用服务。logging.properties文件,开启FINE或FINER级别日志,记录访问、错误和调试信息。重点监控catalina.out、localhost_access_log等日志文件,定期检查异常请求(如大量404、403错误)。tomcat-users.xml中,通过<Valve>标签限制管理控制台(如manager-gui)的访问IP。示例:<Role rolename="manager-gui"/>
<User username="admin" password="secure_pass" roles="manager-gui"/>
<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="192\.168\.1\.\d+" />
仅允许192.168.1.x网段的IP访问管理界面。catalina.sh中添加-security参数,启用Java安全管理器(SecurityManager),限制应用程序的权限(如文件读写、网络访问),防止恶意代码破坏系统。示例:export CATALINA_OPTS="$CATALINA_OPTS -security"。