一 基础安全基线
sudo useradd -m -U -d /opt/tomcat -s /bin/false tomcatsudo chown -R tomcat:tomcat /opt/tomcatsudo find /opt/tomcat -type d -exec chmod 750 {} \;sudo find /opt/tomcat -type f -exec chmod 640 {} \;sudo chmod 700 /opt/tomcat/conf /opt/tomcat/binsudo firewall-cmd --permanent --add-port=8080/tcp && sudo firewall-cmd --reload二 服务化与最小攻击面
/etc/systemd/system/tomcat.servicesudo systemctl daemon-reload && sudo systemctl enable --now tomcatrm -rf /opt/tomcat/webapps/{manager,host-manager}conf/tomcat-users.xml 仅保留必要角色并使用强密码webapps/manager/META-INF/context.xml 增加来源限制:
<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127.0.0.1,192.168.1.0/24"/>server.xml 的 <Server port="8005" shutdown="复杂随机字符串"><Server port="-1" shutdown="SHUTDOWN"><!-- <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> -->webapps 下示例应用与文档unpackWARs="false" autoDeploy="false" reloadable="false"(仅在维护窗口手动部署)三 连接器与协议安全
<Connector> 增加 server="APP Srv 1.0"<Connector port="8080" protocol="org.apache.coyote.http11.Http11Nio2Protocol" connectionTimeout="20000" redirectPort="8443" server="APP Srv 1.0" enableLookups="false" maxPostSize="10485760" compression="on" compressionMinSize="2048" compressableMimeType="text/html,text/xml,text/plain,text/css,text/javascript,application/javascript" URIEncoding="UTF-8"/>openssl pkcs12 -export -in fullchain.pem -inkey privkey.pem -out /opt/tomcat/conf/keystore.p12 -name tomcat -CAfile chain.pem -caname root -password pass:YourP12Passserver.xml 连接器:
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true" scheme="https" secure="true"><SSLHostConfig><Certificate certificateKeystoreFile="conf/keystore.p12" type="RSA" certificateKeystorePassword="YourP12Pass"/></SSLHostConfig></Connector>四 应用与运行时安全
lib/catalina.jar 中的 org/apache/catalina/util/ServerInfo.properties:
server.info=APP Srv 1.0、server.number=1.0.0web.xml 或框架层设置安全 Cookie 属性:HttpOnly、Secure(仅 HTTPS)、SameSite=Strict/LaxJAVA_OPTS="-Xms512m -Xmx1024m -XX:+UseG1GC"/var/www/app),分别由不同系统用户拥有,降低 WebShell 提权影响面五 审计与持续维护
tail -f /opt/tomcat/logs/catalina.outconf/、webapps/、bin/stop/start/restart,避免频繁 reloadable 导致文件句柄与类加载异常