您好,登錄后才能下訂單哦!
Linux安全加固的中間件Tomcat怎么用,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
之前整理了關于主機系統的加固(Linux安全加固、Windows安全加固)。(其實我還是喜歡日靶機……)
接下來想整理下和探索下中間件或者web容器的加固,以及主流數據庫的加固。
先大概說下web的一些基礎東西。
一般的web訪問順序如下
web瀏覽器->web服務器(狹義)->web容器->應用服務器->數據庫服務器
所以哪一個環節出了問題,各種攻擊姿勢就來了。
業務上一般的選擇如下:
小項目,個人開發一般用tomcat。
linux系統一般使用jetty或apachehpptd
大型的項目會用jboss或webloigc,商業項目一般采用weblgoic,webshere,其他的還有jboss、glasshfish等
web服務器:
響應頁面,處理http協議
IIS、Apache、nginx、Lighttpd
web容器:
tomcat(擁有JSP容器,servlet容器),IIS(擁有ASP容器)
操作系統與應用程序之間的交互
應用服務器:
IIS,Tomcat,WebLogic,WebSphere即是應用服務器,又擁有web服務器的功能
中間件:為應用程序提供容器和服務
這次是tomcat的Linux加固。
tomcat是apache的一個中間件軟件,其可以提供jsp或者php的解析服務
加固依然分為身份鑒別、訪問控制、安全審計、資源控制和入侵防范5個方面。
大部分加固基于xml配置文件進行修改,也應根據實際需求制定方案。
尋找配置文件目錄,Linux可以用find /-name *tomcat* 即可。
注:皆為參考操作配置。
1. 刪除多余賬號:
修改tomcat配置文件/conf/tomcat-users.xml配置文件,刪除與工作無關的帳號。
例如tomcat1與運行、維護等工作無關,刪除帳號,注釋如下行即可:
<userusername=”tomcat1” password=”tomcat” roles=”admin”>.
口令要求:長度至少8位,并包括數字、小寫字母、大寫字母和特殊符號4類中至少3類。
修改tomcat配置文件/conf/tomcat-users.xml配置文件
<userusername=”usr1” password=”12345qwe” roles=”admin”>
要求usr1密碼必須滿足復雜度要求。
應為兩個或兩個以上即為合理
修改tomcat配置文件/conf/tomcat-users.xml配置文件,修改或添加帳號:
<userusername=”tomcat” password=” Tomcat!234” roles=”admin”>
ps -ef | greptomcat|grep -v "grep"
tomcat進程的啟動用戶應不為root
使用普通用戶啟動tomcat服務。
02
訪問控制
最小特權:
編輯tomcat配置文件/conf/tomcat-user.xml配置文件,在配置文件<tomcat-users>節點下,修改用戶角色權限,授權tomcat具有遠程管理權限:
1. tomcat6
<rolerolename="admin"/>
<rolerolename="manager"/>
<userusername="tomcat" password="Qwe12345"roles="admin,manager"/>
2. tomcat7
<rolerolename="admin-gui"/>
<rolerolename="manager-gui"/>
<userusername="admin" password="Qwe12345"roles="admin-gui,manager-gui"/>
03
安全審計
編輯tomcat配置文件server.xml配置文件,在<HOST>標簽中增加記錄日志功能,將以下內容的注釋標記<! -- -- >取消:
<valveclassname=”org.apache.catalina.valves.AccessLogValve”
Directory=”logs”prefix=”localhost_access_log.” Suffix=”.txt”
Pattern=”common”resloveHosts=”false”/>
classname: This MUSTbe set to org.apache.catalina.valves.AccessLogValve to use thedefault access log valve
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地址。
04
入侵防范
1. HTTP加密協議
cat/usr/apache-tomcat-5.5.23//conf/server.xml|sed '//d'|sed '/^$/d'|sed'//d'|sed '/^\s*$/d'|grep "keystoreFile"
(1)使用JDK自帶的keytool工具生成一個證書:
$JAVA_HOME/bin/keytool -genkey –alias tomcat –keyalg RSA -keystore/path/to/my/keystore
其中目錄:/path/to/my需要用戶自行創建。
(2)修改tomcat安裝目錄下/conf/server.xml配置文件,更改為使用HTTPS方式,增加如下行:
<Connectorclassname="org.apache.catalina.http.HttpConnector"
port="8443" protocol="HTTP/1.1" minProcessors="5"
SSLEnabled="true"
maxprocessors="100"
enableLookups="true" acceptCount="10" debug="0"
scheme="https"
Factory_classname="org.apache.catalina.SSLServerSocketFactory"
secure="true"
clientAuth="false"
keystoreFile="/path/to/my/keystore"
keystorePass="123qwe"
sslProtocol="TLS"/>
其中keystorePass的值為生成keystore時輸入的密碼。
(3)重新啟動tomcat服務
2. 禁用非法HTTP請求方法
編輯web.xml文件
查看org.apache.catalina.servlets.DefaultServlet是否存在如下配置:
<init-param>
<param-name>readonly</param-name>
<param-value>false</param-value>
</init-param>
將false修改為true。readonly參數默認是true,即不允許delete和put操作。
05
資源控制
1. 超時登出
單位是毫秒
/conf/server.xml配置文件,將connectionTimeout修改為30秒:
<Connectorport="8080" maxHttpHeaderSize="8192" maxThreads="150"minSpareThreads="25"maxSpareThreads="75"、enableLookups="false"redirectPort="8443" acceptCount="100"connectionTimeout="30000" disableUploadTimeout="true"/>
2. 錯誤頁面重定向
(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網頁中加入以下內容:
<%@ pageerrorPage="/error.jsp" %>
典型的error.jsp錯誤頁面的程序寫法如下:
<%@ pagecontentType="text/html;charset=GB2312"%>
<%@ pageisErrorPage="true"%>
<html>
<head><title>錯誤頁面</title></head>
<body>出錯了:</p>錯誤信息:<%= exception.getMessage() %><br>
Stack Trace is :<pre><font color="red"><%
java.io.CharArrayWritercw = new java.io.CharArrayWriter();
java.io.PrintWriterpw = new java.io.PrintWriter(cw,true);
exception.printStackTrace(pw);
out.println(cw.toString());
%></font></pre>
</body>
</html>
當出現NullPointerException異常時tomcat會把網頁導入到error.jsp,且會打印出出錯信息。
重新啟動tomcat服務
3. 修改默認端口
修改tomcat配置文件server.xml配置文件,更改默認管理端口到非8080:
<Connector
port="8080" maxHttpHeaderSize="8192" maxThreads="150"
minSpareThreads="25"maxSpareThreads="75"、
enableLookups="false"redirectPort="8443" acceptCount="100"
connectionTimeout="300"disableUploadTimeout="true" />
重新啟動tomcat服務
4. 禁止目錄列出
編輯tomcat配置文件web.xml配置文件:
<init-param>
<param-name>listings</param-name>
<param-value>true</param-value>
</init-param>
把true改成false。
重新啟動tomcat服務
5. 防止惡意關閉服務
編輯tomcat配置文件conf/server.xml配置文件,
shutdown的值為復雜的字符串:
<Serverport="8005" shutdown="復雜的字符串">
6. 連接數設置
編輯tomcat配置文件server.xml文件:
maxThreads="150" 表示最多同時處理150個連接。
minSpareThreads="25" 表示即使沒有人使用也開這么多空線程等待。
maxSpareThreads="75" 表示如果最多可以空75個線程。
acceptCount="100" 當同時連接的人數達到maxThreads時,還可以接收排隊的連接,超過這個連接的則直接返回拒絕連接。
7. 修改banner
修改/lib/catalina.jar中Serverinfo.properties問津中的以下參數(修改以掩飾真實版本信息):
server.info=X
server.build=BuildDate
server.number=X
關于Linux安全加固的中間件Tomcat怎么用問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。