1. 程式人生 > >tomcat安裝配置規範

tomcat安裝配置規範

上傳 linu tom 用戶權限 onf ash 目的 完全 普通

tomcat用戶設置
1 2 [[email protected] ~]# useradd -u 501 tomcat [[email protected] ~]# passwd tomcat
安裝JDK
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 [[email protected] tools]# tar zxf jdk-8u101-linux-x64.tar.gz -C /usr/local/ [[email protected] tools]
# cd /usr/local/ [[email protected] local]# ln -s jdk1.8.0_101 jdk [[email protected] local]# vim /etc/profile.d/java.sh export JAVA_HOME=/usr/local/jdk export JAVA_BIN=/usr/local/jdk/bin export PATH=$PATH:$JAVA_HOME/bin export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME JAVA_BIN PATH CLASSPATH [[email protected] local]# source /etc/profile.d/java.sh [[email protected] local]# java -version java version "1.8.0_101" Java(TM) SE Runtime Environment (build 1.8.0_101-b13) Java HotSpot(TM) 64-Bit Server VM (build 25.101-b13, mixed mode) [[email protected]
/* */ ~]
# cd /usr/local/ [[email protected] local]# chown -R tomcat.tomcat jdk/

tomcat安裝
1 2 3 4 [[email protected] tools]# tar zxf apache-tomcat-8.5.5.tar.gz -C /usr/local/ [[email protected] tools]# cd /usr/local/ [[email protected] local]# ln -s apache-tomcat-8.5.5 tomcat [[email protected] local]# chown -R tomcat.tomcat tomcat/

應用程序配置
1 2 3 4 5 [[email protected] local]# mkdir -p /data/webapps [[email protected] local]# cd /data/ [[email protected] data]# chown -R tomcat.tomcat webapps [[email protected] local]# su tomcat 將應用程序放置在/data/webapps/目錄下。建立相應的目錄如團購wmw_tuan,靜態化wmw_static,並修改server.xml,對應好目錄即可

啟動tomcat
1 2 3 4 5 6 7 [[email protected] ~]$ /usr/local/tomcat/bin/startup.sh Using CATALINA_BASE: /usr/local/tomcat Using CATALINA_HOME: /usr/local/tomcat Using CATALINA_TMPDIR: /usr/local/tomcat/temp Using JRE_HOME: /usr/local/jdk Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar Tomcat started.

tomcat重啟問題
1 2 3 4 /usr/local/tomcat/bin/shutdown.sh 這個命令是關閉tomcat 重啟有2個問題需要註意: 1、建議生產環境中,每次重啟之前把這兩個文件夾清空,不然可能會因為緩存的問題造成一些奇怪的事件 2、有時候會發現執行shutdown.sh後,tomcat並沒有完全關閉,所以我們可以做腳本kill進程

tomcat腳本
1 2 # vim tomcat.sh # chmod +x tomcat

技術分享

telnet管理端口保護(強制)
1 2 3 4 5 6 7 8 9 說明: 修改默認的8005管理端口為不易猜測的端口(大於1024) 修改SHUTDOWN指令為其他字符串 標準配置: <Server port="8527" shutdown="dangerous"> 備註: 以上配置項的配置內容只是建議配置

ajp連接端口保護(推薦)
1 2 3 4 5 6 7 8 9 10 說明: 修改默認的ajp 8009端口為不易沖突的大於1024端口 通過iptables規則限制ajp端口訪問的權限僅為線上機器 標準配置: <Connector port="8528" protocol="AJP/1.3"/> 備註: 以上配置項內容僅為建議配置,請按照實際情況進行合理配置,但要求端口在8000~8999之間 保護此端口的目的在於防止線下的測試流量被mod_jk轉發至線上tomcat服務器

禁用管理端(強制)
1 2 3 4 5 6 7 8 9 10 11 說明: 刪除默認的{tomcat安裝目錄}/conf/tomcat-user.xml文件,重啟tomcat後將會自動生成新的文件 刪除{tomcat安裝目錄}/webapps下默認所有的目錄和文件 將tomcat應用根目錄配置為tomcat安裝目錄以外的目錄 標準配置: <Context path="" docBase="/data/webapps/bagtree" debug="0" reloadable="false" crossContext="true" /> 備註: 對於前段web模塊,tomcat管理端屬於tomcat的高危安全隱患,一旦被攻破,黑客通過上傳web shell的方式將會直接取 得服務器的控制權,後果極其嚴重

降權啟動(強制)
1 2 3 4 5 6 說明: tomcat啟動用戶權限必須為非root權限,盡量降低tomcat啟動用戶的目錄訪問權限 如需要直接對外使用80端口,可通過普通帳號啟動後,配置iptables規則進行轉發 備註: 避免一旦tomcat服務被入侵,黑客直接獲取高級用戶權限危害整個server的安全

文件列表訪問控制(強制)
1 2 3 4 5 6 7 8 9 10 11 說明: conf/web.xml文件中default部分listings的配置必須為false 標準配置: <init-param> <param-name>listings</param-name> <param-value>false</param-value> </init-param> 備註: false為不列出目錄文件,true為允許列出,默認為false

版本信息隱藏(強制)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 說明: 修改conf/web.xml,重定向403、404以及500等錯誤到指定的錯誤頁面 也可以通過應用程序目錄下的WEB-INF/web.xml進行錯誤頁面的重定向 標準配置: <error-page> <error-code>403</error-code> <location>/forbidden.jsp</location> </error-page> <error-page> <error-code>404</error-code> <location>/notfound.jsp</location> </error-page> <error-page> <error-code>500</error-code> <location>/serverbusy.jsp</location> </error-page> 備註: 在配置中對一些常見錯誤進行重定向,避免當出現錯誤時tomcat默認顯示的錯誤頁面暴露服務器和版本信息 必須確保程序跟目錄下的錯誤頁面已經存在

Server header重寫(推薦)
1 2 3 4 5 6 7 8 說明: 在HTTP Connector配置中加入server的配置 標準配置: server="webserver" 備註: 當tomcat HTTP端口直接提供web服務時此配置生效,加入此配置,將會替換http響應Server header部分默認配置,默認是Apache-Coyote/1.1

訪問限制(根據業務場景需求)
1 2 3 4 5 6 7 8 9 10 說明: 通過配置,限定訪問的ip源 標準配置: <Context path="" docBase="/home/work/tomcat" debug="0" reloadable="false" crossContext="true"> <Valve className="org.apache.catalina.valves.RemoteAddrValue" allow="61.148.18.138,61.135.165.*" deny="*.*.*.*" /> </Context> 備註: ip的白名單,拒絕非白名單ip的訪問,此配置主要是針對高保密級別的系統

起停腳本權限回收(推薦)
1 2 3 4 5 6 7 8 說明: 取出其他用戶對tomcat的bin目錄下shutdown.sh、startup.sh、catalina.sh的可執行權限 標準配置: chmod -R 744 tomcat/bin/* 備註: 防止其他用戶有起停線上tomcat的權限

訪問日誌格式規範(推薦)
1 2 3 4 5 6 7 8 9 10 說明: 開啟tomcat默認訪問日誌中的Referer和User-Agent記錄 標準配置: <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log" suffix=".txt" pattern="%h %l %u %t %r %s %b %{Referer}i %{User-Agent}i %D" resolveHosts="false" /> 備註: 開啟Referer和User-Agent是為了一旦出現安全問題能夠更好的根據日誌進行問題排查

附錄:建議配置標準執行方案
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 1、配置部分(${CATALINA_HOME}conf/server.xml) <Server port="8527" shutdown="dangerous"> <!--Define a non-SSL HTTP/1.1 Connector on port 8080 --> <Connector port="8080" server="webserver" /> <!--Define an AJP1.3 Connector on port 8528--> <!--Define an accesslog--> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log" suffix=".txt" pattern="%h %l %u %t %r %s %b %{Referer}i %{User-Agent}i %D" resolveHosts="false" /> <Connector port="8528" protocol="AJP/1.3" /> <Context path="" docBase="/data/webapps/xxx" debug="0" reloadable="false" crossContext="true"> 2、配置部分(${CATALINA_HOME}conf/web.xml或者WEB-INF/web.xml) <init-param> <param-name>listings</param-name> <param-value>false</param-value> </init-param> <error-page> <error-code>403</error-code> <location>/forbidden.jsp</location> </error-page> <error-page> <error-code>404</error-code> <location>/notfound.jsp</location> </error-page> <error-page> <error-code>500</error-code> <location>/serverbusy.jsp</location> </error-page> 3、刪除如下 tomcat默認目錄和默認文件 tomcat/webapps/* tomcat/conf/tomcat-user.xml 4、去除其他用戶對tomcat起停囧啊本的執行權限 chmod 744 -R tomcat/bin/*

tomcat安裝配置規範