Ubuntu中Tomcat安全設置關鍵措施
Tomcat不應以root用戶身份運行,否則一旦被入侵,攻擊者可獲得系統最高權限。需創建專用低權限用戶(如tomcat),并將其設置為Tomcat的所有者和運行用戶:
sudo useradd -m -d /opt/tomcat -U -s /bin/false tomcat # 創建用戶及同組
sudo chown -R tomcat:tomcat /opt/tomcat # 賦予目錄所有權
修改Tomcat啟動腳本(如startup.sh或catalina.sh),確保以tomcat用戶身份啟動服務。
Tomcat默認安裝包含docs、examples、ROOT、host-manager、manager等目錄,這些目錄可能暴露敏感信息或成為攻擊入口。安裝完成后應立即刪除:
rm -rf /opt/tomcat/webapps/*
若需保留部分功能(如manager),需嚴格限制訪問權限(見下文“限制管理界面訪問”)。
自動部署(autoDeploy="true")會自動解壓上傳的WAR文件,易被惡意利用。需修改server.xml中的Host配置,關閉自動部署:
<Host name="localhost" appBase="/opt/tomcat/webapps" unpackWARs="false" autoDeploy="false">
同時關閉deployOnStartup屬性(默認true),避免服務器啟動時自動部署。
攻擊者可通過版本信息識別已知漏洞。修改server.xml中的Connector配置,添加server字段覆蓋默認版本:
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" server="Custom Server" />
或修改catalina.jar中的ServerInfo.properties文件(需解壓jar包編輯)。
使用ufw(Ubuntu防火墻)僅允許必要端口(如HTTP的8080、HTTPS的8443、AJP的8009)對外開放,阻止非法訪問:
sudo ufw allow 8080/tcp # 允許HTTP訪問
sudo ufw allow 8443/tcp # 允許HTTPS訪問
sudo ufw allow 8009/tcp # 允許AJP訪問(若使用Apache反向代理可關閉)
sudo ufw enable # 啟用防火墻
若無需AJP協議,可直接注釋server.xml中的AJP連接器。
通過SSL/TLS證書啟用HTTPS,加密客戶端與服務器之間的數據傳輸,防止中間人攻擊。步驟如下:
keytool -genkeypair -alias tomcat -keyalg RSA -keystore /opt/tomcat/keystore.jks -validity 365
server.xml,添加HTTPS連接器:<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
SSLEnabled="true" scheme="https" secure="true"
keystoreFile="/opt/tomcat/keystore.jks"
keystorePass="your_keystore_password"
clientAuth="false" sslProtocol="TLS" />
Tomcat的manager和host-manager應用需嚴格限制訪問:
tomcat-users.xml,為用戶分配最小必要角色(如僅manager-gui,避免manager-script等高危角色):<tomcat-users>
<user username="admin" password="StrongPassword123!" roles="manager-gui"/>
</tomcat-users>
server.xml的Host或Context配置中添加address屬性,僅允許可信IP訪問:<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="192\.168\.1\.\d+" />
默認錯誤頁面(如404、500)可能暴露Tomcat版本、服務器路徑等信息。修改web.xml文件,自定義錯誤頁面:
<error-page>
<error-code>404</error-code>
<location>/error/404.html</location>
</error-page>
<error-page>
<error-code>500</error-code>
<location>/error/500.html</location>
</error-page>
將自定義頁面放置在webapps/ROOT/error/目錄下。
防止攻擊者通過目錄遍歷查看應用文件結構。在web.xml中添加以下配置,默認情況下Tomcat高版本已開啟:
<init-param>
<param-name>listings</param-name>
<param-value>false</param-value>
</init-param>
apt或官網下載)和JDK的最新穩定版本,修復已知漏洞。catalina.out、localhost_access_log等日志文件,使用工具(如fail2ban)檢測暴力破解行為。