Tomcat是一個(gè)世界上廣泛使用的支持JSP和servlets的Web服務(wù)器。它在JAVA運(yùn)行時(shí)上能夠很好地運(yùn)行并支持Web應(yīng)用部署。
運(yùn)行Tomcat很簡單;到Tomcat網(wǎng)站下載安裝程序就可進(jìn)行Tomcat的安裝。沒有人對(duì)Tomcat的危險(xiǎn)性有透徹的了解。Tomcat Web應(yīng)用程序的主要安全風(fēng)險(xiǎn)存在于以下方面:
Tomcat的JSP或JSP內(nèi)調(diào)用的bean能夠?qū)嵤┫铝懈唢L(fēng)險(xiǎn)性任務(wù):
·運(yùn)行一個(gè)Windows系統(tǒng)環(huán)境下的程序
·讀取任意文件夾內(nèi)任何文件的內(nèi)容
·刪除任意文件夾中的文件
·在任意文件夾內(nèi)創(chuàng)建新文件
安全配置建議如下:
一、 用戶權(quán)限
默認(rèn)安裝時(shí)Tomcat是以系統(tǒng)服務(wù)權(quán)限運(yùn)行的,因此缺省情況下幾乎所有的Web服務(wù)器的管理員都具有Administrator權(quán)限這和IIS不同,存在極大的安全隱患,所以安全設(shè)置首先從Tomcat服務(wù)降權(quán)開始。
1.1 首先創(chuàng)建一個(gè)普通用戶(最好是隸屬于guest組),為其設(shè)置密碼,將其密碼策略設(shè)置為“密碼永不過期”,比如創(chuàng)建一個(gè)用戶tomcat_leiliang。然后修改tomcat安裝文件夾的訪問權(quán)限,為tomcat_leiliang賦予tomcat文件夾的讀、寫、執(zhí)行的訪問權(quán)限,賦予tomecat_leiliang對(duì)WebApps文件夾的只讀訪問權(quán)限,如果某些Web應(yīng)用程序需要寫訪問權(quán)限,單獨(dú)為其授予對(duì)那個(gè)文件夾的寫訪問權(quán)限。
1.2 “開始→運(yùn)行”,輸入services.msc打開服務(wù)管理器,找到Apache Tomcat服務(wù),雙擊打開該服務(wù),在其實(shí)屬性窗口中點(diǎn)擊“登錄”選項(xiàng)卡,在登錄身份下選中“以此帳戶”,然后在文本框中輸入tomcat_leiliang和密碼,最后“確定”并重啟服務(wù)器。這樣tomcat就以tomcat_leiliang這個(gè)普通用戶的權(quán)限運(yùn)行。
1.3 有的時(shí)候,我們需要在命令行下運(yùn)行tomcat,這時(shí)候可以在命令下輸入命令runas /user:tomcat_leiliang cmd.exe回車后并輸入密碼,這樣就開啟一個(gè)tomcat_leiliang權(quán)限的命令行。最后定位到tomcat的bin文件夾下,輸入命令 tomcat6.exe即以tomcat_leiliang在命令行下啟動(dòng)tomcat。
二、更改端口:
2.1 tomcat的默認(rèn)端口是8080,攻擊者可以據(jù)此運(yùn)行掃描工具進(jìn)行端口掃描,從而獲取部署了tomcat的Web服務(wù)器然后實(shí)施攻擊。因此,為了安全期間我們可以修改此默認(rèn)端口。在tomcat的安裝路徑的conf目錄下找到server.xml文件,用記事本打開然后搜索8080找到對(duì)應(yīng)的字段,然后將8080自行修改為另外的數(shù)字。另外,需要說明的是connectionTimeout=”20000″是連接超時(shí),maxThreads=”150″ 是最大線程類似這樣的參數(shù)也可以根據(jù)需要進(jìn)行修改。
三、 禁止列表
3.1 如果瀏覽者可以在客戶端瀏覽Web目錄,那將會(huì)存在較大的安全隱患,因此我們要確認(rèn)tomcat的設(shè)置中禁止列目錄。設(shè)置文件是web.xml,也在conf目錄下。用記事本打開該文件,搜索init-param在其附近找到類似如下字段:
<init-param>
<param-name>listings</param-name>
<param-value>false</param-value>
</init-param>
確認(rèn)是false而不是true。
四、用戶管理
4.1 tomcat的后臺(tái)管理員為admin并且默認(rèn)為空密碼,安全期間我們需要修改該默認(rèn)的用戶名并為其設(shè)置健壯的密碼。其配置文件為tomcat- users.xml,用記事本打開該文件然后進(jìn)行修改。其中role標(biāo)簽表示其權(quán)限,manager說明是管理員權(quán)限;user標(biāo)簽表示后臺(tái)管理用戶,可以看到用戶名為admin,我們可以將其修改為一個(gè)陌生的用戶;可以看到password后面為空密碼,我們可以為其設(shè)置一個(gè)復(fù)雜的密碼。最后修改配置完成的tomcat-users.xml文件為:
<?xml version=’1.0′ encoding=’utf-8′?>
<tomcat-users>
<role rolename=”manager”/>
<role rolename=”admin”/>
<user username=”gslw” password=”test168″ roles=”admin,manager”/>
</tomcat-users>
五、 錯(cuò)誤頁面
5.1 打開web.xml文件,在最后一行的之前添加如下的語句:
<1– 無法連接到請(qǐng)求頁面 –>
<error-page>
<error-code>400</error-code>
<location>/400.htm</location>
</error-page>
<!– 訪問未被授權(quán)頁面 –>
<error-page>
<error-code>401</error-code>
<location>/401.htm</location>
</error-page>
<!– 訪問請(qǐng)求被站點(diǎn)拒絕 –>
<error-page>
<error-code>403</error-code>
<location>/403.htm</location>
</error-page>
<!– 未找到請(qǐng)求頁面 –>
<error-page>
<error-code>404</error-code>
<location>/404.htm</location>
</error-page>
<!– 服務(wù)器錯(cuò)誤導(dǎo)致頁面無法訪問 –>
<error-page>
<error-code>500</error-code>
<location>/500.htm</location>
</error-page>
<!– 錯(cuò)誤頁面需要放到webapps下root和manager目錄中 –>
六、隱藏后臺(tái)路徑
6.1 修改webapps目錄內(nèi)manage目錄名,如改為manager_XXX,則默認(rèn)無法找到該管理目錄
6.2 修改后手動(dòng)訪問的方法: http;//域名:端口號(hào)/manager名/html