Tomcat安全配置與效能最佳化

來源:互聯網
上載者:User
                             Tomcat安全配置與效能最佳化

Tomcat 是 Apache軟體基金會下的一個免費、開源的WEB應用伺服器,它可以運行在 Linux 和 Windows 等多個平台上,由於其效能穩定、擴充性好、免費等特點深受廣大使用者喜愛。目前,很多互連網應用和公司專屬應用程式都部署在 Tomcat 伺服器上,比如我們公司,哈。

        之前我們 tomcat 都採用的是預設的配置,因此在安全方面還是有所隱患的。上周對測試環境的所有伺服器的tomcat都做了安全最佳化,其間也粗略做了一些效能最佳化,這裡就簡單記錄分享下。


一、版本安全

        升級當前的tomcat版本為最新穩定版本。故名思議,最新穩定版本就要兼顧最新和穩定這兩個概念。一個穩定的版本,是需要時間沉澱的,而最新又是相對於穩定版而言的最新。因此我們一般會選擇當前大版本中,最新版本往前推幾個版本或者往前推幾個月出的版本。

       目前,企業常用的tomcat大版本為6.0和7.0版本,8.0版本雖然已經出了很久了,但是仍然不建議使用。


       在升級版本中,需要注意的事情有兩點:

       1、盡量避免跨大版本的升級

       2、將當前老版本 tomcat 的server.xml、catalina.sh、web.xml和tomcat-users.xml檔案進行備份,然後部署完新版本的 tomcat 之後,將這些設定檔覆蓋過去即可,然後停掉舊版本,啟動新版本即可完成升級操作。


二、隱藏版本資訊

       為了避免駭客針對某些版本進行攻擊,因此我們需要隱藏或者偽裝 Tomcat 的版本資訊。

       預設 Tomcat 的版本資訊如下:

 針對該資訊的顯示是由一個jar包控制的,該jar包存放在 Tomcat 安裝目錄下的lib目錄下,名稱為 catalina.jar。

       我們可以通過 jar xf 命令解壓這個 jar 包會得到兩個目錄 META-INF 和 org ,通過修改 org/apache/catalina/util/ServerInfo.properties 檔案中的 serverinfo 欄位來實現來更改我們tomcat的版本資訊。

檔案資訊如下:

[root@localhost ~]#  cat org/apache/catalina/util/ServerInfo.properties |grep -v '^$|#'server.info=Apache Tomcat/7.0.53server.number=7.0.53.0server.built=Mar 25 2014 06:20:16當然,還有另外一種方法來實現隱藏或偽裝Tomcat的版本資訊,不過本質和上面一樣,操作如下:[root@localhost ~]# cd /usr/local/apache-tomcat-7.0.53/lib[root@localhost lib]# mkdir -p org/apache/catalina/util[root@localhost lib]# cd org/apache/catalina/util[root@localhost util]# vim ServerInfo.propertiesserver.info=nolinux        # 如果想修改成其它版本號碼,把這個地方的值改成其它值就行了


修改完畢之後,重啟 Tomcat即可看到效果。

效果如下:


三、最佳化 web.xml

        servlet與其它適用於整個Web應用程式設定的設定檔,必須符合servlet規範的標準格式。通過它可以配置你web應用的相關選項,tomcat在啟動的時候會讀取這個檔案,完成你開發的系統的一些初始化操作。

它可以做如下事情: 

        1、提供基於 servlet 的相關配置

        2、增加監聽器,監控session或在tomcat啟動時,載入一些你希望載入的資源。比如建立資料庫連接池等等

        3、設定session到期時間,tomcat預設是30分鐘

        4、更改應用的預設網頁,常用為index.html/index.jsp等

        5、增加過濾器,做一些你希望的過濾操作,比如禁用語的過濾

        6、增加一些 jstl(標準標籤庫)的定義,方便在jsp中直接includ進來,直接使用這些標籤

        7、struts,spring或hibernate的一些配置等等

下面摘錄下O'REILLY 的《Tomcat 權威指南》中的一段話:

       web.xml 的檔案格式定義在 Servlet 規範中,因此所有符合 Servlet 規範的 Java Servlet Container 都會用到它。當 Tomcat 部署應用程式時(在啟用過程中,或載入應用程式後),它都會讀取通用的conf/web.xml,然後再讀取web應用程式中的WEB-INF/web.xml。其實根據他們的位置,我們就可以知道,conf/web.xml檔案中的設定會應用於所有的web應用程式,而某些web應用程式的WEB-INF/web.xml中的設定只應用於該應用程式本身。
       如果沒有WEB-INF/web.xml檔案,tomcat會輸出找不到的訊息,但仍然會部署並使用web應用程式,servlet規範的作者想要實現一種能迅速並簡易設定新範圍的方法,以用作測試,因此,這個web.xml並不是必要的,不過通常最好還是讓每一個上線的web應用程式都有一個自己的WEB-INF/web.xml,即使它只用做識別,但我想這是一個好的習慣。

       由於Servlet規範主要是對於web程式員,而非系統管理員使用的。因此,對於營運來講,我們可能更關心的是網站的預設網頁、自訂錯誤頁面、禁止列目錄等功能。

       由於,正常生產環境中,肯定不會直接由tomcat對公網提供服務,前端肯定放的有apache或者nginx。因此,針對網站的預設首頁和自訂錯誤頁面,我們均在前端的apache或者nginx中做。另外,公司也可能交由程式猿在項目內的WEB-INF/web.xml中去做定義。

       在tomcat新版本中,自動預設已經禁止列目錄功能。

       下面,我列出幾種常見功能,在web.xml中的表現形式:


網站預設首頁:


自訂錯誤頁面:


定義會話逾時時間:


禁止列目錄:


四、最佳化 tomcat-user.xml

       該檔案含有使用者名稱、角色以及密碼的資訊清單檔。負責提供webapps下manager項目的登入認證管理。

       在生產環境中,我們需要將該檔案全部注釋。

       注釋效果如下:


五、最佳化 server.xml

       Tomcat的主設定檔,該檔案中包含很多主要元素,比如Service、Connector、Host等,這些元素都會建立軟體"對象"、排序及進程管道中設定的這些元素嵌套方,使我們可以執行過濾、分組等工作。

       如果要對改檔案做最佳化,我們需要先瞭解該檔案的結構。

       server.xml的結構圖:

該檔案描述了如何啟動Tomcat Server 

<Server>    <Listener />    <GlobaNamingResources>    </GlobaNamingResources    <Service>        <Connector />        <Engine>            <Logger />            <Realm />               <host>                   <Logger />                   <Context />               </host>        </Engine>    </Service></Server>


針對該檔案,我們需要最佳化的點有如下:

1、maxThreads 串連數限制

       maxThreads 是 Tomcat 所能接受最大串連數。一般設定不要超過8000以上,如果你的網站訪問量非常大可能使用運行多個Tomcat執行個體的方法,即,在一個伺服器上啟動多個tomcat然後做負載平衡處理。

這裡還需要注意的一點是,tomcat 和 php 不同。php可以按照cpu和記憶體的情況去配置串連數,上萬很正常。而 java 還需要注意 jvm 的參數配置。如果不注意就會因為jvm參數過小而崩潰。

2、多虛擬機器主機

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.