tomcat安全配置參考


0x01 基本配置

1 刪除默認目錄

     安裝完tomcat后,刪除$CATALINA_HOME/webapps下默認的所有目錄文件  rm -rf /srv/apache-tomcat/webapps/

2 隱藏tomcat版本信息

修改$CATALINA_HOME/conf/server.xml,在Connector節點添加server字段,示例如下
<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
               server="WVS1.1"
    <!-- A "Connector" using the shared thread pool-->

3 自定義錯誤頁面

修改tomcat/ conf/web.xml,自定義40x、50x等容錯頁面,防止信息泄露。
(1)配置tomcat/conf/web.xml文件:
在最后</web-app>一行之前加入以下內容:
<error-page> 
<error-code>404</error-code>
<location>/noFile.htm</location> 
</error-page>
……………
<error-page>
<exception-type>java.lang.NullPointerException</exception-type>
<location>/ error.jsp</location> 
</error-page>
       第一個<error-page></error-page>之間的配置實現了將404未找到jsp網頁的錯誤導向noFile.htm頁面,也可以用類似方法添加其多的錯誤代碼導向頁面,如403,500等。
          第二個<error-page></error-page>之間的配置實現了當jsp網頁出現java.lang.NullPointerException導常時,轉向error.jsp錯誤頁面,還需要在第個jsp網頁中加入以下內容:
<%@ page errorPage="/error.jsp" %>
典型的error.jsp錯誤頁面的程序寫法如下:
<%@ page contentType="text/html;charset=GB2312"%>
<%@ page isErrorPage="true"%>
<html>
<head><title>錯誤頁面</title></head>
<body>出錯了:</p> 錯誤信息: <%= exception.getMessage() %><br>
Stack Trace is : <pre><font color="red"><%
java.io.CharArrayWriter cw = new java.io.CharArrayWriter();
java.io.PrintWriter pw = new java.io.PrintWriter(cw,true);
exception.printStackTrace(pw);
out.println(cw.toString());
%></font></pre>
</body>
</html>
當出現NullPointerException異常時tomcat會把網頁導入到error.jsp,且會打印出出錯信息。

(2)重新啟動tomcat服務

 

4 更改tomcat服務器默認端口

1、參考配置操作
(1)修改tomcat/conf/server.xml配置文件,更改默認管理端口到8800
 <Connector
port="8888"  maxHttpHeaderSize="8192" maxThreads="150" 
minSpareThreads="25" maxSpareThreads="75"、
enableLookups="false" redirectPort="8443" acceptCount="100"
 connectionTimeout="300" disableUploadTimeout="true" />
(2)重啟tomcat服務
 2、補充操作說明

② 備注事項,登陸http://127.0.0.1:8888  ,進行驗證配置。

0X02 安全配置

1 用戶權限

      在服務器設備權限配置范圍內,根據我們的業務需要,配置其所需的最小權限。同時應刪除或鎖定與設備運行、維護等工作無關的賬號。例如admin, 666等。還有使用單獨的賬號允許,不能使用與系統賬號一樣的賬號密碼。
1、Tomcat 4.x和5.x版本用戶角色分為:role1,tomcat,admin,manager四種。
role1:具有讀權限;
tomcat:具有讀和運行權限;
admin:具有讀、運行和寫權限;
manager:具有遠程管理權限。
Tomcat 6.0.18版本只有admin和manager兩種用戶角色,且admin用戶具有manager管理權限。
2、Tomcat 4.1.37和5.5.27版本及以后發行的版本默認除admin用戶外其他用戶都不具有manager管理權限。
① 建議配置
編輯tomcat/conf/tomcat-user.xml配置文件,修改用戶角色權限 ,例如
<tomcat-users>
<!--
  <role rolename="tomcat"/>
  <role rolename="role1"/>
  <user username="tomcat" password="tomcat" roles="tomcat"/>
  <user username="both" password="tomcat" roles="tomcat,role1"/>
  <user username="role1" password="tomcat" roles="role1"/>
-->
</tomcat-users>
② 登陸http://ip:8080/manager/html頁面,使用tomcat賬號進行本地登錄,進行驗證配置。

2 口令安全要求

     對於采用靜態口令認證技術的設備,口令長度至少8位,並包括數字、小寫字母、大寫字母和特殊符號4類中至少2類。
① 建議配置
 在tomcat/conf/tomcat-user.xml配置文件中設置密碼
<user username=”root” password=”root123456” roles=”admin”>
② 備注事項
      檢查tomcat/conf/tomcat-user.xml配置文件中的帳號口令是否符合移動通過配置口令復雜度要求。
(1)人工檢查配置文件中帳號口令是否符合;
(2)使用tomcat弱口令掃描工具定期對Tomcat Web服務器進行遠程掃描,檢查是否存在弱口令帳號。

3 禁止列目錄(高版本默認已禁止)

① 建議配置
(1) 編輯tomcat/conf/web.xml配置文件, 注意原文件和下面的區別。
<init-param>
       <param-name>listings</param-name>
        <param-value>false</param-value>
    </init-param>
 (2)重新啟動tomcat服務
② 備注事項
當WEB目錄中沒有默認首頁如index.html,index.jsp等文件時,不會列出目錄內容,直接訪問http://ip:8800/webadd

4 定時賬戶自動登出

       對於類似web具備字符交互界面的設備,應支持定時賬戶自動登出。登出后用戶需再次登錄才能進入系統。

① 建議配置

編輯tomcat/conf/server.xml配置文件,修改為30秒
<Connector
port="8080"  maxHttpHeaderSize="8192" maxThreads="150" 
minSpareThreads="25" maxSpareThreads="75"、
enableLookups="false" redirectPort="8443" acceptCount="100"
 connectionTimeout="6000" disableUploadTimeout="true" />

② 備注事項

     登陸tomcat默認頁面http://ip:8080/manager/html ,使用管理賬號登陸,10分鍾無操作或者關閉瀏覽器自動退出。

5 啟用cookie的HttpOnly屬性

修改$CATALINA_HOME/conf/context.xml,添加<Context useHttpOnly="true">

配置cookie的secure屬性,在web.xml中sesion-config節點配置cooker-config,此配置只允許cookie在加密方式下傳輸。

    <session-config>
        <session-timeout>30</session-timeout>

<cookie-config> 

                              <secure> true</secure>

                          </cookie-config> 
    </session-config>

6 AJP端口管理

         AJP是為 Tomcat 與 HTTP 服務器之間通信而定制的協議,能提供較高的通信速度和效率。如果tomcat前端放的是apache的時候,會使用到AJP這個連接器。前端如果是由nginx做的反向代理的話可以不使用此連接器,因此需要注銷掉該連接器。

0x03 其他事項

1 日志記錄

      應配置日志功能,對用戶登錄進行記錄,記錄內容包括用戶登錄使用的賬號,登錄是否成功,登錄時間,以及遠程登錄時,用戶使用的IP地址。

 

① 建議配置

編輯server.xml配置文件,在<HOST>標簽中增加記錄日志功能
將以下內容的注釋標記< ! --    -- >取消
<valve classname=”org.apache.catalina.valves.AccessLogValve”
Directory=”logs” prefix=”localhost_access_log.” Suffix=”.txt”
Pattern=”common” resloveHosts=”false”/>

 

② 備注事項

classname:This MUST be set to

 org.apache.catalina.valves.AccessLogValve touse the default access log valve. &<60

Directory:日志文件放置的目錄,在tomcat下面有個logs文件夾,那里面是專門放置日志文件的,也可以修改為其他路徑;

Prefix: 這個是日志文件的名稱前綴,日志名稱為localhost_access_log.2008-10-22.txt,前面的前綴就是這個localhost_access_log

Suffix: 文件后綴名

Pattern: common方式時,將記錄訪問源IP、本地服務器IP、記錄日志服務器IP、訪問方式、發送字節數、本地接收端口、訪問URL地址等相關信息在日志文件中

resolveHosts:值為true時,tomcat會將這個服務器IP地址通過DNS轉換為主機名,如果是false,就直接寫服務器IP地址

2 HTTPS加密協議

① 建議配置
(1)使用JDK自帶的keytool工具生成一個證書
JAVA_HOME/bin/keytool  -genkey –alias tomcat –keyalg  RSA
-keystore /path/to/my/keystore
(2)修改tomcat/conf/server.xml配置文件,更改為使用https方式,增加如下行:
Connector classname=”org.apache.catalina.http.HttpConnector” 
port=”8443”  minProcessors=”5”  maxprocessors=”100” 
enableLookups=”true”  acceptCount=”10”  debug=”0”
scheme=”https” secure=”true” >
Factory classname=”org.apache.catalina.SSLServerSocketFactory”
clientAuth=”false” 
keystoreFile=”/path/to/my/keystore”  keystorePass=”runway”
protocol=”TLS”/>
/Connector>
其中keystorePass的值為生成keystore時輸入的密碼
(3)重新啟動tomcat服務

② 備注事項

     使用https方式登陸tomcat服務器頁面,如果登陸成功,證明配置成功;如果登陸失敗,證明配置失敗。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM