項目中需要對安全問題引起足夠的重視,比如下列tomcat的安全問題容易被忽略:
server.xml默認有下面一行:
<Server port="8005" shutdown="SHUTDOWN">
這樣允許任何人只要telnet到服務(wù)器的8005端口,輸入"SHUTDOWN",然后回車,服務(wù)器立即就被關(guān)掉了。
從安全的角度上考慮,我們需要把這個shutdown指令改成一個別人不容易猜測的字符串。
例如修改如下:
<Server port="8006" shutdown="lizongbo">,這樣就只有在telnet到8006,并且輸入"lizongbo"才能夠關(guān)閉Tomcat.
注意:這個修改不影響shutdown.bat的執(zhí)行。運行shutdown.bat一樣可以關(guān)閉服務(wù)器。
參考Tomcat安全文檔英文鏈接:http://jakarta.apache.org/tomcat/faq/security.html#8005
還有兩個問題需要注意:
1、 對于tomcat3.1中,屏蔽目錄文件自動列出的方法是什么?
缺省情況下,如果你訪問tomcat下的一個web應(yīng)用,那么如果你輸入的是一個目錄名,而且該目錄下沒有一個可用的welcome文件,那么tomcat會將該目錄下的所有文件列出來,如果你想屏蔽這個缺省行為,那么可以修改conf/web.xml文件,將其中的:
<servlet>
<servlet-name>default</servlet-name>
<servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>listings</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
修改為:
<servlet>
<servlet-name>default</servlet-name>
<servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>listings</param-name>
<param-value>false</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
2、 如何讓Tomcat記錄客戶端的訪問日志
下面是Tomcat相關(guān)手冊中的介紹:
以下是引用來自 的內(nèi)容:
Valve (功能與Logger差不多,其prefix和suffix屬性解釋和Logger 中的一樣) className 指定Valve使用的類名,
如用org.apache.catalina.valves.AccessLogValve類可以記錄應(yīng)用程序的訪問信息 directory 指定log文件存放
的位置 pattern 有兩個值,common方式記錄遠程主機名或ip地址,用戶名,日期,第一行請求的字符串,HTTP響
應(yīng)代碼,發(fā)送的字節(jié)數(shù)。combined方式比common方式記錄的值更多
所以需要完成的步驟:
1。修改Tomcat的conf/server.xml文件。
2。加上Valve節(jié)點到server.xml文件中,和您目前使用的Connector的節(jié)點平級。
如:<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="e:\trs\trscds\tomcat\logs" pattern="combined"/>
3。重新啟動您的Tomcat
4。有用戶在訪問的時候,在指定的log目錄下面會生成一個access_log文件(每天一個)。
上述的步驟是以Tomcat4.x為例。(可能會影響性能,不推薦大家使用)。
還有一個問題:需要處理好Tomcat管理臺的安全。
Tomcat管理臺的應(yīng)用文件,默認在{Tomcat安裝目錄}\server\webapps下,有admin和manager兩個應(yīng)用。
其用戶密碼,在{Tomcat安裝目錄}\conf/tomcat-users.xml中定義。在{Tomcat安裝目錄}\webapps下
admin.xml和manager.xml文件定義了可以通過訪問/admin和/manager進入。
默認情況下,完全可以登錄tomcat管理臺,造成嚴重安全問題
檢測辦法:用IE打開鏈接http://[IP]:[Port]/admin,以用戶名admin,密碼為空登錄,如果成功,
說明存在問題。
解決辦法:可以刪除{Tomcat安裝目錄}\webapps下admin.xml和manager.xml文件,或者去掉用戶密
碼,也可以刪除應(yīng)用文件。
我們一個用戶提到如果找不到網(wǎng)頁即出現(xiàn)404錯誤,會顯示服務(wù)器版本號,服務(wù)器配置也一目了然,
為了避免這種情況,希望自定義設(shè)置錯誤頁面。
設(shè)置如下:
1、將附件的index.htm文件拷貝至\webapps\ROOT目錄內(nèi),刪除或改名原來的index.jsp文件。
2、用記事本打開\conf\web.xml文件,在文件的倒數(shù)第二行(</web-app>一行之前)加入以下內(nèi)容:
<error-page>
<error-code>404</error-code>
<location>/index.htm</location>
</error-page>