Tomcat中間件安全基線配置規(guī)范
本篇文章較長,但請大家耐心看完,畢竟是小編費勁心思總結的,而且小編相信這篇肯定對大家是有一點幫助的;好了,不打擾大家了,耐心看吧!
1. 用戶賬號與口令安全
修改默認賬號口令
修改默認口令或禁用默認賬號
參考配置操作
編輯tomcat/conf/tomcat-user.xml配置文件,修改用戶角色權限
授權tomcat具有遠程管理權限:
- <user username=”tomcat” password=”強壯的口令”
- roles=”admin,manager”>
補充操作說明
“強壯的口令”要求為口令長度至少8位,并包括數(shù)字、小寫字母、大寫字母和特殊符號4類中至少2類。
Tomcat 4.x和5.x版本用戶角色分為:role1,tomcat,admin,manager四種。
- role1:具有讀權限;
- tomcat:具有讀和運行權限;
- admin:具有讀、運行和寫權限;
- manager:具有遠程管理權限。
Tomcat 6.0.18版本只有admin和manager兩種用戶角色,且admin用戶具有manager管理權限。
Tomcat 4.1.37和5.5.27版本及以后發(fā)行的版本默認除admin用戶外其他用戶都不具有manager管理權限。
判定條件
修改后的賬號可以登錄Tomcat Web服務器為正常。
檢測操作
訪問http://ip:8080/manager/html管理頁面,進行Tomcat服務器管理。
2.優(yōu)化WEB服務賬號
設置shutdown為復雜的字符串,防止惡意用戶telnet到8005端口后,發(fā)送SHUTDOWN命令停止Tomcat服務。
參考配置操作
打開Tomcat_home/conf/server.xml,設置shutdown為復雜的字符串。
<Server port="8005" shutdown="復雜字符不要包括特殊字符,如:冒號、分號、引號等。
判定條件
查看Tomcat_home/conf/server.xml配置文件
<Server port="8005" shutdown="復雜的字符串">
3.日志與審計
增加訪問日志審計,記錄錯誤信息和訪問信息。
參考配置操作
編輯server.xml配置文件,在
將以下內(nèi)容的注釋標記< ! -- -- >取消
- <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 to use 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、訪問方式、發(fā)送字節(jié)數(shù)、本地接收端口、訪問URL地址等相關信息在日志文件中
resolveHosts:值為true時,tomcat會將這個服務器IP地址通過DNS轉換為主機名,如果是false,就直接寫服務器IP地址
判定條件
查看logs目錄中相關日志文件內(nèi)容,記錄完整
檢測操作
查看localhost_access_log.2018-10-22.log中相關日志記錄
4.安全防護
隱藏Tomcat顯示版本信息
參考配置操作
a.解壓catalina.jar
- cd {Tomcat_home}/server/lib 【4.x】
- cd {tomcat_home}/lib【5.5以上】
- jar xf catalina.jar org/apache/catalina/util/ServerInfo.properties
b.修改server.info行,修改相關的版本信息:server.info=Apache Tomcat
c.重新壓縮catalina.jar
- jar uf catalina.jar org/apache/catalina/util/ServerInfo.properties
判定條件
Telent ip :80 端口
執(zhí)行get head查看是否包含版本信息
5.禁止目錄遍歷
修改參數(shù)文件,禁止目錄遍歷。
參考配置操作
(1) 編輯tomcat/conf/web.xml配置文件,
- <init-param>
- <param-name>listings</param-name>
- <param-value>true</param-value>
- </init-param>
把true改成false
(2)重新啟動tomcat服務
判定條件
當WEB目錄中沒有默認首頁如index.html,index.jsp等文件時,不會列出目錄內(nèi)容
檢測操作
直接訪問http://ip:8800/webadd
6.錯誤信息自定義
修改錯誤文件信息內(nèi)容,防止信息泄漏
參考配置操作
(1)配置tomcat/conf/web.xml文件:
在***一行之前加入以下內(nèi)容:
- <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>
第二個<error-page></error-page>
- <%@ page errorPage="/error.jsp" %>
典型的error.jsp錯誤頁面的程序?qū)懛ㄈ缦?
- <%@ 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>
當出現(xiàn)NullPointerException異常時tomcat會把網(wǎng)頁導入到error.jsp,且會打印出出錯信息。
(2)重新啟動tomcat服務
判定條件
指向指定錯誤頁面
檢測操作
URL地址欄中輸入http://ip:8800/manager
7.更改默認管理端口
更改tomcat服務器默認端口
參考配置操作
(1)修改tomcat/conf/server.xml配置文件,更改默認管理端口到8800
- <Connector
- port="8800" maxHttpHeaderSize="8192" maxThreads="150"
- minSpareThreads="25" maxSpareThreads="75"、
- enableLookups="false" redirectPort="8443" acceptCount="100"
- connectionTimeout="300" disableUploadTimeout="true" />
(2)重啟tomcat服務
補充操作說明
判定條件
使用8800端口登陸頁面成功
檢測操作
登陸http://ip:8800
8.超時自動登出
對于具備字符交互界面的設備,應支持定時賬戶自動登出。登出后用戶需再次登錄才能進入系統(tǒng)。
參考配置操作
編輯tomcat/conf/server.xml配置文件,修改為30秒
- <Connector
- port="8080" maxHttpHeaderSize="8192" maxThreads="150"
- minSpareThreads="25" maxSpareThreads="75"、
- enableLookups="false" redirectPort="8443" acceptCount="100"
- connectionTimeout="300" disableUploadTimeout="true" />
判定條件
30秒自動登出。
檢測操作
登陸tomcat默認頁面http://ip:8080/manager/html ,使用管理賬號登陸
9.通訊加密
對于通過HTTP協(xié)議進行遠程維護的設備,設備應支持使用HTTPS等加密協(xié)議。
參考配置操作
(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"
- clientAuth="false" keystoreFile="/path/to/my/.keystore"
- keystorePass="runway" protocol="TLS"/>
其中keystorePass的值為生成keystore時輸入的密碼
(3)重新啟動tomcat服務
判定條件
使用https方式登陸tomcat服務器頁面,登陸成功
檢測操作
使用https方式登陸tomcat服務器管理頁面