CentOS系统上Tomcat安全设置指南
/opt/tomcat/webapps/下的docs、examples、host-manager、manager、ROOT等默认目录(避免恶意代码利用默认应用漏洞部署)。conf/tomcat-users.xml中的所有用户和角色定义(防止未授权访问管理界面)。conf/server.xml中的Connector节点,添加server="CustomServer/1.0"属性(隐藏Tomcat版本,降低针对性攻击风险)。useradd -r -s /sbin/nologin tomcat创建无登录权限的系统用户,避免以root运行Tomcat(减少权限滥用风险)。/opt/tomcat)所有权设为tomcat:tomcat,运行目录(logs、temp、work)设为tomcat用户(确保进程只能访问必要文件)。sestatus确认SELinux状态,设置上下文chcon -R -t httpd_sys_content_t /opt/tomcat和chcon -R -t httpd_sys_rw_content_t /opt/tomcat/logs,并通过/etc/selinux/config持久化配置(避免SELinux阻止Tomcat正常运行)。/etc/systemd/system/tomcat.service),在[Service]部分添加User=tomcat和Group=tomcat,执行systemctl daemon-reload && systemctl restart tomcat(确保进程以低权限运行)。firewall-cmd开放Tomcat端口(默认8080),并限制访问IP(如仅允许可信IP访问管理端口):sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent # 开放8080端口 sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port port="8080" protocol="tcp" accept' --permanent # 限制IP段 sudo firewall-cmd --reload # 重载防火墙规则 conf/server.xml中的Host节点,设置autoDeploy="false"和unpackWARs="false"(防止恶意WAR文件自动解压部署)。context.xml中添加sessionCookieHttpOnly="true"(防止XSS窃取Session)、sessionCookieSecure="true"(仅通过HTTPS传输Session),并重命名JSESSIONID(如<Context sessionCookieName="MYAPP_SESSION">)(降低会话劫持风险)。conf/web.xml,设置<param-name>listings</param-name><param-value>false</param-value>(防止目录结构泄露敏感文件)。certbot工具),或使用自签名证书(仅测试环境使用)。conf/server.xml,添加以下Connector节点(启用HTTPS,强制加密通信):<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true" scheme="https" secure="true" keystoreFile="/etc/pki/tls/certs/tomcat.keystore" # 证书路径 keystorePass="your_keystore_password" # 证书密码 clientAuth="false" sslProtocol="TLS" /> conf/tomcat-users.xml中添加用户时,使用复杂密码(包含大小写字母、数字、特殊字符),并为管理角色分配最小必要权限:<role rolename="admin-gui"/> <!-- 管理控制台权限 --> <role rolename="manager-gui"/> <!-- 应用管理权限 --> <user username="admin" password="ComplexPass123!" roles="admin-gui,manager-gui"/> conf/Catalina/localhost/manager.xml(或host-manager.xml),添加RemoteAddrValve限制访问来源(如仅允许本地或内网IP):<Context privileged="true" antiResourceLocking="false" docBase="${catalina.home}/webapps/manager"> <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127\.\d+\.\d+\.\d+|192\.168\.\d+\.\d+"/> <!-- 允许本地和内网IP --> </Context> conf/logging.properties中日志级别设置为FINE或INFO,记录访问日志(logs/localhost_access_log.*.txt)和错误日志(logs/catalina.out)。grep、awk等工具分析日志,监控异常活动(如频繁的登录失败、未授权访问尝试)。fail2ban工具监控Tomcat日志,自动封禁多次尝试失败的IP地址(如针对SSH或管理界面的暴力破解)。tomcat.apache.org)发布的安全公告,升级到最新稳定版本(修复已知漏洞)。java -version)为最新安全版本(如OpenJDK 17+),避免因组件漏洞导致的安全风险。