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地址)。