Tomcat安全優化

Tomcat安全優化

1.     telnet管理端口保護(強制)

類別java

配置內容及說明web

標準配置shell

備註apache

telnet管理端口保護bootstrap

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

2.修改SHUTDOWN指令爲其餘字符串;安全

<Server port="8527" shutdown="dangerous">性能優化

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

2. ajp鏈接端口保護(推薦)

類別app

配置內容及說明

標準配置

備註

Ajp 鏈接端口保護

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

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

<Connector port="8528"

protocol="AJP/1.3" />

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

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

3. 禁用管理端(強制)

類別

配置內容及說明

標準配置

備註

禁用管理端

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

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

4. 降權啓動(強制)

類別

配置內容及說明

標準配置

備註

降權啓動

1.tomcat啓動用戶權限必須爲非root權限,儘可能下降tomcat啓動用戶的目錄訪問權限;

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

 

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

[root@web03 ~]# useradd tomcat
[root@web03 ~]# cp -a /application/tools/tomcat8_1 /home/tomcat/
[root@web03 ~]# chown -R tomcat.tomcat /home/tomcat/tomcat8_1/
[root@web03 ~]# su -c '/home/tomcat/tomcat8_1/bin/startup.sh' tomcat
Using CATALINA_BASE:   /home/tomcat/tomcat8_1
Using CATALINA_HOME:   /home/tomcat/tomcat8_1
Using CATALINA_TMPDIR: /home/tomcat/tomcat8_1/temp
Using JRE_HOME:        /application/jdk
Using CLASSPATH:       /home/tomcat/tomcat8_1/bin/bootstrap.jar:/home/tomcat/tomcat8_1/bin/tomcat-juli.jar
Tomcat started.
[root@web03 ~]# ps -ef|grep tomcat

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

類別

配置內容及說明

標準配置

備註

文件列表訪問控制

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

<init-param>

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

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

</init-param>

false爲不列出目錄文件,true爲容許列出,默認爲false;

6. 版本信息隱藏(強制)

類別

配置內容及說明

標準配置

備註

版本信息隱藏

1.修改conf/web.xml,重定向40三、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默認顯示的錯誤頁面暴露服務器和版本信息;

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

7. Server header重寫(推薦)

類別

配置內容及說明

標準配置

備註

Server header重寫

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

server="webserver"

 

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

8. 訪問限制(可選)

類別

配置內容及說明

標準配置或操做

備註

訪問限制

經過配置,限定訪問的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的訪問,此配置主要是針對高保密級別的系統,通常產品線不須要;

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

類別

配置內容及說明

標準配置或操做

備註

起停腳本權限回收

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

chmod -R 744 tomcat/bin/*

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

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 %r %s %b %{Referer}i %{User-Agent}i %D" resolveHosts="false"/>

開啓Referer和User-Agent是爲了一旦出現安全問題可以更好的根據日誌進行問題排查;

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

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

 

2.       配置部分(${ 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>

3.       刪除以下tomcat的默認目錄和默認文件

tomcat/webapps/*
tomcat/conf/tomcat-user.xml

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

chmod 744 –R tomcat/bin/*

1.13 Tomcat性能優化

tomcat性能取決於 內存大小

上策:優化代碼

   該項須要開發經驗足夠豐富,對開發人員要求較高

中策:jvm優化機制 垃圾回收機制 把不須要的內存回收

                  優化jvm--優化垃圾回收策略

優化catalina.sh配置文件。在catalina.sh配置文件中添加如下代碼

# tomcat分配1G內存模板
JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8 -server -Xms1024m -Xmx1024m -XX:NewSize=512m -XX:MaxNewSize=512m -XX:PermSize=512m -XX:MaxPermSize=512m"        

JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8 -server -Xms800m -Xmx800m -XX:NewSize=400m -XX:MaxNewSize=400m -XX:PermSize=400m -XX:MaxPermSize=400m"    
# 重啓服務
su -c '/home/tomcat/tomcat8_1/bin/shutdown.sh' tomcat
su -c '/home/tomcat/tomcat8_1/bin/startup.sh' tomcat

         修改以前

         修改以後

下策:加足夠大的內存

該項的資金投入較大

下下策:天天0點定時重啓tomcat

使用較爲普遍

相關文章
相關標籤/搜索