CentOS下Tomcat安全设置指南
/path/to/tomcat/webapps下所有默认应用(如docs、examples、manager、host-manager、ROOT),避免恶意代码利用默认页面入侵。rm -rf /path/to/tomcat/webapps/*
conf/tomcat-users.xml中的所有用户定义,防止未授权访问管理界面。<!-- <tomcat-users>...</tomcat-users> -->
conf/server.xml中的Connector节点,添加server属性,掩盖Tomcat版本,降低针对性攻击风险。<Connector port="8080" protocol="HTTP/1.1" server="CustomServer/1.0" ... />
tomcat)运行Tomcat,避免权限过高导致系统受损。sudo useradd -r -m -d /opt/tomcat -s /sbin/nologin tomcat
sudo passwd tomcat
tomcat用户,限制访问权限。sudo chown -R tomcat:tomcat /opt/tomcat
sudo chmod -R 750 /opt/tomcat/bin # 仅所有者可执行
sudo chmod -R 755 /opt/tomcat/webapps # 允许公众读取应用目录
conf/tomcat-users.xml中仅添加必要角色(如manager-gui仅允许本地访问),避免过度授权。<tomcat-users>
<role rolename="manager-gui"/>
<user username="admin" password="StrongPassword123!" roles="manager-gui"/>
</tomcat-users>
systemd服务文件确保Tomcat以tomcat用户身份运行(避免root权限漏洞)。/etc/systemd/system/tomcat.service:[Service]
User=tomcat
Group=tomcat
ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/opt/tomcat/bin/shutdown.sh
重载并启动服务:sudo systemctl daemon-reload
sudo systemctl enable tomcat
sudo systemctl start tomcat
firewalld仅允许必要端口(如8080/HTTP、8443/HTTPS),拒绝其他端口访问。sudo firewall-cmd --permanent --zone=public --add-port=8080/tcp
sudo firewall-cmd --permanent --zone=public --add-port=8443/tcp
sudo firewall-cmd --reload
server.xml的Host节点添加remoteAddr属性,仅允许特定IP访问管理页面(如192.168.1.100)。<Host name="localhost" appBase="webapps" remoteAddr="192.168.1.100">
server.xml中的Host节点,禁用自动部署,防止恶意WAR文件上传执行。<Host name="localhost" appBase="webapps" unpackWARs="false" autoDeploy="false">
context.xml中配置会话Cookie属性,防止会话劫持。<Context sessionCookieHttpOnly="true" sessionCookieSecure="true" sessionCookiePath="/app">
server.xml添加HTTPS连接器,强制加密传输。<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
SSLEnabled="true" scheme="https" secure="true"
keystoreFile="/etc/letsencrypt/live/yourdomain.com/keystore.jks"
keystorePass="your_keystore_password"/>
sudo chcon -R -t httpd_sys_content_t /opt/tomcat/webapps
sudo chcon -R -t httpd_sys_rw_content_t /opt/tomcat/logs
sudo setsebool -P httpd_can_network_connect 1
yum update tomcat)和CentOS系统最新,及时修复安全漏洞。logs/catalina.out和logs/localhost_access_log.*.txt,识别异常访问(如大量404请求、未授权登录尝试)。/etc/nginx/conf.d/tomcat.conf):server {
listen 80;
server_name yourdomain.com;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
conf/server.xml中未使用的Connector(如AJP协议),减少攻击面。