tomcat 安全配置
#Tomcat 安全管理配置規範
##管理埠保護8005
tcp6 0 0 127.0.0.1:8005 :::* LISTEN 35830/java
[[email protected] webapps]# telnet 127.0.0.1 8005
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
SHUTDOWN
能過telnet命令連線到8005埠,可以執行SHUTDOWN命令關閉tomcat
優化方案:
修改預設的8005埠,修改shutdown指定字串
<Server port="8005" shutdown="SHUTDOWN">
將埠修改成隨機埠,將關閉命令修改成任意字元
##ajp連線埠8009
修改預設的8009埠,通過Iptables控制ajp埠訪問
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
保護此埠的目的在於防止線下的測試流量被mod_jk轉發至線上tomcat伺服器
##禁用管理端
刪除tomcat/目錄的一些host-manager docs examples 或者將tomcat的目錄設定為
tomcat以外的目錄
對於前端web模組,tomcat管理端屬於tomcat高危安全隱患,一旦被攻破,×××通過上
傳web shell的方式將會直接取得伺服器的控制
修改預設的釋出目錄站點位置 <Context path="/" docBase="/data/webapps/www" debug="0" reloadable="true" crossContext="true"/>
##降權啟動
以非root使用者啟動tomcat
##檔案列表訪問控制
conf/web.xml檔案中default部分listings的配置必須為false;
false為不列出目錄檔案,true為允許,預設false
<init-param>
<param-name>listings</param-name>
<param-value>false</param-value>
</init-param>
##版本資訊隱藏
1.修改conf/web.xml,重定向403,404以及500等錯誤到指定的錯誤頁面, 2. 也可以修改應用程式目錄下的WEB-INF/web.xml下的配置進行錯誤頁面的重定向 <error-page> <error-code>403</error-code> <location>/forbidden.jsp</location> <error-code>404</error-code> <location>/notfound.jsp</location> </error-code> <error-page> <error-code>500</error-code> <location>/systembusy.jsp</location> </error-page> 在配置中對一些常見錯誤進麼重定向,避免當出現錯誤時,tomcat預設顯示的錯誤頁面暴 露伺服器和版本資訊,必須確保程式根目錄下的錯誤頁面已經存在
##server header重寫
在HTTP Connector配置中加入server的配置
server="webserver"
當tomcat HTTP埠直接提供web服務時,此配置生效,加入此配置,將會替換http響
應server header部分的預設配置,預設是Apache-Coyote/1.1
示例:
[[email protected] conf]# curl --head 127.0.0.1:8080
HTTP/1.1 403 Forbidden
Server: Apache-Coyote/1.1
Cache-Control: private
Expires: Thu, 01 Jan 1970 08:00:00 CST
Content-Type: text/html
Content-Length: 559
Date: Sun, 31 Dec 2017 14:28:10 GMT
修改配置:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" server="nginx1.1"/>
修改後的結果
[[email protected] scripts]# curl --head 10.204.3.7:8080
HTTP/1.1 403 Forbidden
Cache-Control: private
Expires: Thu, 01 Jan 1970 08:00:00 CST
Content-Type: text/html
Content-Length: 559
Date: Sun, 31 Dec 2017 14:33:57 GMT
Server: nginx1.1
##訪問限制
通過限制,限制訪問的ip來源
ip的白名單,拒絕非白名單IP的訪問,此配置主要是針對高保密級別的系統,
<Context docBase="/data/webapps/www" debug="0" reloadable="false" crossContext="true"/>
<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="192.168.1.10,192.168.1.*" deny="*.*.*.*" />
</Context>
##起停指令碼許可權回收
去除其他使用者對tomcat的bin目錄下的shutdown.sh startup.sh catalina.sh的執行許可權
chmod -R 744 tomcat/bin/*
##訪問日誌格式規範
開啟tomcat預設訪問日誌中的referer和User-Agent記錄,是為了一旦出現安全問題能夠更好的根據
日誌進行問題排查
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log." suffix=".txt" pattern="%h %l %u %t %r %b %{Referer}i %{User-Agent}i $D" resolveHosts="false" />
#Tomcat的狀態管理和host管理
##管理狀態頁檔案
/usr/local/tomcat8/webapps/manager
##修改配置檔案
vim /usr/local/tomcat8/conf/tomcat-users.xml
在最後</tomcat-users>段前新增的內容如下:
<role rolename="admin-gui"/>
<user username="tomcat" password="s3cret" roles="admin-gui"/>