1. 程式人生 > >Tomcat安全管理規範

Tomcat安全管理規範

靜態化 using classpath 端口配置 黑客 shel 情況 aps ssp

s

前言

隨著公司內部使用Tomcat作為web應用服務器的規模越來越大,為保證Tomcat的配置安全,防止信息泄露,惡性攻擊以及配置的安全規範,特制定此Tomcat安全配置規範。

定位:僅對tomcat的安全配置部分進行標準規範。

適用版本範圍:tomcat 6.*

Tomcat安裝規範

註:所有線上運行tomcat必須嚴格安裝本標準執行。

tomcat用戶設置

[tomcat@tuan-node1 ~]# useradd -d /tomcat -u 501 tomcat

[tomcat@tuan-node1 ~]# passwd tomcat

[tomcat@tuan-node1 ~]# su - tomcat

[tomcat@tuan-node1 ~]$ id tomcat

uid=501(tomcat) gid=501(tomcat) groups=501(tomcat)

[tomcat@tuan-node1 ~]$ pwd

/tomcat

tomcat安裝

[tomcat@tuan-node1 ~]$ wget ftp://10.6.9.111/soft/apache-tomcat-6.0.35.tgz

[tomcat@tuan-node1 ~]$ wget ftp://10.6.9.111/soft/apache-tomcat-6.0.35.tgz.md5

[tomcat@tuan-node1 ~]$ md5sum -c apache-tomcat-6.0.35.tgz.md5

apache-tomcat-6.0.35.tar.gz: OK

[tomcat@tuan-node1 ~]$ wget ftp://10.6.9.111/soft/jdk1.6.0_22.tgz

[tomcat@tuan-node1 ~]$ wget ftp://10.6.9.111/soft/jdk1.6.0_22.tgz.md5

[tomcat@tuan-node1 ~]$ md5sum -c jdk1.6.0_22.tgz.md5

jdk1.6.0_22.tgz: OK

[tomcat@tuan-node1 ~]$ tar xzf apache-tomcat-6.0.35.tgz

[tomcat@tuan-node1 ~]$ tar xzf jdk1.6.0_22.tgz

tomcat配置

[tomcat@tuan-node1 ~]$ vim .bash_profile 增加以下內容:

export JAVA_HOME=/tomcat/jdk1.6.0_22

export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH

export CLASSPATH=.$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar

export TOMCAT_HOME=/tomcat/apache-tomcat-6.0.35

[tomcat@tuan-node1 ~]$source .bash_profile

[tomcat@tuan-node1 ~]$ java -version

java version "1.6.0_26"

Java(TM) SE Runtime Environment (build 1.6.0_26-b03)

Java HotSpot(TM) 64-Bit Server VM (build 20.1-b02, mixed mode)

應用程序配置

[tomcat@tuan-node1 ~]$ mkdir webapps

將應用程序放置在/tomcat/目錄下。建立相應的目錄如團購wmw_tuan,靜態化wmw_static,並修改server.xml,對應好目錄即可。

啟動Tomcat:

[tomcat@tuan-node1 ~]$ /tomcat/apache-tomcat-6.0.35/bin/startup.sh

Using CATALINA_BASE: /tomcat/apache-tomcat-6.0.35

Using CATALINA_HOME: /tomcat/apache-tomcat-6.0.35

Using CATALINA_TMPDIR: /tomcat/apache-tomcat-6.0.35/temp

Using JRE_HOME: /tomcat/jdk1.6.0_22

Using CLASSPATH: /tomcat/apache-tomcat-6.0.35/bin/bootstrap.jar

安全設置規範

telnet管理端口保護(強制

類別

配置內容及說明

標準配置

備註

telnet管理端口保護

1.修改默認的8005管理端口為不易猜測的端口(大於1024);

2.修改SHUTDOWN指令為其他字符串;

<Server port="8527" shutdown="dangerous">

1.以上配置項的配置內容只是建議配置,可以按照服務實際情況進行合理配置,但要求端口配置在8000~8999之間;

?

ajp連接端口保護(推薦)

類別

配置內容及說明

標準配置

備註

Ajp 連接端口保護

1.修改默認的ajp 8009端口為不易沖突的大於1024端口;

2.通過iptables規則限制ajp端口訪問的權限僅為線上機器;

<Connector port="8528"

protocol="AJP/1.3" />

以上配置項的配置內容僅為建議配置,請按照服務實際情況進行合理配置,但要求端口配置在8000~8999之間;

保護此端口的目的在於防止線下的測試流量被mod_jk轉發至線上tomcat服務器;

?

禁用管理端(強制)

類別

配置內容及說明

標準配置

備註

禁用管理端

1. 刪除默認的{Tomcat安裝目錄}/conf/tomcat-users.xml文件,重啟tomcat後將會自動生成新的文件;

2. 刪除{Tomcat安裝目錄}/webapps下默認的所有目錄和文件;

3.將tomcat 應用根目錄配置為tomcat安裝目錄以外的目錄;

<Context path="" docBase="/home/work/local/tomcat_webapps" debug="0" reloadable="false" crossContext="tru

e"/>

對於前段web模塊,Tomcat管理端屬於tomcat的高危安全隱患,一旦被攻破,黑客通過上傳web shell的方式將會直接取得服務器的控制權,後果極其嚴重;

?

降權啟動(強制)

類別

配置內容及說明

標準配置

備註

降權啟動

1.tomcat啟動用戶權限必須為非root權限,盡量降低tomcat啟動用戶的目錄訪問權限;

2.如需直接對外使用80端口,可通過普通賬號啟動後,配置iptables規則進行轉發;

-

避免一旦tomcat 服務被入侵,黑客直接獲取高級用戶權限危害整個server的安全;

?

文件列表訪問控制(強制)

類別

配置內容及說明

標準配置

備註

文件列表訪問控制

1.conf/web.xml文件中default部分listings的配置必須為false;

<init-param>

<param-name>listings</param-name>

<param-value>false</param-value>

</init-param>

false為不列出目錄文件,true為允許列出,默認為false;

?

版本信息隱藏(強制)

類別

配置內容及說明

標準配置

備註

版本信息隱藏

1.修改conf/web.xml,重定向403、404以及500等錯誤到指定的錯誤頁面;

2.也可以通過修改應用程序目錄下的WEB-INF/web.xml下的配置進行錯誤頁面的重定向;

<error-page>

<error-code>403</error-code>

<location>/forbidden.jsp</location>

</error-page>

<error-page>

<error-code>404</error-code>

<location>/notfound.jsp</location>

</error-page>

<error-page>

<error-code>500</error-code>

<location>/systembusy.jsp</location>

</error-page>

在配置中對一些常見錯誤進行重定向,避免當出現錯誤時tomcat默認顯示的錯誤頁面暴露服務器和版本信息;

必須確保程序根目錄下的錯誤頁面已經存在;

?

Server header重寫(推薦)

類別

配置內容及說明

標準配置

備註

Server header重寫

在HTTP Connector配置中加入server的配置;

server="webserver"

當tomcat HTTP端口直接提供web服務時此配置生效,加入此配置,將會替換http 響應Server header部分的默認配置,默認是Apache-Coyote/1.1

?

訪問限制(可選)

類別

配置內容及說明

標準配置或操作

備註

訪問限制

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

<Context path="" docBase="/home/work/tomcat" debug="0" reloadable="false" crossContext="true">

<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="61.148.18.138,61.135.165.*" deny="*.*.*.*"/>

</Context>

通過配置信任ip的白名單,拒絕非白名單ip的訪問,此配置主要是針對高保密級別的系統,一般產品線不需要;

起停腳本權限回收(推薦)

類別

配置內容及說明

標準配置或操作

備註

起停腳本權限回收

去除其他用戶對Tomcat的bin目錄下shutdown.sh、startup.sh、catalina.sh的可執行權限;

chmod -R 744 tomcat/bin/*

防止其他用戶有起停線上Tomcat的權限;

?

訪問日誌格式規範(推薦)

類別

配置內容及說明

標準配置或操作

備註

訪問日誌格式規範

開啟Tomcat默認訪問日誌中的RefererUser-Agent記錄

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

開啟Referer和User-Agent是為了一旦出現安全問題能夠更好的根據日誌進行問題排查;

?

附錄:建議配置及標準執行方案

  1. 配置部分(${ CATALINA_HOME }conf/server.xml)

<Server port="8527" shutdown=" dangerous">

?

<!-- Define a non-SSL HTTP/1.1 Connector on port 8080 -->

<Connector port="8080" server="webserver"/>

?

<!-- Define an AJP 1.3 Connector on port 8528 -->

<!--Define an accesslog -->

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

?

<Connector port="8528" protocol="AJP/1.3" />

?

<Context path="" docBase="/home/work/local/tomcat_webapps" debug="0" reloadable="false" crossContext="true"/>

?

  1. 配置部分(${ CATALINA_HOME }conf/web.xml或者WEB-INF/web.xml)

<init-param>

????<param-name>listings</param-name>

????<param-value>false</param-value>

</init-param>

?

<error-page>

????<error-code>403</error-code>

????<location>/forbidden.jsp</location>

</error-page>

<error-page>

????<error-code>404</error-code>

????<location>/notfound.jsp</location>

</error-page>

<error-page>

????<error-code>500</error-code>

????<location>/systembusy.jsp</location>

</error-page>

?

  1. 刪除如下tomcat的默認目錄和默認文件

    tomcat/webapps/*

    tomcat/conf/tomcat-user.xml

    ?

  2. 去除其他用戶對tomcat 起停腳本的執行權限

    chmod 744 –R tomcat/bin/*

Tomcat安全管理規範