欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

基于Tomcat安全配置與性能優(yōu)化詳解

 更新時(shí)間:2017年12月11日 09:05:16   作者:小山博客  
下面小編就為大家分享一篇基于Tomcat安全配置與性能優(yōu)化詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

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

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

一、版本安全

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

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

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

1、盡量避免跨大版本的升級(jí)

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

二、隱藏版本信息

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

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

我們可以通過(guò) jar xf 命令解壓這個(gè) jar 包會(huì)得到兩個(gè)目錄 META-INF 和 org ,通過(guò)修改 org/apache/catalina/util/ServerInfo.properties 文件中的 serverinfo 字段來(lái)實(shí)現(xiàn)來(lái)更改我們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)然,還有另外一種方法來(lái)實(shí)現(xiàn)隱藏或偽裝Tomcat的版本信息,不過(guò)本質(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 # 如果想修改成其它版本號(hào),把這個(gè)地方的值改成其它值就行了

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

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

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

它可以做如下事情:

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

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

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

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

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

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

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

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

web.xml 的文件格式定義在 Servlet 規(guī)范中,因此所有符合 Servlet 規(guī)范的 Java Servlet Container 都會(huì)用到它。當(dāng) Tomcat 部署應(yīng)用程序時(shí)(在激活過(guò)程中,或加載應(yīng)用程序后),它都會(huì)讀取通用的conf/web.xml,然后再讀取web應(yīng)用程序中的WEB-INF/web.xml。其實(shí)根據(jù)他們的位置,我們就可以知道,conf/web.xml文件中的設(shè)定會(huì)應(yīng)用于所有的web應(yīng)用程序,而某些web應(yīng)用程序的WEB-INF/web.xml中的設(shè)定只應(yīng)用于該應(yīng)用程序本身。

如果沒(méi)有WEB-INF/web.xml文件,tomcat會(huì)輸出找不到的消息,但仍然會(huì)部署并使用web應(yīng)用程序,servlet規(guī)范的作者想要實(shí)現(xiàn)一種能迅速并簡(jiǎn)易設(shè)定新范圍的方法,以用作測(cè)試,因此,這個(gè)web.xml并不是必要的,不過(guò)通常最好還是讓每一個(gè)上線的web應(yīng)用程序都有一個(gè)自己的WEB-INF/web.xml,即使它只用做識(shí)別,但我想這是一個(gè)好的習(xí)慣。

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

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

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

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

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

自定義錯(cuò)誤頁(yè)面,

定義會(huì)話超時(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等,這些元素都會(huì)創(chuàng)建軟件"對(duì)象"、排序及進(jìn)程管道中設(shè)置的這些元素嵌套方,使我們可以執(zhí)行過(guò)濾、分組等工作。

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

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

該文件描述了如何啟動(dòng)Tomcat Server

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

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

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

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

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

2、多虛擬主機(jī)

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

3、壓錯(cuò)傳輸

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

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

提示:

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

4、管理AJP端口

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

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

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

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

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

修改實(shí)例:

<Server port="8005" shutdown="9SDKJ29jksjf23sjf0LSDF92JKS9DKkjsd">

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

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

修改實(shí)例:

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

7、關(guān)閉war自動(dòng)部署

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

修改實(shí)例:

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

六、禁用 Tomcat 管理頁(yè)面

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

我們只需要?jiǎng)h除該目錄下的所有文件即可。

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

七、用普通用戶啟動(dòng) Tomcat

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

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

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

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

以上這篇基于Tomcat安全配置與性能優(yōu)化詳解就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 一文告訴你如何解決Tomcat亂碼問(wèn)題(很詳細(xì)!)

    一文告訴你如何解決Tomcat亂碼問(wèn)題(很詳細(xì)!)

    這篇文章主要給大家介紹了關(guān)于如何解決Tomcat亂碼問(wèn)題的相關(guān)資料,還給大家介紹了tomcat窗口中文亂碼的解決方法,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2022-03-03
  • tomcat管道模式 pipeline與valve詳解

    tomcat管道模式 pipeline與valve詳解

    這篇文章主要介紹了tomcat管道模式 pipeline與valve詳解,管道模式就像一條管道把多個(gè)對(duì)象連接起來(lái),整體看起來(lái)就像若干個(gè)閥門(mén)嵌套在管道中,而處理邏輯就放在閥門(mén)上,需要的朋友可以參考下
    2019-07-07
  • Tomcat開(kāi)啟JMX服務(wù)方法介紹

    Tomcat開(kāi)啟JMX服務(wù)方法介紹

    這篇文章主要介紹了Tomcat開(kāi)啟JMX服務(wù)方法的相關(guān)內(nèi)容,小編覺(jué)得挺不錯(cuò)的,在這里給大家分享一下,需要的朋友可以參考。
    2017-10-10
  • 使用Tomcat Native提升Tomcat IO效率的方法詳解

    使用Tomcat Native提升Tomcat IO效率的方法詳解

    這篇文章主要介紹了使用Tomcat Native提升Tomcat IO效率的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-12-12
  • intelli idea中配置Tomcat找不到的解決辦法

    intelli idea中配置Tomcat找不到的解決辦法

    這篇文章主要介紹了intelli idea中配置Tomcat找不到的解決辦法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • intellij idea 使用Tomcat部署的項(xiàng)目位置在哪

    intellij idea 使用Tomcat部署的項(xiàng)目位置在哪

    intellij idea 使用Tomcat部署的項(xiàng)目在哪里,為什么不在Tomcat的webapps目錄下面,本文通過(guò)圖文實(shí)例相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2021-01-01
  • Tomcat 中如何給 web 項(xiàng)目配置虛擬目錄的方法

    Tomcat 中如何給 web 項(xiàng)目配置虛擬目錄的方法

    本篇文章主要介紹了Tomcat 中如何給 web 項(xiàng)目配置虛擬目錄的方法,具有一定的參考價(jià)值,有興趣的可以了解一下
    2017-08-08
  • 如何在mac的terminal安裝Apache Tomcat

    如何在mac的terminal安裝Apache Tomcat

    這篇文章主要介紹了在mac的terminal安裝Apache Tomcat 的方法,需要的朋友參考下吧
    2017-05-05
  • Tomcat實(shí)現(xiàn)session共享(session 會(huì)話復(fù)制)

    Tomcat實(shí)現(xiàn)session共享(session 會(huì)話復(fù)制)

    這篇文章主要介紹了Tomcat實(shí)現(xiàn)session共享,其實(shí)就是session 會(huì)話復(fù)制的相關(guān)方法,需要的朋友可以參考下
    2017-09-09
  • Windwos下實(shí)現(xiàn)Nginx+Tomcat集群過(guò)程解析

    Windwos下實(shí)現(xiàn)Nginx+Tomcat集群過(guò)程解析

    這篇文章主要介紹了Windwos下實(shí)現(xiàn)Nginx+Tomcat集群過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-10-10

最新評(píng)論