Tomcat中間件安全基線配置規(guī)范
本篇文章較長(zhǎng),但請(qǐng)大家耐心看完,畢竟是小編費(fèi)勁心思總結(jié)的,而且小編相信這篇肯定對(duì)大家是有一點(diǎn)幫助的;好了,不打擾大家了,耐心看吧!
1. 用戶賬號(hào)與口令安全
修改默認(rèn)賬號(hào)口令
修改默認(rèn)口令或禁用默認(rèn)賬號(hào)
參考配置操作
編輯tomcat/conf/tomcat-user.xml配置文件,修改用戶角色權(quán)限
授權(quán)tomcat具有遠(yuǎn)程管理權(quán)限:
- <user username=”tomcat” password=”強(qiáng)壯的口令”
- roles=”admin,manager”>
補(bǔ)充操作說(shuō)明
“強(qiáng)壯的口令”要求為口令長(zhǎng)度至少8位,并包括數(shù)字、小寫字母、大寫字母和特殊符號(hào)4類中至少2類。
Tomcat 4.x和5.x版本用戶角色分為:role1,tomcat,admin,manager四種。
- role1:具有讀權(quán)限;
- tomcat:具有讀和運(yùn)行權(quán)限;
- admin:具有讀、運(yùn)行和寫權(quán)限;
- manager:具有遠(yuǎn)程管理權(quán)限。
Tomcat 6.0.18版本只有admin和manager兩種用戶角色,且admin用戶具有manager管理權(quán)限。
Tomcat 4.1.37和5.5.27版本及以后發(fā)行的版本默認(rèn)除admin用戶外其他用戶都不具有manager管理權(quán)限。
判定條件
修改后的賬號(hào)可以登錄Tomcat Web服務(wù)器為正常。
檢測(cè)操作
訪問(wèn)http://ip:8080/manager/html管理頁(yè)面,進(jìn)行Tomcat服務(wù)器管理。
2.優(yōu)化WEB服務(wù)賬號(hào)
設(shè)置shutdown為復(fù)雜的字符串,防止惡意用戶telnet到8005端口后,發(fā)送SHUTDOWN命令停止Tomcat服務(wù)。
參考配置操作
打開Tomcat_home/conf/server.xml,設(shè)置shutdown為復(fù)雜的字符串。
<Server port="8005" shutdown="復(fù)雜字符不要包括特殊字符,如:冒號(hào)、分號(hào)、引號(hào)等。
判定條件
查看Tomcat_home/conf/server.xml配置文件
<Server port="8005" shutdown="復(fù)雜的字符串">
3.日志與審計(jì)
增加訪問(wèn)日志審計(jì),記錄錯(cuò)誤信息和訪問(wèn)信息。
參考配置操作
編輯server.xml配置文件,在
將以下內(nèi)容的注釋標(biāo)記< ! -- -- >取消
- <valve classname=”org.apache.catalina.valves.AccessLogValve”Directory=”logs” prefix=”localhost_access_log.” Suffix=”.txt”
- Pattern=”common” resloveHosts=”false”/>
補(bǔ)充操作說(shuō)明
- classname: This MUST be set to
- org.apache.catalina.valves.AccessLogValve to use the default access log valve. &<60
Directory:日志文件放置的目錄,在tomcat下面有個(gè)logs文件夾,那里面是專門放置日志文件的,也可以修改為其他路徑;
Prefix: 這個(gè)是日志文件的名稱前綴,日志名稱為localhost_access_log.2008-10-22.txt,前面的前綴就是這個(gè)localhost_access_log
Suffix: 文件后綴名
Pattern: common方式時(shí),將記錄訪問(wèn)源IP、本地服務(wù)器IP、記錄日志服務(wù)器IP、訪問(wèn)方式、發(fā)送字節(jié)數(shù)、本地接收端口、訪問(wèn)URL地址等相關(guān)信息在日志文件中
resolveHosts:值為true時(shí),tomcat會(huì)將這個(gè)服務(wù)器IP地址通過(guò)DNS轉(zhuǎn)換為主機(jī)名,如果是false,就直接寫服務(wù)器IP地址
判定條件
查看logs目錄中相關(guān)日志文件內(nèi)容,記錄完整
檢測(cè)操作
查看localhost_access_log.2018-10-22.log中相關(guān)日志記錄
4.安全防護(hù)
隱藏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行,修改相關(guān)的版本信息:server.info=Apache Tomcat
c.重新壓縮catalina.jar
- jar uf catalina.jar org/apache/catalina/util/ServerInfo.properties
判定條件
Telent ip :80 端口
執(zhí)行g(shù)et 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)重新啟動(dòng)tomcat服務(wù)
判定條件
當(dāng)WEB目錄中沒(méi)有默認(rèn)首頁(yè)如index.html,index.jsp等文件時(shí),不會(huì)列出目錄內(nèi)容
檢測(cè)操作
直接訪問(wèn)http://ip:8800/webadd
6.錯(cuò)誤信息自定義
修改錯(cuò)誤文件信息內(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>
***個(gè)<error-page></error-page>
第二個(gè)<error-page></error-page>
- <%@ page errorPage="/error.jsp" %>
典型的error.jsp錯(cuò)誤頁(yè)面的程序?qū)懛ㄈ缦?
- <%@ page contentType="text/html;charset=GB2312"%>
- <%@ page isErrorPage="true"%>
- <html>
- <head><title>錯(cuò)誤頁(yè)面</title></head>
- <body>出錯(cuò)了:</p> 錯(cuò)誤信息: <%= 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>
當(dāng)出現(xiàn)NullPointerException異常時(shí)tomcat會(huì)把網(wǎng)頁(yè)導(dǎo)入到error.jsp,且會(huì)打印出出錯(cuò)信息。
(2)重新啟動(dòng)tomcat服務(wù)
判定條件
指向指定錯(cuò)誤頁(yè)面
檢測(cè)操作
URL地址欄中輸入http://ip:8800/manager
7.更改默認(rèn)管理端口
更改tomcat服務(wù)器默認(rèn)端口
參考配置操作
(1)修改tomcat/conf/server.xml配置文件,更改默認(rèn)管理端口到8800
- <Connector
- port="8800" maxHttpHeaderSize="8192" maxThreads="150"
- minSpareThreads="25" maxSpareThreads="75"、
- enableLookups="false" redirectPort="8443" acceptCount="100"
- connectionTimeout="300" disableUploadTimeout="true" />
(2)重啟tomcat服務(wù)
補(bǔ)充操作說(shuō)明
判定條件
使用8800端口登陸頁(yè)面成功
檢測(cè)操作
登陸http://ip:8800
8.超時(shí)自動(dòng)登出
對(duì)于具備字符交互界面的設(shè)備,應(yīng)支持定時(shí)賬戶自動(dòng)登出。登出后用戶需再次登錄才能進(jìn)入系統(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秒自動(dòng)登出。
檢測(cè)操作
登陸tomcat默認(rèn)頁(yè)面http://ip:8080/manager/html ,使用管理賬號(hào)登陸
9.通訊加密
對(duì)于通過(guò)HTTP協(xié)議進(jìn)行遠(yuǎn)程維護(hù)的設(shè)備,設(shè)備應(yīng)支持使用HTTPS等加密協(xié)議。
參考配置操作
(1)使用JDK自帶的keytool工具生成一個(gè)證書
- $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時(shí)輸入的密碼
(3)重新啟動(dòng)tomcat服務(wù)
判定條件
使用https方式登陸tomcat服務(wù)器頁(yè)面,登陸成功
檢測(cè)操作
使用https方式登陸tomcat服務(wù)器管理頁(yè)面