Linux下Tomcat安全配置清单
一 运行环境与最小权限
sudo useradd -m -U -r -s /usr/sbin/nologin tomcatsudo chown -R tomcat:tomcat /srv/tomcat/etc/systemd/system/tomcat.serviceUser=tomcat、Group=tomcat、UMask=0007、Restart=alwayssystemctl daemon-reload && systemctl enable --now tomcatfind /srv/tomcat -type d -exec chmod 750 {} \;find /srv/tomcat -type f -exec chmod 640 {} \;chmod 700 /srv/tomcat/bin/*.shsudo chcon -R -t httpd_sys_content_t /srv/tomcat/webappssudo chcon -R -t httpd_sys_rw_content_t /srv/tomcat/logs二 服务与连接器加固
webapps/manager与webapps/host-managerwebapps/manager/META-INF/context.xml添加:
<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127.0.0.1,192.168.1.0/24" />conf/tomcat-users.xml,仅保留必要角色(如manager-gui、manager-script、manager-status),并为账户设置强密码server.xml中注释或删除AJP Connector(典型端口8009)server.xml的<Server port="8005" shutdown="复杂随机字符串">,避免被恶意关闭<Host>内启用AccessLogValve,示例:
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log." suffix=".txt" pattern="%h %l %u %t "%r" %s %b %{Referer}i %{User-Agent}i" resolveHosts="false" />server.xml的Connector上设置server="自定义标识"lib/catalina.jar中org/apache/catalina/util/ServerInfo.properties,自定义server.info、server.numberprotocol="org.apache.coyote.http11.Http11NioProtocol",connectionTimeout="20000",maxThreads按规格调优,redirectPort="8443"。三 应用与Web层安全
conf/web.xml的DefaultServlet中设置
<init-param><param-name>listings</param-name><param-value>false</param-value></init-param>DefaultServlet中设置
<init-param><param-name>readonly</param-name><param-value>true</param-value></init-param><error-page><error-code>404</error-code><location>/404.html</location></error-page><error-page><error-code>500</error-code><location>/500.html</location></error-page>context.xml启用:useHttpOnly="true"web.xml会话配置:cookie-config中设置secure="true"(仅HTTPS传输)server.xml中<Host unpackWARs="false" autoDeploy="false" />webapps下的docs/ examples/ ROOT/等。四 加密通信与访问控制
openssl pkcs12 -export -in fullchain.pem -inkey privkey.pem -out /srv/tomcat/conf/keystore.p12 -name tomcat -CAfile chain.pem -password pass:YourPassserver.xml配置:
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" SSLEnabled="true" scheme="https" secure="true"><SSLHostConfig><Certificate certificateKeystoreFile="conf/keystore.p12" type="RSA" certificateKeystorePassword="YourPass"/></SSLHostConfig></Connector>server.xml的<Host>或管理应用的context.xml中使用RemoteAddrValve做二次白名单localhost:8080五 审计与运维检查
ps -ef | grep tomcat 确认进程非rootsystemctl show tomcat | grep User 与目录权限核对ss -lntp | grep -E '8005|8009|8080|8443'curl -I http://localhost:8080 检查响应头是否泄露版本(Server:字段)/manager/html应被拒绝tomcat-users.xml仅保留必要账户与最小角色localhost_access_log.*正常滚动,包含Referer/User-Agentcatalina.out与业务日志的异常堆栈与访问模式server.xml/web.xml/context.xml后先备份,滚动重启验证keystore.p12与配置并重启如需,我可以按你的Tomcat版本与目录结构,生成可直接替换的配置片段与systemd单元文件。