1. Tomcat運行在非root用戶下html
爲Tomcat建立的專用用戶,並擁有必須的最小權限。前端
useradd tomcat -M -d / -s /usr/sbin/nologin
2. 刪除默認的應用web
webapps目錄下的應用刪除或禁止訪問。apache
3. 關閉Shutdown端口或複雜化中止密碼tomcat
Shutdown端口設置爲-1 或爲Shutdown提供複雜密碼。app
<Server port="-1" shutdown="1q2w3e4r">負載均衡
4. 禁用TRACE請求webapp
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" allowTrace="fasle"/>ide
5. 關閉xpoweredBy響應頭性能
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" xpoweredBy="fasle"/>
6. 禁用SSL v3協議
<Connector protocol="HTTP/1.1" SSLEnabled="true"
port="8443" sslProtocols = "TLS" sslEnabledProtocols="TLSv1,TLSv1.1,TLSv1.2"/>
7. 禁用deployXML功能
<Host name="localhost" unpackWARs="false" deployXML="false">
8. 關閉自動部署
防止被植入惡意程序,關閉自動部署。部署應用時重啓生效。
<Host name="localhost" appBase="" unpackWARs="false" autoDeploy="false">
9. 隱藏Tomcat的版本信息
修改catalina.jar!org\apache\catalina\util\ServerInfo.properties文件中的版本信息爲
server.info=Apache Tomcat
server.number=
server.built=
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" server="AS 1.0"/>
10. 自定義錯誤頁面
Tomcat內部生成的錯誤頁面包含Tomcat相關信息。
編輯conf/web.xml,在</web-app>標籤前添加如下內容
<error-page> <error-code>404</error-code> <location>/404.html</location> </error-page> <error-page> <error-code>500</error-code> <location>/500.html</location> </error-page>
11. 限定訪問的IP地址
通常存在前端負載均衡,請求地址比較固定。
<Host name="localhost" appBase="/data/www/apps" unpackWARs="true" autoDeploy="false">
<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="192.168.1.10,192.168.1.11,192.168.2.*" deny=""/>
<Valve className="org.apache.catalina.valves.RemoteHostValve" allow="www.test.com,*.test.com" deny=""/></Host>
12. 開啓訪問日誌記錄
記錄流量訪問,會帶來部分性能開銷
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b %{Referer}i %{User-Agent}i %D"
resolveHosts="false" />
13. 禁用訪問目錄列表
編輯conf/web.xml文件
<servlet>
<servlet-name>default</servlet-name>
<servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>listings</param-name>
<param-value>false</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
14. 禁用資源的修改權限
<servlet>
<servlet-name>default</servlet-name>
<servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>readonly</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
15. Tomcat與項目文件屬主分離
即使攻破了Tomcat,也不能對項目文件進行更改。