原文:http://blog.csdn.net/our_sky/article/details/51362676
一、Tomcat 安裝
- 官網:http://tomcat.apache.org/
- Tomcat8官網下載地址:http://tomcat.apache.org/download-80.cgi
- 為了便於文件管理,個人習慣 在/opt目錄下創建 一個install目錄用於存放 軟件安裝包,在/usr 目錄下創建local文件夾用戶存放解壓文件
- 下載安裝包: wget http://apache.fayea.com/tomcat/tomcat-8/v8.0.32/bin/apache-tomcat-8.0.32.tar.gz
- 解壓壓縮包: tar -zxvf apache-tomcat-8.0.32.tar.gz
- 移動解壓文件到 mv apache-tomcat-8.0.32/ /usr/local/
- 為方便起見,可以使用 mv /usr/local/apache-tomcat-8.0.32/ /usr/local/tomcat8/ 修改目錄名稱
sudo /etc/rc.d/init.d/iptables save
二、Tomcat 安全配置與優化
2.1優化server.xml
2.1.1 隱藏版本信息
- 隱藏HTTP 頭部的版本信息 。
編輯server.xml: vi /usr/local/tomcat8/conf/server.xml
- <span style="font-family:Consolas, Liberation Mono, Menlo, Courier, monospace;"> </span><span style="font-family:Microsoft YaHei;"> <Connector port="8080" protocol="HTTP/1.1"
- connectionTimeout="20000"
- redirectPort="8443" server="APP Srv1.0"/></span>
- 隱藏404頁面出現的版本號

我們可以通過 jar xf 命令解壓這個 jar 包會得到兩個目錄 META-INF 和 org ,通過修改 org/apache/catalina/util/ServerInfo.properties 文件中 的 serverinfo 字段來實現來更改我們tomcat的版本信息。
文件信息如下:
[root@localhost ~]
# cat /usr/local/tomcat8/lib/org/apache/catalina/util/ServerInfo.properties |grep -v '^$|#'
server.info=Apache Tomcat
/8
.0.23
server.number=8.0.23.0
server.built=Mar 18 2016 20:31:49 UTC
還有另外一種方法來實現隱藏或偽裝Tomcat的版本信息,其本質和上面一樣,操作如下:
[root@localhost ~]
# cd /usr/local/tomcat8/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
# 如果想修改成其它版本號,把這個地方的值改成其它值就行了
修改效果如下:
2.1.2禁用Tomcat管理界面
生產環境一般不適用Tomcat默認的管理界面,這些頁面存放在Tomcat 的webapps安裝目錄下,
把該目錄下的所有文件刪除即可:rm -rf /usr/local/tomcat8/webapps/*
另外刪除相關的配置文件 host-manager.xml 和 manager.xml,在Tomcat 安裝目錄 conf/Catalina/localhost目錄下。
注釋或刪除tomcat_user.xml 中的所有用戶權限。
2.1.3 應用程序安全
tomcat默認 開啟了對war熱部署。為了防止被植入木馬惡意攻擊,我們要關閉war包自動部署。
關閉自動加載最新代碼(設置reloadable)
修改實例:
- <Host name="localhost" appBase="webapps"
- unpackWARs="false" autoDeploy="false"
- reloadable="false">
2.1.4 更改關閉Tomcat的指令
server.xml中定義了可以直接關閉 Tomcat 實例的管理端口。我們通過 telnet 連接上該端口之后,輸入 SHUTDOWN (此為默認關閉指 令)即可關閉 Tomcat 實例(注意,此時雖然實例關閉了,但是進程還是存在的)。由於默認關閉 Tomcat 的端口和指令都很簡單。默認端口為 8005,指令為SHUTDOWN 。因此我們需要將關閉指令修改復雜一點。
當然,在新版的 Tomcat 中該端口僅監聽在127.0.0.1上,因此大家也不必擔心。除非黑客登陸到tomcat本機去執行關閉操作。
修改實例:
<Server port="8005" shutdown="9SDKJ29jksjf23sjf0LSDF92JKS9DKkjsd">
或者禁用8005端口
<Server port="-1" shutdown="SHUTDOWN">
2.1.5 連接池配置
使用線程池,用較少的線程處理較多的訪問,可以提高tomcat處理請求的能力。
編輯配置文件 server.xml : vi /usr/local/tomcat8/conf/server.xml
2.1.5.1 打開被注釋的默認連接池配置
默認配置:
- <!--
- <Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
- maxThreads="150" minSpareThreads="4"/>
- -->
- <Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
- maxThreads="150" minSpareThreads="100"
- prestartminSpareThreads="true" maxQueueSize="100"/>
- name: 線程名稱
- namePrefix: 線程前綴
- maxThreads : 最大並發連接數,不配置時默認200,一般建議設置500~ 800 ,要根據自己的硬件設施條件和實際業務需求而定。
- minSpareThreads:Tomcat啟動初始化的線程數,默認值25
- prestartminSpareThreads:在tomcat初始化的時候就初始化minSpareThreads的值, 不設置true時minSpareThreads
- maxQueueSize: 最大的等待隊列數,超過則拒絕請求
2.1.5.2 修改鏈接配置
- <Connector port="8080" protocol="HTTP/1.1"
- connectionTimeout="20000"
- redirectPort="8443" />
- <Connector port="8080" protocol="org.apache.coyote.http11.Http11Nio2Protocol"
- connectionTimeout="20000"
- redirectPort="8443"
- executor="tomcatThreadPool"
- enableLookups="false"
- acceptCount="100"
- maxPostSize="10485760"
- compression="on"
- disableUploadTimeout="true"
- compressionMinSize="2048"
- noCompressionUserAgents="gozilla, traviata"
- acceptorThreadCount="2"
- compressableMimeType="text/html,text/xml,text/plain,text/css,text/javascript,application/javascript"
- URIEncoding="utf-8"/>
- port:連接端口。
- protocol:連接器使用的傳輸方式。 Tomcat 8 設置 nio2 更好:org.apache.coyote.http11.Http11Nio2Protocol
- protocol, Tomcat 6、7 設置 nio 更好:org.apache.coyote.http11.Http11NioProtocol
- executor: 連接器使用的線程池名稱
- enableLookups:禁用DNS 查詢
- acceptCount:指定當所有可以使用的處理請求的線程數都被使用時,可以放到處理隊列中的請求數,超過這個數的請求將不予處理,默認設置 100 。
- maxPostSize:限制 以FORM URL 參數方式的POST請求的內容大小,單位字節,默認是 2097152(2兆),10485760 為 10M。如果要禁用限制,則可以設置為 -1。
- acceptorThreadCount: 用於接收連接的線程的數量,默認值是1。一般這個指需要改動的時候是因為該服務器是一個多核CPU,如果是多核 CPU 一般配置為 2。
- compression:傳輸時是壓縮。
- compressionMinSize:壓縮的大小
- noCompressionUserAgents:不啟用壓縮的瀏覽器
2.1.6 管理AJP端口
- <span style="font-family:Microsoft YaHei;"> <!--<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />--></span>
2.3 應用程序部署
1
2
3
4
5
6
|
[root@localhost ~]
# groupadd tomcat
[root@localhost ~]
# useradd -g tomcat tomcat
[root@localhost ~]
# passwd tomcat
[root@localhost ~]
# chown tomcat.tomcat -R /usr/local/tomcat
[root@localhost ~]
# su - tomcat /usr/local/tomcat/bin/startup.sh
[root@localhost ~]
# echo 'su - tomcat -c "tomcat /usr/local/tomcat/bin/startup.sh"' >> /etc/rc.local #開機啟動
|