1. 系統與Tomcat基礎準備
sudo apt update && sudo apt upgrade
確保系統軟件包最新;使用sudo apt install tomcat9 tomcat9-admin
安裝Tomcat及管理組件(如tomcat9-admin
包含管理界面所需模塊)。sudo groupadd tomcat
創建tomcat
組,再用sudo useradd -s /bin/false -g tomcat -d /opt/tomcat tomcat
創建系統用戶(/bin/false
禁用登錄shell,/opt/tomcat
為Tomcat安裝目錄),避免以root
身份運行Tomcat。tomcat
用戶及組,限制訪問范圍:sudo chown -R tomcat:tomcat /opt/tomcat /var/lib/tomcat9 /var/log/tomcat9 /etc/tomcat9
sudo chmod -R 750 /opt/tomcat # 確保目錄僅所有者可寫
2. 核心安全配置(server.xml)
/etc/tomcat9/server.xml
(或/opt/tomcat/conf/server.xml
),將HTTP連接器端口從8080
改為非標準端口(如1234
),HTTPS端口從8443
改為8443
(或其他),降低端口掃描風險:<Connector port="1234" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" SSLEnabled="true" scheme="https" secure="true" keystoreFile="/path/to/keystore.jks" keystorePass="yourPassword" />
<Connector>
標簽中添加server="Custom Server"
屬性,掩蓋Tomcat版本,減少針對性攻擊:<Connector ... server="Custom Server" />
server.xml
中的AJP連接器(默認端口8009
),避免不必要的協議暴露:<!-- 注釋或刪除以下內容 -->
<!-- <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> -->
3. 管理界面安全強化
sudo rm -rf /var/lib/tomcat9/webapps/manager /var/lib/tomcat9/webapps/host-manager
刪除manager
(遠程管理)和host-manager
(主機管理)應用,避免未授權訪問。/etc/tomcat9/tomcat-users.xml
,添加具有manager-gui
(遠程管理)和admin-gui
(全局管理)角色的用戶,設置強密碼(如包含大小寫字母、數字和特殊字符):<tomcat-users>
<role rolename="manager-gui"/>
<role rolename="admin-gui"/>
<user username="secureAdmin" password="YourSecurePassword123!" roles="manager-gui,admin-gui"/>
</tomcat-users>
server.xml
的<Valve>
標簽限制IP訪問(如僅允許公司IP):<Context path="/manager" privileged="true">
<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="192\.168\.1\.\d+" />
</Context>
4. SSL/TLS加密配置
sudo apt install certbot python3-certbot-nginx
),或通過OpenSSL生成自簽名證書(僅測試用):sudo keytool -genkey -alias tomcat -keyalg RSA -keystore /etc/tomcat9/keystore.jks -validity 365 -keysize 2048
server.xml
中添加SSL連接器,啟用HTTPS并強制跳轉:<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" SSLEnabled="true" scheme="https" secure="true" keystoreFile="/etc/tomcat9/keystore.jks" keystorePass="yourKeystorePassword" clientAuth="false" sslProtocol="TLS" />
web.xml
中添加安全約束,要求敏感頁面(如/manager
)使用HTTPS:<security-constraint>
<web-resource-collection>
<web-resource-name>Protected Context</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
5. 防火墻配置(UFW)
sudo apt install ufw
安裝,然后啟用防火墻:sudo ufw enable
。1234
)和HTTPS(8443
)端口:sudo ufw allow 1234/tcp
sudo ufw allow 8443/tcp
192.168.1.100
),提升安全性:sudo ufw allow from 192.168.1.100 to any port 1234/tcp
sudo ufw allow from 192.168.1.100 to any port 8443/tcp
sudo ufw enable
激活規則,通過sudo ufw status
驗證配置。6. 日志與監控
/etc/tomcat9/logging.properties
,調整日志級別為FINE
或FINER
,記錄更多操作細節(如用戶登錄、請求響應):org.apache.catalina.level = FINE
com.example.webapp.level = FINER
logwatch
工具每日發送日志摘要(包含Tomcat日志),或通過sudo tail -f /var/log/tomcat9/catalina.out
實時監控異常(如大量失敗登錄嘗試、非法URL訪問)。7. 定期更新與維護
sudo apt update && sudo apt upgrade tomcat9
,安裝最新安全補?。ㄈ缧迯鸵阎┒矗?。/opt/tomcat/work
(編譯后的JSP文件)和/tmp
(臨時上傳文件),避免敏感信息泄露:sudo rm -rf /opt/tomcat/work/Catalina/*
sudo rm -rf /tmp/tomcat_*