久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Tomcat 安全配置與性能優(yōu)化

 日月桃子 2015-10-09

Tomcat 是 Apache軟件基金會下的一個免費(fèi)、開源的WEB應(yīng)用服務(wù)器,,它可以運(yùn)行在 Linux 和 Windows 等多個平臺上,,由于其性能穩(wěn)定、擴(kuò)展性好,、免費(fèi)等特點(diǎn)深受廣大用戶喜愛,。目前,很多互聯(lián)網(wǎng)應(yīng)用和企業(yè)應(yīng)用都部署在 Tomcat 服務(wù)器上,,比如我們公司,,哈。

之前我們 tomcat 都采用的是默認(rèn)的配置,,因此在安全方面還是有所隱患的,。上周對測試環(huán)境的所有服務(wù)器的tomcat都做了安全優(yōu)化,,其間也粗略做了一些性能優(yōu)化,這里就簡單記錄分享下,!

一,、版本安全

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

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

在升級版本中,需要注意的事情有兩點(diǎn):

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

2,、將當(dāng)前老版本 tomcat 的server.xml、catalina.sh,、web.xml和tomcat-users.xml文件進(jìn)行備份,,然后部署完新版本的 tomcat 之后,將這些配置文件覆蓋過去即可,,然后停掉舊版本,,啟動新版本即可完成升級操作。

二,、隱藏版本信息

為了避免黑客針對某些版本進(jìn)行攻擊,,因此我們需要隱藏或者偽裝 Tomcat 的版本信息。

默認(rèn) Tomcat 的版本信息如下:

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

我們可以通過 jar xf 命令解壓這個 jar 包會得到兩個目錄 META-INF 和 org , 通過修改 org/apache/catalina/util/ServerInfo.properties 文件中的 serverinfo 字段來實(shí)現(xiàn)來更改我們tomcat的版本信息,。

文件信息如下:

[root@localhost ~]#  cat org/apache/catalina/util/ServerInfo.properties |grep -v '^$|#'
server.info=Apache Tomcat/7.0.53
server.number=7.0.53.0
server.built=Mar 25 2014 06:20:16
當(dāng)然,,還有另外一種方法來實(shí)現(xiàn)隱藏或偽裝Tomcat的版本信息,不過本質(zhì)和上面一樣,,操作如下:
[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.properties
server.info=nolinux        # 如果想修改成其它版本號,,把這個地方的值改成其它值就行了

修改完畢之后,重啟 Tomcat即可看到效果,!

效果如下:

三,、優(yōu)化 web.xml

servlet與其它適用于整個Web應(yīng)用程序設(shè)置的配置文件,,必須符合servlet規(guī)范的標(biāo)準(zhǔn)格式。通過它可以配置你web應(yīng)用的相關(guān)選項(xiàng),,tomcat在啟動的時(shí)候會讀取這個文件,,完成你開發(fā)的系統(tǒng)的一些初始化操作。

它可以做如下事情: 

1,、提供基于 servlet 的相關(guān)配置

2,、增加監(jiān)聽器,監(jiān)控session或在tomcat啟動時(shí),,加載一些你希望加載的資源,。比如創(chuàng)建數(shù)據(jù)庫連接池等等

3,、設(shè)置session過期時(shí)間,,tomcat默認(rèn)是30分鐘

4、更改應(yīng)用的默認(rèn)網(wǎng)頁,,常用為index.html/index.jsp等

5,、增加過濾器,做一些你希望的過濾操作,,比如敏感詞匯的過濾

6,、增加一些 jstl(標(biāo)準(zhǔn)標(biāo)簽庫)的定義,方便在jsp中直接includ進(jìn)來,,直接使用這些標(biāo)簽

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

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

web.xml 的文件格式定義在 Servlet 規(guī)范中,,因此所有符合 Servlet 規(guī)范的 Java Servlet Container 都會用到它,。當(dāng) Tomcat 部署應(yīng)用程序時(shí)(在激活過程中,或加載應(yīng)用程序后),,它都會讀取 通用的conf/web.xml ,,然后再讀取web應(yīng)用程序中的 WEB-INF/web.xml 。其實(shí)根據(jù)他們的位置,,我們就可以知道,, conf/web.xml文件中的設(shè)定會應(yīng)用于所有的web應(yīng)用程序,而某些web應(yīng)用程序的WEB-INF/web.xml中的設(shè)定只應(yīng)用于該應(yīng)用程序本身 ,。
       如果沒有WEB-INF/web.xml文件,,tomcat會輸出找不到的消息,但仍然會部署并使用web應(yīng)用程序,,servlet規(guī)范的作者想要實(shí)現(xiàn)一種能迅速并簡易設(shè)定新范圍的方法,,以用作測試,因此,,這個web.xml并不是必要的,,不過通常最好還是讓每一個上線的web應(yīng)用程序都有一個自己的WEB-INF/web.xml,,即使它只用做識別,但我想這是一個好的習(xí)慣,。

由于Servlet規(guī)范主要是對于web程序員,,而非系統(tǒng)管理員使用的。因此,,對于運(yùn)維來講,,我們可能更關(guān)心的是站點(diǎn)的默認(rèn)網(wǎng)頁、 自定義錯誤頁面,、禁止列目錄等功能,。

由于,正常生產(chǎn)環(huán)境中,,肯定不會直接由tomcat對公網(wǎng)提供服務(wù),,前端肯定放的有apache或者nginx。因此,,針對站點(diǎn)的默認(rèn)主頁和自定義錯誤頁面,,我們均在前端的apache或者nginx中做。另外,,公司也可能交由程序猿在項(xiàng)目內(nèi)的 WEB-INF/web.xml中去做定義,。

在tomcat新版本中,自動默認(rèn)已經(jīng)禁止列目錄功能,。

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

站點(diǎn)默認(rèn)主頁:

自定義錯誤頁面:

定義會話超時(shí)時(shí)間:

禁止列目錄:

四,、優(yōu)化 tomcat-user.xml

該文件含有用戶名,、角色以及密碼的清單文件。負(fù)責(zé)提供webapps下manager項(xiàng)目的登錄認(rèn)證管理,。

在生產(chǎn)環(huán)境中,,我們需要將該文件全部注釋。

注釋效果如下:

五,、優(yōu)化 server.xml

Tomcat的主配置文件,,該文件中包含很多主要元素,比如Service,、Connector,、Host等,這些元素都會創(chuàng)建軟件"對象",、排序及進(jìn)程管道中設(shè)置的這些元素嵌套方,,使我們可以 執(zhí)行過濾、分組等工作。

如果要對改文件做優(yōu)化,,我們需要先了解該文件的結(jié)構(gòu),!

server.xml的結(jié)構(gòu)圖:

該文件描述了如何啟動Tomcat Server

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

針對該文件,我們需要優(yōu)化的點(diǎn)有如下:

1,、 maxThreads 連接數(shù)限制

maxThreads 是 Tomcat 所能接受最大連接數(shù),。一般設(shè)置不要超過8000以上,如果你的網(wǎng)站訪問量非常大可能使用運(yùn)行多個Tomcat實(shí)例的方法,, 即,,在一個服務(wù)器上啟動多個tomcat然后做負(fù)載均衡處理。

這里還需要注意的一點(diǎn)是,,tomcat 和 php 不同,。php可以按照cpu和內(nèi)存的情況去配置連接數(shù),上萬很正常,。而 java 還需要注意 jvm 的參數(shù)配置,。如果不注意就會因?yàn)閖vm參數(shù)過小而崩潰。

2,、多虛擬主機(jī)

強(qiáng)烈建議不要使用 Tomcat 的虛擬主機(jī),,推薦每個站點(diǎn)使用一個實(shí)例,。即,,可以啟動多個 Tomcat,而不是啟動一個 Tomcat 里面包含多個虛擬主機(jī),。因?yàn)?Tomcat是多線程,,共享內(nèi)存,任何一個虛擬主機(jī)中的應(yīng)用崩潰,,都會影響到所有應(yīng)用程序,。雖然采用多實(shí)例的方式會產(chǎn)生過多的開銷,但至少保障了應(yīng)用程序的隔離和安全,。

3,、壓錯傳輸

tomcat作為一個應(yīng)用服務(wù)器,也是支持 gzip 壓縮功能的,。我們可以在 server.xml 配置文件中的 Connector 節(jié)點(diǎn)中配置如下參數(shù),,來實(shí)現(xiàn)對指定資源類型進(jìn)行壓縮。

   compression="on"             # 打開壓縮功能 
   compressionMinSize="50"      # 啟用壓縮的輸出內(nèi)容大小,,默認(rèn)為2KB 
   noCompressionUserAgents="gozilla, traviata"      # 對于以下的瀏覽器,,不啟用壓縮 
   compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain" # 哪些資源類型需要壓縮

提示:

Tomcat 的壓縮是在客戶端請求服務(wù)器對應(yīng)資源后,從服務(wù)器端將資源文件壓縮,,再輸出到客戶端,,由客戶端的瀏覽器負(fù)責(zé)解壓縮并瀏覽。相對于普通的瀏覽過程 HTML,、CSS,、Javascript和Text,,它可以節(jié)省40% 左右的流量。更為重要的是,,它可以對動態(tài)生成的,,包括CGI、PHP,、JSP,、ASP、Servlet,SHTML等輸出的網(wǎng)頁也能進(jìn)行壓縮,,壓縮效率也很高,。但是, 壓縮會增加 Tomcat 的負(fù)擔(dān),,因此最好采用Nginx + Tomcat 或者 Apache + Tomcat 方式,,將壓縮的任務(wù)交由 Nginx/Apache 去做。

4,、管理AJP端口

AJP是為 Tomcat 與 HTTP 服務(wù)器之間通信而定制的協(xié)議,,能提供較高的通信速度和效率。如果tomcat前端放的是apache的時(shí)候,,會使用到AJP這個連接器,。由于我們公司前端是由nginx做的反向代理,因此不使用此連接器,,因此需要注銷掉該連接器,。

<!--
    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
-->

5、更改關(guān)閉 Tomcat 實(shí)例的指令

server.xml中定義了可以直接關(guān)閉 Tomcat 實(shí)例的管理端口,。我們通過 telnet 連接上該端口之后,,輸入 SHUTDOWN (此為默認(rèn)關(guān)閉指令)即可關(guān)閉 Tomcat 實(shí)例(注意,此時(shí)雖然實(shí)例關(guān)閉了,,但是進(jìn)程還是存在的),。由于默認(rèn)關(guān)閉 Tomcat 的端口和指令都很簡單。默認(rèn)端口為8005,,指令為SHUTDOWN ,。因此我們需要將關(guān)閉指令修改復(fù)雜一點(diǎn)。

當(dāng)然,,在新版的 Tomcat 中該端口僅監(jiān)聽在127.0.0.1上,,因此大家也不必?fù)?dān)心。除非黑客登陸到tomcat本機(jī)去執(zhí)行關(guān)閉操作,。

修改實(shí)例:

<Server port="8005" shutdow n="9SDKJ29jksjf23sjf0LSDF92JKS9DKkjsd">

6,、更改 Tomcat 的服務(wù)監(jiān)聽端口

一般公司的 Tomcat 都是放在內(nèi)網(wǎng)的,因此我們針對 Tomcat 服務(wù)的監(jiān)聽地址都是內(nèi)網(wǎng)地址。

修改實(shí)例:

<Connector port="8080" address="172.16.100.1" />

7,、關(guān)閉war自動部署

默認(rèn) Tomcat 是開啟了對war包的熱部署的,。為了防止被植入木馬等惡意程序,因此我們要關(guān)閉自動部署,。

修改實(shí)例:

      <Host name="localhost"  appBase=""
            unpackWARs="false" autoDeploy="false">

六,、禁用 Tomcat 管理頁面

我們線上是不使用 Tomcat 默認(rèn)提供的管理頁面的,因此都會在初始化的時(shí)候就把這些頁面刪掉,。這些頁面是存放在 Tomcat 安裝目錄下的webapps目錄下的,。

我們只需要刪除該目錄下的所有文件即可。

當(dāng)然,,還有涉及管理頁面的2個配置文件 host-manager.xml 和 manager.xml 也需要一并刪掉,。這兩個文件存放在 Tomcat 安裝目錄下的conf/Catalina/localhost目錄下。

七,、用普通用戶啟動 Tomcat

為了進(jìn)一步安全,,我們不建議使用 root 來啟動 Tomcat。這邊建議使用專用用戶 tomcat 或者 nobody 用戶來啟動 Tomcat,。

在啟動之前,,需要對我們的tomcat 安裝目錄下所有文件的屬主和屬組都設(shè)置為指定用戶。

八,、分離 Tomcat 和項(xiàng)目的用戶

為了防止 Tomcat 被植入 web shell 程序后,,可以修改項(xiàng)目文件。因此我們要將 Tomcat 和項(xiàng)目的屬主做分離,,這樣子,,即便被搞,他也無法創(chuàng)建和編輯項(xiàng)目文件,。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn),。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多