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

tomcat 安全配置文件

1.配置文件中使用$CATALINA_HOME變數宣告為tomcat的安裝目錄並明確寫出了tomcat的配置檔案路徑,此路徑為測試環境的路徑,線上系統對應配置檔案的路徑可能不一樣,在進行相關配置時,應以線上配置檔案的實際路徑為準。

2.本文件僅包括了用於提升安全的配置方法。

3.在遵從本文件的方法進行配置前,請做好相關配置檔案的備份,以便在配置失敗時可以回退到變更前狀態。

1.新安裝,選用安全穩定版本

編號:

Tomcat_Sec_001

適用:

新安裝或者升級tomcat伺服器

配置要求:

1.新安裝或者升級tomcat伺服器時建議選用最新穩定版本,原始碼安裝包檔案要求從官方網站下載(http://tomcat.apache.org/)並要求對下載後的原始碼包檔案進行完整性驗證。

2.如果是跨大版本升級,則要求在測試環境測試不存在相容性問題後才可在生產環境進行部署。

 

原始碼包檔案進行完整性驗證方法請參照“備註”處的方法。

安全增強說明:

1.新版本往往修復了大量在舊版本中發現的安全漏洞,選用新版本可以防範或者減少已知漏洞的影響。選用穩定版則使得功能加固穩定;

2.從官方網站下載安裝包,以及對安裝包進行指紋驗證可以最大程式確保安裝檔案未被篡改;

備註:

對tomcat原始碼包檔案進行指紋驗證方法:

方法1,驗證sha1指紋:

(1)下載原始碼包檔案和該檔案的sha1指紋檔案在同一目錄:

 

(2)執行# sha1sum -c 原始碼包檔案

例如:

apache-tomcat-7.0.70.tar.gz: 確定            ---說明校驗成功,檔案沒有被篡改。

如果顯示如下,則說明檔案已經被篡改。

apache-tomcat-7.0.70.tar.gz: 失敗

sha1sum: 警告:

1/1 生成的校驗和不匹配

方法2,可以參考nginx安全配置文件中關於pgp檢驗方法進行pgp指紋的校驗。

2.使用普通賬號執行tomcat服務 

編號:

Tomcat_Sec_002

適用:

LINUX下新安裝部署或已上線Tomcat伺服器

配置要求:

要求tomcat伺服器程序只能使用普通賬號執行,不能使用root賬號,具體方法參考“備註”處的配置方法。

安全增強說明:

防範或降低攻擊者通過上傳webshell來獲取到的執行許可權

備註:

建立普通賬號執行tomcat服務的方法:

(1)建立tomcat使用者組

# sudo groupadd -g 1000 tomcat         

(2)建立tomcat使用者,並限制登入

#sudo useradd -s /bin/bash -g tomcat -u 1000 tomcat

說明:GID和UID定義為1000,避免與nis系統上的賬號的ID衝突。

# sudo usermod -L tomcat

備註:

-L  鎖定使用者密碼,使密碼無效。

-U 解除鎖定

(3)修改tomcat專案目錄所有者和使用者組

#sudo chown -R tomcat:tomcat $CATALINA_HOME

備註: $CATALINA_HOME為tomcat的家目錄,如果web應用專案的目錄定義在家目錄以外的目錄,則也可以使用該方法來設定對應目錄的所有者和使用者組。

(4) 使用普通賬號執行tomcat服務

#sudo -u tomcat -c "/usr/local/tomcat7/bin/startup.sh"

說明:-c 後跟tomcat的啟動指令碼,實際部署中該路徑可能不一樣.

 

(5)檢視tomcat服務埠已成功啟動

 

(6)檢視tomcat程序賬號為tomcat

 

 

3.移除樣例目錄和幫助文件應用

編號:

Tomcat_Sec_003

適用:

LINUX下新安裝部署或已上線Tomcat伺服器

配置要求:

tomcat的樣例目錄(examples)和幫助文件(docs)應用僅用於演示和學習的目錄,線上部署的tomcat伺服器要求移除這兩個應用, 具體方法參考“備註”處的方法。

安全增強說明:

應該從安全敏感性安裝中移除examples應用。雖然 examples 應用並不包含任何已知的漏洞,但現已證明,它所包含的一些功能可以被攻擊者利用,特別是一些顯示所有接收內容,並且能設定新 cookie cookie 範例。攻擊者將這些公關和部署在 Tomcat 例項中的另一個應用中的漏洞相結合,就能獲取原本根本不可能得到的資訊。

備註:

“移除樣例目錄應用”方法:

1.樣例目錄應用(examples)位於$CATALINA_HOME/webapps/ examples,($CATALINA_HOME是tomcat安裝目錄

(1)訪問樣例應用時,在web頁面的顯示如下:

 

 (2)直接將$CATALINA_HOME/webapps/目錄下的整個examples目錄刪除即可。

 

“移除幫助文件應用”方法

2. 幫助文件(docs)應用位於$CATALINA_HOME/webapps/ docs目錄,($CATALINA_HOME是tomcat安裝目錄

(1) 訪問幫助文件應用時,在web頁面的顯示如下:

 

(2)直接將$CATALINA_HOME/webapps/目錄下的整個docs目錄刪除即可。

 

4.移除或者限制管理控制檯(Manager)的訪問

編號:

Tomcat_Sec_004

適用:

LINUX下新安裝部署或已上線Tomcat伺服器

配置要求:

Tomcat有3個控制檯, Server status控制檯:通過web頁面顯示、監控服務狀態資訊;Manager APP控制檯:用於通過web介面部署、監控Web應用;Host Manager控制檯:用於通過web介面建立並管理虛擬主機。

我公司不使用Manager控制檯來進行部署、管理應用,要求將該應用移除,具體方法參考“備註”處的方法。

安全增強說明:

由於Manager控制檯應用允許遠端部署Web應用,所以經常被攻擊者利用。

備註:

1.移除管理控制檯(Manager)應用方法:

控制檯( Manager)檔案目錄位於$CATALINA_HOME/webapps/ manager和$CATALINA_HOME/webapps/host-manager

(1)在web頁面訪問控制檯登入頁面,如下:

 

備註:在tomcat新版本中預設是不能訪問的控制檯,因為沒有配置能夠執行這種訪問的使用者。

(2)直接將$CATALINA_HOME/webapps/目錄下的整個manager目錄和host-manager刪除即可。

 

2.如果確實需要到控制檯(Manager)來管理tomcat,則要遵循保證管理型應用的安全性原則來進行配置:

  • 保證任何被允許訪問管理應用的使用者的密碼是強密碼。
  • 不要放棄使用 LockOutRealm,它能防止暴力破解者攻擊使用者密碼。
  • 將 /META-INF/context.xml 中的限制訪問 localhost 的RemoteAddrValve 取消註釋。如果需要遠端訪問,使用該值可限制到特定的 IP 地址。

 (1)控制檯賬號增加賬號密碼方法:

控制檯的使用者名稱和密碼是通過Tomcat的JAAS(Java驗證和授權API)控制的,在Tomcat的檔案結構中webapps是web應用的存放位置,所以Manager控制檯所對應的web應用也是放置在這個資料夾下。然後進入以下路徑webapps\manager\WEB-INF\,找到web.xml檔案並開啟。在該檔案的最後部分可以看到如下配置:

 

<auth-method>屬性表示使用的是彈出式視窗登陸,<role-name>屬性表示只有manager-gui角色才能夠登陸該應用。

為了可以登陸Manager控制檯,就必須增加屬於manager-gui角色的使用者。Tomcat預設採用檔案安全域,即檔案存放使用者名稱和密碼,而這個檔案就是%Tomcat_Home%\conf下的tomcat-users.xml來控制。開啟該檔案,其有以下內容:

  1. <?xml version='1.0' encoding='utf-8'?>  
  2. <tomcat-users>  
  3. </tomcat-users> 

以上的配置檔案中顯示Tomcat預設沒有配置任何使用者,所以說無論我們在以上的登陸對話方塊中輸入何種內容,系統都不會讓我們登陸。為了能夠正常登陸,則必須修改這個tomcat-users.xml檔案來增加使用者,並讓該使用者屬於manager-gui角色。方法為在<tomcat-users>元素中增加<user>元素來增加使用者,修改後內容如下:

  1. <?xml version='1.0' encoding='utf-8'?>  
  2. <tomcat-users>  
  3. <role rolename="manager-gui"/>  
  4. <user username="tomcat" password="tomcat" roles="manager-gui"/>  
  5. </tomcat-users>  

以上的程式碼增加了一個使用者,使用者名稱為tomcat,密碼為tomcat,角色為manager與web.xml中定義的一致。

5.移除預設ROOT 應用

編號:

Tomcat_Sec_005

適用:

LINUX下新安裝部署

配置要求:

新安裝部署tomcat時,建議預設的ROOT應用移除,移除方法參考“備註處”的方法。 

安全增強說明:

ROOT 應用帶來安全風險的可能性非常小,但它確實含有正在使用的 Tomcat的版本號。應該從可公開訪問的 Tomcat 例項中清除 ROOT 應用。

備註:

移除預設ROOT應用方法:

1.直接刪除$CATALINA_HOME/webapps/ROOT目錄即可。

說明:$CATALINA_HOME為Tomcat的安裝目錄。

 

 

 

 

6.隱藏tomcat版本號

編號:

Tomcat_Sec_006

適用:

LINUX下新安裝部署或已上線Tomcat伺服器

配置要求:

要求隱藏tomcat版本號,預設情況下,在錯誤頁面會顯示tomcat版本號,具體方法參考“備註”處的方法。

 

注意:

這也會改變一些管理工具所報告的版本號,可能難於確定實際安裝的版本號,通過執行CATALINA_HOME/bin/version.sh 指令碼依然能夠報告版本號。

安全增強說明:

絕大多數漏洞掃描工具通過獲取目標web伺服器的版本號來判斷該web伺服器是否存在安全漏洞,隱藏版本號後可以最大減少惡意攻擊者通過漏掃工具來收集漏洞資訊。

備註:

隱藏tomcat的版本號方法:

1.預設在tomcat的錯誤請求頁面會顯示tomcat的版本號,如下:

 

2.tomcat的版本號可以隱藏或者修改,tomcat的版本號配置位於$CATALINA_HOME /lib/org/apache/catalina/util/ServerInfo.properties 檔案中,具體配置方法:

方法1

在指定路徑建立ServerInfo.properties檔案,如下

(1)#cd $CATALINA_HOME/lib

說明:$CATALINA_HOME為tomcat的安裝目錄

(2)#mkdir -p org/apache/catalina/util

(3)#cd org/apache/catalina/util

(4)#vim ServerInfo.properties

(5)在此檔案中寫入以下2個引數

server.info=Apache Tomcat/X

server.number=X

(6)儲存退出後,修改檔案的所有者和使用者組,在$CATALINA_HOME/lib目錄下執行chown -R tomcat:tomcat org

(7)重啟tomcat服務.即可

方法2:

(1)#cd $CATALINA_HOME/lib

(2)找到catalina.jar包檔案

(3)使用命令解壓該檔案,執行: jar xf catalina.jar

(4)解壓後得到META-INF和org目錄

(5)執行vim org/apache/catalina/util/ServerInfo.properties

(6)將預設的

 

改成

 

(7)重啟tomcat服務

3.測試,修改完成後在錯誤頁面已經看不到版本號:

 

 

7.禁止目錄列表

編號:

Nginx_Sec_007

適用:

LINUX下新安裝部署或已上線nginx伺服器

配置要求:

要求禁止tomcat伺服器的目錄列表功能,tomcat預設是禁止目錄列表的,但可能存在人為開啟的可能,需要確認線上系統沒有開啟目錄列表功能,具體方法參考“備註”處的方法。

安全增強說明:

1.當目標web伺服器允許目錄時,只要訪問目標web伺服器的目錄,如果該目錄下沒有設定預設訪問的檔案,則會同時將該目錄的所有檔案列出來,如下:

 

2.禁止目錄列表功能可以避免因暴露目標網站的目錄結構和敏感檔案,最終造成敏感資訊丟失。

備註:

檢查tomcat是否開啟了目錄列表功能的方法:

(1) 編輯$CATALINA_HOME/conf/web.xml,找到如下配置:

<init-param>

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

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

        </init-param>

說明:$CATALINA_HOME為tomcat的安裝目錄。

如果listings的值為false,則說明已禁止目錄列表,如果值為true,則允許目錄列表。

 

禁用目錄列表後,請求沒有設定預設檔案的目錄時,tomcat伺服器會返回404錯誤,如下“”

 

 

8.開啟日誌記錄

編號:

Nginx_Sec_008

適用:

LINUX下新安裝部署或已上線nginx伺服器

配置要求:

要求tomcat伺服器開啟access日誌, 預設情況下已開啟訪問日誌,具體開啟方法參考“備註”處的方法。

安全增強說明:

可用於攻擊行為分析和故障診斷。

備註:

配置開啟tomcat訪問日誌方法:

編輯$CATALINA_HOME/conf/server.xml,找到如下:     

<Host name="localhost" ...>

  ...

<!--

<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"

               prefix="localhost_access_log." suffix=".txt"

               pattern="%h %l %u %t "%r" %s %b" />  ...

       -->

</Host>

如果上面的<Valve ...          />的配置使用註釋符號<!--          ...         -->註釋後,需要將註釋符號去掉。

 

 

Pattern預設有2個:ommon和combined

Common的值:"%h %l %u %t "%r" %s %b"

效果:

192.168.12.11 - - [24/Aug/2016:11:35:43 +0800] "GET /docs/tribes/transport.html HTTP/1.1" 200 5645

combined的值:%h %l %u %t %r %s %b %{Referer}i %{User-Agent}i 

效果:

192.168.12.11 - - [24/Aug/2016:12:02:01 +0800] "GET /docs/images/tomcat.gif HTTP/1.1" 200 2066 http://192.168.12.93:8080/docs/config/host.html Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.157 Safari/537.36

引數說明:

%a – 遠端主機的IP (Remote IP address) 
%A – 本機IP (Local IP address) 
%b – 傳送位元組數,不包含HTTP頭,0位元組則顯示 ‘-’ (Bytes sent, excluding HTTP headers, or ‘-’ if no bytes 
were sent) 
%B – 傳送位元組數,不包含HTTP頭 (Bytes sent, excluding HTTP headers) 
%h – 遠端主機名 (Remote host name) 
%H – 請求的具體協議,HTTP/1.0 或 HTTP/1.1 (Request protocol) 
%l – 遠端使用者名稱,始終為 ‘-’ (Remote logical username from identd (always returns ‘-’)) 
%m – 請求方式,GET, POST, PUT (Request method) 
%p – 本機埠 (Local port) 
%q – 查詢串 (Query string (prepended with a ‘?’ if it exists, otherwise 
an empty string) 
%r – HTTP請求中的第一行 (First line of the request)  
%s – HTTP狀態碼 (HTTP status code of the response) 
%S – 使用者會話ID (User session ID) 
%t – 訪問日期和時間 (Date and time, in Common Log Format format) 
%u – 已經驗證的遠端使用者 (Remote user that was authenticated 
%U – 請求的URL路徑 (Requested URL path) 
%v – 本地伺服器名 (Local server name) 
%D – 處理請求所耗費的毫秒數 (Time taken to process the request, in millis) 
%T – 處理請求所耗費的秒數 (Time taken to process the request, in seconds) 

 

9.修改SHUTDOWN字串

編號:

Tomcat_Sec_009

適用:

LINUX下新安裝部署或已上線Tomcat伺服器

配置要求:

要求修改用於關閉tomcat服務的shutdow屬性值,具體方法參考“備註”處的方法。

安全增強說明:

主要用於防止未授權使用者關閉tomcat伺服器。

備註:

修改SHUTDOWN字串方法:

1.在Tomcat配置檔案$CATALINA_HOME/conf/server.xml,有如下的配置,

< Server port ="8005" shutdown ="SHUTDOWN" debug ="0" >

該配置的作用是啟動tomcat Server後在埠8005處等待關閉命令 如果接受到"SHUTDOWN"字串則關閉伺服器,利用方法,如下

(1)登入tomcat伺服器,

(2)在本地執行 telnet 127.0.0.1 8005

Trying 127.0.0.1...

Connected to 127.0.0.1.

Escape character is '^]'.

輸入:SHUTDOWN

Connection closed by foreign host.              ---此時tomcat伺服器被成功關閉。

2.出於防範未授權使用者使用該方式來關閉tomcat服務,要求修改shutdown 屬性值,如下:

將shutdown 屬性值改成SHUTDOWNT,即<Server port="8005" shutdown="SHUTDOWNT">,也可以改成其他字串。

 

說明:

Tomcat的tcp 8005埠,只允許在本地連線,如下:

# netstat -tlpun |grep 8005

tcp        0      0 ::ffff:127.0.0.1:8005       :::*                        LISTEN      9636/java   

 

10.拒絕TRACE請求方法

編號:

Tomcat_Sec_010

適用:

LINUX下新安裝部署或已上線Tomcat伺服器

配置要求:

要求配置tomcat伺服器拒絕TRACE請求方法,預設配置不接受該請求方法,配置TOMCAT伺服器拒絕TRACE請求方法參考“備註”處的方法。

安全增強說明:

TRACE方法是HTTP(超文字傳輸)協議定義的一種協議除錯方法,該方法使得伺服器原樣返回任何客戶端請求的內容(可能會附加路由中間的代理伺服器的資訊),由於該方法原樣返回客戶端提交的任意資料,因此,可用來進行跨站指令碼(XSS)攻擊,這種攻擊方式又稱為跨站跟蹤攻擊(XST)。

啟用TRACE方法存在如下風險:
1、惡意攻擊者可以通過TRACE方法返回的資訊瞭解到網站前端的某些資訊,如果快取伺服器等,從而為進一步的攻擊提供便利;
2、惡意攻擊者可以通過TRACE方法進行XSS攻擊,盜取會話cookie、獲取賬戶、模擬其他使用者身份,甚至可以修改網頁呈現給其他使用者的內容,從而給使用者帶來損失;
3、即使網站對關鍵頁面啟用了HttpOnly頭標記,禁止指令碼讀取cookie資訊時,通過使用Trace方法,惡意攻擊者可以繞過這個限制,讀取cookie資訊。

備註:

配置TOMCAT伺服器拒絕TRACE請求方法:

在Tomcat配置檔案$CATALINA_HOME/conf/server.xml中,可以給 Connector(聯結器)配置allowTrace屬性,該屬於用於設定是否啟用指定聯結器的Trace方法,如下:

預設,沒有啟用Trace配置如下:

<Connector port="8080" protocol="HTTP/1.1"

               connectionTimeout="20000"

               redirectPort="8443" />

如果當進行如下配置時,則允許接受TRACE請求

<Connector port="8080" protocol="HTTP/1.1"

               connectionTimeout="20000"

               redirectPort="8443"

               allowTrace="true"/>

注:allowTrace="true"配置允許接受TRACE請求。

 

在遠端Linux主機驗證目標主機是否方法:

#curl -X TRACE 192.168.12.93:8080

響應

TRACE / HTTP/1.1

user-agent: curl/7.19.7 (i686-pc-linux-gnu) libcurl/7.19.7 NSS/3.12.6.2 zlib/1.2.3 libidn/1.18 libssh2/1.2.2

host: 192.168.12.93:8080

accept: */*

 

# curl -X TRACE -H "Cookie: name=value" 192.168.12.93:8080

響應

TRACE / HTTP/1.1

user-agent: curl/7.19.7 (i686-pc-linux-gnu) libcurl/7.19.7 NSS/3.12.6.2 zlib/1.2.3 libidn/1.18 libssh2/1.2.2

host: 192.168.12.93:8080

accept: */*

cookie: name=value

關閉後

curl -X TRACE 192.168.12.93:8080

執行後沒有任何響應資訊

 

 -X/--request <command>指定什麼命令

 -H/--header <line>自定義頭資訊傳遞給伺服器

 

11.靜態資源僅允許只讀訪問(read-only)

編號:

Tomcat_Sec_011

適用:

LINUX下新安裝部署或已上線Tomcat伺服器

配置要求:

配置只允許通過只讀方法訪問靜態資源,預設只允許靜態方法,具體配置方法參考 “備註”處的方法。

安全增強說明:

能有效地防止防止惡意客戶端刪除/修改伺服器上的靜態檔案和更新新的資源。

備註:

Tomcat預設的servlet(DefaultServlet)是既服務於靜態資源又服務於目錄列表(如果允許目錄列表的話)的servlet,所有的請求進入tomcat,都會流經servlet,如果沒有匹配到任何應用指定的servlet,那麼就會流到預設的servlet,預設的servlet是配置在$catalina/conf/web.xml檔案中。

 

在配置檔案$CATALINA_HOME/conf/web.xml,可以配置 DefaultServlet 的readonly屬性,該屬性預設值為true,,表明靜態資源僅允許只讀方式訪問。

DefaultServlet的預設配置如下:

 

DefaultServlet的readonly屬性設定為true時,將拒絕客戶端使用PUT、DELETE等刪除或修改伺服器上的靜態資源。

(1)DELETE請求被拒絕,如下

 

 (2)PUT請求被拒絕,如下

 

 

12.不傳送“X-Powered-ByHTTP響應頭

編號:

Tomcat_Sec_012

適用:

LINUX下新安裝部署或已上線Tomcat伺服器

配置要求:

要求配置tomcat不傳送X-Powered-By”HTTP響應頭,預設不傳送該響應頭,具體方法參考“備註”處的方法。

安全增強說明:

X-Powered-By欄位值包含 Servlet 和 JSP 規範版本號、完整的 Tomcat 版本號(比如 Apache Tomcat/8.0)、JVM Vendor 名稱,以及 JVM 版本號等資訊,禁止傳送Tomcat伺服器傳送X-Powered-By”HTTP響應頭,可以防止惡意攻擊者從中獲取目標伺服器資訊。

備註:

配置tomcat不傳送X-Powered-By”HTTP響應頭方法:

在Tomcat配置檔案$CATALINA_HOME/conf/server.xml中,可以給 Connector(聯結器)配置xpoweredBy屬性,該屬於在於設定指定聯結器在響應頭部是否傳送X-Powered-By, 預設,不傳送X-Powered-By。如果配置成xpoweredBy="true",比如:

<Connector port="8080" protocol="HTTP/1.1"

               connectionTimeout="20000"

               redirectPort="8443"

               xpoweredBy="true"/>

響應頭會增加X-Powered-By欄位:該欄位會顯示Servlet and JSP specification versions and the full Tomcat version among others.

測試:

1.響應頭不傳送X-Powered-By

 

2.響應頭髮送X-Powered-By

 

 

13.自定義錯誤頁面

編號:

Tomcat_Sec_013

適用:

LINUX下新安裝部署或已上線Tomcat伺服器

配置要求:

建議自定義403,,404,500等錯誤頁面,具體方法參考“備註”處的方法。

安全增強說明:

減少在錯誤頁面中暴露敏感資訊的風險。

備註:

自定義錯誤頁面方法:

當出現錯誤時,預設的 ErrorReportValve 能向客戶端顯示堆疊跟蹤資訊以及/或者 JSP 原始碼。為了避免這一點,可以在每個 Web 應用內配置自定義錯誤處理器,具體方法如下:

編輯配置檔案:sudo vim $CATALINA_HOME/conf/web.xml            --說明:$CATALINA_HOME為tomcat的家目錄。

在該檔案底部</web-app>的前面新增

<error-page>

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

    <location>/error/404.html</location>

</error-page>

 

說明: 404.html為自定義的錯誤頁面,存放在tomcat應用目錄/error/目錄下

例如:

在應用目錄下建立error目錄,執行mkdir error

sudo  cd error

sudo vim 404_error.html

寫入:

<head>
<title>Sorry - no such page</title>
</head>
<body>
<h1>Oops - I don't have that page</h1>
This is our "error 404" page.
</body>

配置後重啟tomcat服務

測試,404錯誤頁面顯示了自定義的頁面:

 

其他的錯誤頁面的自定義方法一樣:

<error-page>

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

    <location>/error/403.html</location>

</error-page>

 

<error-page>

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

    <location>/error/500.html</location>

</error-page>

 

14.限制聯結器的可用性

編號:

Tomcat_Sec_014

適用:

LINUX下新安裝部署或已上線Tomcat伺服器

配置要求:

Tomcat的聯結器的address 屬性用來控制聯結器在哪個 IP 地址上偵聽連線。預設,聯結器會在所有配置好的IP 地址上進行偵聽。建議在指定聯結器上配置address屬性,只監聽指定IP的指定埠,具體方法參考“備註”處的方法。

安全增強說明:

僅在指定IP上監聽服務埠,進一步提升安全性。

備註:

配置監聽器只在指定IP地址上監聽指定埠方法:

例如只在127.0.0.1地址上監聽tcp 8080埠,配置如下:

 

<Connector address="127.0.0.1"  port="8080"  protocol="HTTP/1.1"

   connectionTimeout="20000"

   redirectPort="8443" />

檢視8080埠,看到只在127.0.0.1監聽8080

# netstat -tlpnu |grep 8080

tcp        0      0 ::ffff:127.0.0.1:8080       :::*                        LISTEN      13793/java

15.禁用SSL/TSL不安全協議和弱加密演算法

編號:

Tomcat_Sec_015

適用:

使用提供HTTPS方式訪問的Tomcat伺服器

配置要求:

tomcat使用到https訪問時,要求禁止SSLV1.0SSLV2.0SSLV3.0不安全協議,要求禁止使用以下不安全加密演算法:

 

具有配置方法參考“備註”處的方法。

安全增強說明:

降低由於使用不安全協議和弱加密導致敏感資訊洩露的風險。

備註:

Tomcat配置加密協議和加密套件方法:

(1)編輯配置檔案$CATALINA_HOME/conf/server.xml 

(2)找到指定的聯結器進行配置,例如:

<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol"

            …

               />

(3)在聯結器內配置下面的加密協議:

sslEnabledProtocols="TLSv1,TLSv1.1,TLSv1.2"

(4)在聯結器內配置下面加密套件:

ciphers="TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_GCM_SHA384,TLS_RSA_WITH_AES_128_GCM_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA,TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA,TLS_RSA_WITH_3DES_EDE_CBC_SHA,SSL_RSA_WITH_3DES_EDE_CBC_SHA"

(5)儲存配置檔案,重啟Tomcat服務即可。

以上配置支援的加密協議和加密套件如下:

 

加密協議

優先使用順序TLSv1.2,TLSv1.1,TLS1.0。其中TLS1.0也被認為是不安全協議,也建議不使用。

加密套件:

Kx:金鑰交換演算法,優先使用順序:ECDHE(支援正向安全,2048位,防止中間人攻擊),DHE,RSA(無法防止中間人攻擊),不要使用1024位的DH。

Au:認證演算法,優先使用RSA, ECDSA

Enc:對稱加密演算法,優先使用AES_256_GCM,AES_128_GCM,AES_256_CBC,AES_128_CBC,3DES_EDE_CBC

Mac:雜湊演算法,優先使用順序SHA_256,SHA1

 

注意:JDK1.6版本不支援TLSv1.2和TLv1.1版本。