生產環境Tomcat安全規範

Tomcat的安全

生產環境tomcat規範
1.更改服務監聽端口

若 Tomcat 都是放在內網的,則針對 Tomcat 服務的監聽地址都是內網地址

標準配置:<Connector port="10000" server="webserver"/>

2.telnet管理端口保護

修改默認的 8005 管理端口不易猜測(大於1024),但要求端口配置在8000~8999之間

修改SHUTDOWN命令爲其他字符串
標準配置:<Server port="8578" shutdown="dangerous">

3.AJP連接端口的保護

修改默認的ajp 8009端口爲不易衝突(大於1024),但要求端口配置在8000~8999之間

通過iptables規則限制ajp端口訪問的權限僅爲線上機器,目的在於防止線下測試流量被apache的mod_jk轉發至線上tomcat服務器

標準配置:<Connector port="8349" protocol="AJP/1.3"/>

4.禁用管理端

刪除默認$CATALINA_HOME/conf/tomcat-users.xml文件,重啓tomcat將會自動生成新的文件

刪除$CATALINA_HOME/webapps下載默認的所有目錄和文件

將tomcat應用根目錄配置爲tomcat安裝目錄以外的目錄

標準配置:

a.server.xml配置
一種直接修改Host節點信息,表示全局配置

<Host name="localhost"  appBase="/data/www/tomcat_webapps" unpackWARs="true" autoDeploy="false"></Host>

另一種直接在Host節點中新增Context節點,指定具體的項目

<Context path="" docBase="/usr/local/tomcat/webapps/jenkins" debug="0" reloadable="false" crossContext="true">
</Context>

b.在$CATALINA_HOME/conf/Catalina/locathost目錄下新增文件 test##20160506172651.xml

<Context displayName="test" docBase="/data/www/tomcat_webapps/test##20160506172651.war" reloadable="false" />

5.隱藏Tomcat的版本信息

針對該信息的顯示是由一個jar包控制的,該jar包存放在$CATALINA_HOME/lib目錄下,名稱爲 catalina.jar,通過 jar xf 命令解壓這個 jar 包會得到兩個目錄 META-INF 和 org ,修改 org/apache/catalina/util/ServerInfo.properties 文件中的 serverinfo 字段來實現來更改我們tomcat的版本信息
$ cd $CATALINA_HOME/lib
$ jar xf catalina.jar
$ cat org/apache/catalina/util/ServerInfo.properties |grep -v '^$|#'
$ mkdir -p org/apache/catalina/util
$ vim ServerInfo.properties
server.info=nolinux        # 把這個值改成其它值就行了
自定義錯誤頁面:修改$CATALINA_HOME/conf/web.xml重定向 403/404/500等錯誤到指定的錯誤頁面

6.降權啓動

Tomcat啓動用戶權限必須非root權限,儘量降低tomcat啓動用戶的目錄訪問權限,如需直接對外使用80端口,可通過普通賬號啓動後,配置iptables規則進行轉發,爲了防止 Tomcat 被植入 web shell 程序後,可以修改項目文件。要將 Tomcat 和項目的屬主做分離,即便被破壞也無法創建和編輯項目文件

7.文件列表訪問控制

$CATALINA_HOME/conf/web.xml文件中的default部分的listings的配置必須爲false(默認),表示不列出文件列表

8.訪問限制

通過配置,限定訪問的IP來源

全局設置限定IP和域名訪問:
<Host name="localhost"  appBase="/data/www/tomcat_webapps"   unpackWARs="true" autoDeploy="false">
   <Valve className="org.apache.catalina.valves.RemoteAddrValve"  allow="192.168.1.10,192.168.1.30,192.168.2.*" deny=""/>  
   <Valve className="org.apache.catalina.valves.RemoteHostValve"  allow="www.test.com,*.test.com" deny=""/>
</Host>

9.腳本權限回收

控制CATALINAHOME/bin目錄下的start.sh、catalina.sh、shutdown.sh的可執行權限,chmod−R744CATALINA_HOME/bin/*

10.訪問日誌格式規範

開啓tomcat默認訪問日誌中Referer和User-Agent記錄

標準配置:
<Valve className="org.apache.catalina.valves.AccessLogValve"
   directory="logs" prefix="localhost_access_log"
     suffix=".txt" pattern="%h %l %u %t &quot;%r&quot; %s %b %{Referer}i %{User-Agent}i %D"
     resolveHosts="false" />

11.Server header重寫

在HTTP Connector配置中加入server的配置,server=”chuck-server”
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章