1. 程式人生 > >tomcat 安全配置

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"/>

##訪問狀態頁
http://10.204.3.6:8080/manager