CentOS下Tomcat安全管理清单
一 运行账户与最小权限
sudo useradd -s /bin/false -M -g tomcat tomcatsudo chown -R tomcat:tomcat /opt/tomcat/etc/systemd/system/tomcat.service 的 [Service] 中设置:
User=tomcat、Group=tomcatExecStart=/opt/tomcat/bin/startup.sh、ExecStop=/opt/tomcat/bin/shutdown.shRestart=on-failuresudo systemctl daemon-reload && sudo systemctl enable --now tomcatsudo chcon -R -t httpd_sys_content_t /opt/tomcat;日志目录可设为 httpd_sys_rw_content_t;必要时按需调整布尔值(如 tomcat_execmem)。二 最小化攻击面
webapps 下的 docs、examples、host-manager、manager、ROOT,仅保留业务 WAR。server.xml 的 Host 中设置 autoDeploy="false"、unpackWARs="false"。server.xml 中将 AJP Connector 端口设为 -1 或注释掉。server.xml 的 Connector 上设置 server="YourApp/1.0";必要时进一步处理 ServerInfo.properties 以彻底隐藏版本。conf/web.xml 的 default servlet 中设置 <init-param><param-name>listings</param-name><param-value>false</param-value></init-param>。三 网络与端口加固
sudo firewall-cmd --permanent --zone=public --add-port=8080/tcp && sudo firewall-cmd --reload;生产建议仅开放 443/8443,将 8080 限制为内网访问或关闭。META-INF/context.xml,使用 RemoteAddrValve 仅允许内网或跳板机网段,例如:
<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127\.\d+\.\d+\.\d+|::1|192\.168\.\d+\.\d+|10\.\d+\.\d+\.\d+" />WEB-INF/web.xml 增加安全约束,限制 PUT、DELETE、TRACE、OPTIONS 等方法对外暴露。四 加密通信与证书部署
keytool -importkeystore 从 PFX 转换。<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true">
<SSLHostConfig>
<Certificate certificateKeystoreFile="/opt/tomcat/conf/yourdomain.pfx"
certificateKeystorePassword="YourPassword"
certificateKeystoreType="PKCS12" />
</SSLHostConfig>
</Connector>
如需同时保留 HTTP,将 8080 的 redirectPort 指向 443,或在应用层做跳转。web.xml 最底部加入标准约束与 <security-constraint> 配置,或使用前置反向代理/负载均衡做 80→443 跳转)。五 认证授权与持续运维
conf/tomcat-users.xml 中仅保留必要角色(如 manager-gui、admin-gui),设置强密码并限制来源 IP;生产环境建议禁用或删除管理应用,改用企业 SSO/LDAP 集中认证。conf/context.xml 或应用 context.xml):<Realm className="org.apache.catalina.realm.JNDIRealm"
connectionURL="ldap://ldap.example.com:389"
userBase="ou=users,dc=example,dc=com"
userSearch="(uid={0})"
userSubtree="true"
roleBase="ou=roles,dc=example,dc=com"
roleName="cn"/>
Context 中启用 sessionCookieHttpOnly="true"、sessionCookieSecure="true",为关键路径设置会话超时与并发控制。logs/catalina.out、localhost_access_log.*,对异常 4xx/5xx、管理端访问、频繁失败登录进行告警;开启 GC/内存与线程监控。