sudo /etc/rc.d/init.d/iptables save
編輯server.xml: vi /usr/local/tomcat8/conf/server.xml javascript
<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>
針對該信息的顯示是由一個jar包控制的,該jar包存放在 Tomcat 安裝目錄下的lib目錄下,名稱爲 catalina.jar。css
咱們能夠經過 jar xf 命令解壓這個 jar 包會獲得兩個目錄 META-INF 和 org ,經過修改 org/apache/catalina/util/ServerInfo.properties 文件中的 serverinfo 字段來實現來更改咱們tomcat的版本信息。html
文件信息以下:前端
[root@localhost ~]
# cat /usr/local/tomcat8/lib/org/apache/catalina/util/ServerInfo.properties |grep -v '^$|#'
java
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
# 若是想修改爲其它版本號,把這個地方的值改爲其它值就好了
生產環境通常不適用Tomcat默認的管理界面,這些頁面存放在Tomcat 的webapps安裝目錄下,linux
把該目錄下的全部文件刪除便可:rm -rf /usr/local/tomcat8/webapps/*nginx
另外刪除相關的配置文件 host-manager.xml 和 manager.xml,在Tomcat 安裝目錄 conf/Catalina/localhost目錄下。git
註釋或刪除tomcat_user.xml 中的全部用戶權限。github
tomcat默認 開啓了對war熱部署。爲了防止被植入木馬惡意攻擊,咱們要關閉war包自動部署。web
關閉自動加載最新代碼(設置reloadable)
修改實例:
<Host name="localhost" appBase="webapps" unpackWARs="false" autoDeploy="false" reloadable="false">
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">
使用線程池,用較少的線程處理較多的訪問,能夠提升tomcat處理請求的能力。
編輯配置文件 server.xml : vi /usr/local/tomcat8/conf/server.xml
默認配置:
<!-- <Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="150" minSpareThreads="4"/> -->
修改實例:
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
maxThreads="500" minSpareThreads="30" maxIdleTime="60000"
prestartminSpareThreads="true" maxQueueSize="100"/>
參數講解:
默認配置:
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
修改配置:
<Connector port="8080" protocol="org.apache.coyote.http11.Http11Nio2Protocol" connectionTimeout="20000" maxConnections="10000" redirectPort="8443" executor="tomcatThreadPool" enableLookups="false" acceptCount="100" maxPostSize="10485760" maxHttpHeaderSize="8192" 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"/>
<span style="font-family:Microsoft YaHei;"> <!--<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />--></span>
默認tomcat是root身份運行的,這樣不安全。不要使用root用戶啓動tomcat。Java程序與C程序不一樣。nginx,httpd 使用root用戶啓動守護80端口,子進程/線程會經過setuid(),setgid()兩個函數切換到普通用戶。即父進程全部者是root用戶,子進程與多線程全部者是一個非root用戶,這個用戶沒有shell,沒法經過ssh與控制檯登錄系統,Java 的JVM 是與系統無關的,是創建在OS之上的,你使用什麼用戶啓動Tomcat,那麼Tomcat 就會繼承該全部者的權限。爲了防止 Tomcat 被植入 web shell 程序後,能夠修改項目文件。所以咱們要將 Tomcat 和項目的屬主作分離,這樣子,即使被搞,他也沒法建立和編輯項目文件。
[root@localhost ~]# groupadd tomcat [root@localhost ~]# useradd -g tomcat tomcat [root@localhost ~]# passwd tomcat [root@localhost ~]# chown tomcat.tomcat -R /usr/local/tomcat8 [root@localhost ~]# su - tomcat /usr/local/tomcat8/bin/startup.sh [root@localhost ~]# echo 'su - tomcat -c "tomcat /usr/local/tomcat8/bin/startup.sh"' >> /etc/rc.local #開機啓動