原文作者:Akash Kava 譯者:misthill
Tomcat是一個世界上廣泛使用的支援JSP和servlets的Web伺服器。它在JAVA運行時上能夠很好地運行並支援Web應用部署。
運行Tomcat很簡單;到Tomcat網站下載安裝程式就可進行Tomcat的安裝。沒有人對Tomcat的危險性有透徹的瞭解。Tomcat Web應用程式的主要安全風險存在於以下方面:
Tomcat的JSP或JSP內調用的bean能夠實施下列高風險性任務:
·運行一個Windows系統內容下的程式
·讀取任意檔案夾內任何檔案的內容
·刪除任意檔案夾中的檔案
·在任意檔案夾內建立新檔案
雖然Tomcat確實提供了很多的安全性,但是由於以下因素而顯示了其漏洞:
1. 安裝後,Tomcat作為一個系統服務運行
2. 如果沒有將其作為系統服務運行,預設地幾乎所有Web伺服器管理員都是將其以Administrator許可權運行
這兩種方式都允許Java運行時訪問Windows系統下任意檔案夾中的任何檔案。預設情況下,Java運行時根據運行它的使用者授予安全許可權。當Tomcat以系統管理員身份或作為系統服務運行時,Java運行時取得了系統使用者或系統管理員所具有的全部許可權。這樣一來,Java運行時就取得了所有檔案夾中所有檔案的全部許可權。並且Servlets(JSP在運行過程中要轉換成Servlets)取得了同樣的許可權。所以Java代碼可以調用Java SDK中的檔案API列出檔案夾中的全部檔案,刪除任何檔案,最大的危險在於以系統許可權運行一個程式。當任一Servlets含有如下代碼:
Runtime rt = Runtime.getRuntime();
rt.exec("c://SomeDirectory//SomeUnsafeProgram.exe")
這就是最大的危險,並且很多人都未認識到這點。
確保Tomcat安全的途徑
首先,建立一個帳戶
1. 用"ITOMCAT_電腦名稱"建立一個普通使用者
2. 為其設定一個密碼
3. 保證"密碼永不到期"(Password Never Expires)被選中
修改Tomcat安裝資料夾的存取權限
1. 選定環境參數CATALINA_HOME或TOMCAT_HOME指向的Tomcat安裝資料夾。
2. 為"ITOMCAT_電腦名稱"使用者賦予讀、寫、執行的存取權限。
3. 為"ITOMCAT_電腦名稱"使用者賦予對WebApps檔案夾的唯讀存取權限。
4. 如果某些Web應用程式需要寫存取權限,單獨為其授予對那個檔案夾的寫存取權限。
當你需要Tomcat作為系統服務運行時,採取以下步驟:
1. 到"控制台",選擇"管理工具",然後選擇"服務"。
2. 找到Tomcat:比如Apache Tomcat.exe等等,開啟其"屬性"。
3. 選擇其"登入"(Log)標籤。
4. 選擇"以...登入"(Log ON Using)選項。
5. 鍵入建立的"ITOMCAT_電腦名稱"使用者作為使用者名稱。
6. 輸入密碼。
7. 重啟機器。
當你需要在一個DOS視窗下運行Tomcat時,採取以下步驟:
1. 在"開始"按鈕的"運行"框中鍵入CMD以開啟一個DOS視窗。
2. 鍵入"RunAs /user:ITOMCAT_電腦名稱 CMD.exe"命令。
3. 在詢問"ITOMCAT_電腦名稱"使用者的密碼時輸入設定的密碼。
4. 這將開啟一個新的DOS視窗。
5. 在新開的DOS視窗中,轉換到Tomcat的bin檔案夾內。
6. 鍵入"catalina run"命令。
7. 關閉第一個DOS視窗。
以"ITOMCAT_電腦名稱"使用者在新的DOS視窗內運行只授予該使用者相應的許可權;當你在這個新的DOS視窗中運行Tomcat時,它只取得了這個選定使用者的許可權。這樣Tomcat就安全了。