首先更新系統軟件源,安裝Tomcat及OpenJDK(Tomcat依賴Java環境):
sudo apt update
sudo apt install tomcat9 tomcat9-admin default-jdk
安裝完成后,Tomcat會自動啟動(默認端口8080),可通過curl http://localhost:8080驗證。
為Tomcat創建專用系統用戶(避免以root身份運行),并設置目錄權限:
# 創建tomcat用戶組及用戶(禁用登錄shell,指定主目錄)
sudo groupadd tomcat
sudo useradd -s /bin/false -g tomcat -d /opt/tomcat tomcat
# 更改Tomcat目錄所有權(假設安裝在/opt/tomcat)
sudo chown -R tomcat:tomcat /opt/tomcat
# 配置Tomcat服務以tomcat用戶運行
sudo systemctl edit --full tomcat9.service
在[Service] section中添加/修改以下行:
User=tomcat
Group=tomcat
UMask=0007 # 限制文件權限為750(所有者可讀寫執行,組可讀執行,其他無權限)
保存后重新加載systemd并重啟Tomcat:
sudo systemctl daemon-reload
sudo systemctl restart tomcat9
默認頁面和示例應用可能暴露服務器信息,需刪除:
# 進入webapps目錄
cd /opt/tomcat/webapps
# 刪除默認頁面(ROOT目錄下的index.jsp等)
rm -rf ROOT/*
# 刪除docs、examples等示例應用
rm -rf docs examples
修改server.xml(位于/opt/tomcat/conf/)中的HTTP連接器端口(如改為1234):
<Connector port="1234" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
若需啟用HTTPS,添加SSL連接器(需提前準備keystore文件):
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true"
scheme="https" secure="true"
keystoreFile="/path/to/your/keystore.jks"
keystorePass="your_keystore_password"
clientAuth="false" sslProtocol="TLS" />
修改server.xml中的Connector標簽,添加server屬性:
<Connector port="1234" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
server="CustomSecureServer" />
此操作會隱藏Tomcat版本號,減少針對性攻擊風險。
編輯tomcat-users.xml(位于/opt/tomcat/conf/),添加管理角色及用戶(替換為強密碼):
<tomcat-users>
<role rolename="manager-gui"/> <!-- 管理界面訪問權限 -->
<role rolename="admin-gui"/> <!-- 管理員權限 -->
<user username="secureAdmin" password="YourSecurePassword123!" roles="manager-gui,admin-gui"/>
</tomcat-users>
在server.xml的<Host>標簽內添加Valve,僅允許特定IP訪問管理界面:
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="192\.168\.1\.\d+|127\.0\.0\.1" <!-- 允許本地及內網IP -->
deny=""/>
使用ufw(Uncomplicated Firewall)限制訪問Tomcat端口:
# 安裝ufw(若未安裝)
sudo apt install ufw
# 允許Tomcat HTTP/HTTPS端口
sudo ufw allow 1234/tcp # 替換為你的HTTP端口
sudo ufw allow 8443/tcp # 替換為你的HTTPS端口
# 允許SSH(用于遠程管理)
sudo ufw allow 22/tcp
# 啟用ufw
sudo ufw enable
# 驗證規則
sudo ufw status
輸出應顯示上述端口已允許,其他端口默認拒絕。
使用keytool生成keystore文件(有效期365天):
keytool -genkey -alias tomcat -keyalg RSA -keystore /opt/tomcat/keystore.jks
-validity 365 -keysize 2048
按提示輸入信息(如姓名、組織等),并設置keystore密碼。
編輯server.xml,添加SSL連接器(參考步驟3.2),并確保keystoreFile路徑正確。
通過Certbot獲取Let’s Encrypt證書:
sudo apt install certbot python3-certbot-nginx # 若使用Nginx反向隧道
sudo certbot certonly --standalone -d yourdomain.com
將生成的證書(/etc/letsencrypt/live/yourdomain.com/fullchain.pem)和私鑰(/etc/letsencrypt/live/yourdomain.com/privkey.pem)配置到Tomcat的SSL連接器中。
使用logwatch定期分析Tomcat日志(每日發送郵件報告):
sudo apt install logwatch
sudo logwatch --service tomcat --output mail --mailto your-email@example.com
或手動查看日志:
tail -f /opt/tomcat/logs/catalina.out # 實時查看應用日志
tail -f /opt/tomcat/logs/localhost_access_log.*.txt # 查看訪問日志
定期檢查Tomcat更新,修復安全漏洞:
sudo apt update
sudo apt upgrade tomcat9
更新前備份配置文件(/opt/tomcat/conf/)和web應用。
通過以上步驟,可顯著提升Debian上Tomcat的安全性,防范常見攻擊(如未授權訪問、版本探測、數據泄露等)。需根據實際環境調整端口、IP限制及證書配置。