CentOS中Tomcat安全配置方法
webapps目录下的所有默认应用(如docs、examples、manager等),防止恶意代码通过默认应用部署到服务器。命令:rm -rf /opt/tomcat/webapps/*(路径以实际安装目录为准)。conf/tomcat-users.xml中的所有用户和角色定义,避免未授权用户通过默认账户访问管理界面。conf/server.xml中的Connector节点,添加server属性(如server="MyAppServer/1.0"),隐藏Tomcat版本号,降低攻击者针对性利用漏洞的风险。tomcat)运行Tomcat,避免以root身份运行导致权限过高。命令:sudo useradd -r -m -d /opt/tomcat -s /bin/false tomcat
sudo chown -R tomcat:tomcat /opt/tomcat
conf/tomcat-users.xml,仅添加必要的用户及角色(如manager-gui用于管理界面、admin用于应用管理),并为每个角色分配最小权限。示例:<tomcat-users>
<role rolename="manager-gui"/>
<role rolename="admin-gui"/>
<user username="admin" password="StrongPassword123!" roles="manager-gui,admin-gui"/>
</tomcat-users>
sudo chcon -R -t httpd_sys_content_t /opt/tomcat
sudo chcon -R -t httpd_sys_rw_content_t /opt/tomcat/logs
server.xml中Connector的port属性(如将HTTP端口从8080改为8081,HTTPS从8443改为8444),避免使用默认端口被扫描工具快速识别。firewalld限制访问Tomcat端口的IP地址,仅允许可信IP访问。示例:sudo firewall-cmd --zone=public --add-port=8081/tcp --permanent # 允许修改后的HTTP端口
sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="8081" accept' # 仅允许特定IP
sudo firewall-cmd --reload
server.xml的Host节点中,设置unpackWARs="false"和autoDeploy="false",防止恶意WAR文件自动解压和部署。示例:<Host name="localhost" appBase="webapps" unpackWARs="false" autoDeploy="false">
webapps/yourapp/WEB-INF/web.xml,添加listings="false",防止目录结构泄露敏感文件。示例:<servlet>
<servlet-name>default</servlet-name>
<servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
<init-param>
<param-name>listings</param-name>
<param-value>false</param-value>
</init-param>
</servlet>
context.xml中,设置sessionCookieHttpOnly="true"(防止XSS窃取Cookie)、sessionCookieSecure="true"(仅通过HTTPS传输Cookie)。示例:<Context sessionCookieHttpOnly="true" sessionCookieSecure="true">
openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout /etc/pki/tls/private/tomcat.key -out /etc/pki/tls/certs/tomcat.crt
server.xml,添加Connector节点,启用HTTPS并指定证书路径。示例:<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
SSLEnabled="true" scheme="https" secure="true"
keystoreFile="/etc/pki/tls/certs/tomcat.crt"
keystorePass="yourKeystorePassword"/>
Systemd服务文件(/etc/systemd/system/tomcat.service)设置Tomcat以tomcat用户身份运行。示例[Service]部分:[Service]
User=tomcat
Group=tomcat
ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/opt/tomcat/bin/shutdown.sh
Restart=on-failure
conf/logging.properties,开启org.apache.catalina和org.apache.tomcat包的FINE级别日志,记录访问和操作详情,便于安全审计。tail或grep命令定期查看logs/catalina.out和logs/localhost_access_log.*.txt,监控异常访问(如频繁的404错误、可疑IP地址)。