Tomcat 部署及配置

 下载,解压tomcat、jdk

1、解压,链接tomcat、jdk

tar xf jdk-8u161-linux-x64.tar.gz 
tar xf apache-tomcat-8.5.27.tar.gz 
mv jdk1.8.0_161/ /usr/local/
ln -s /usr/local/jdk1.8.0_161 /usr/local/jdk
mv apache-tomcat-8.5.27 /usr/local/
ln -s /usr/local/apache-tomcat-8.5.27 /usr/local/tomcat

2、配置环境变量并使其生效

# tail -4 /etc/profile
export JAVA_HOME=/usr/local/jdk
export CLASSPATH=.$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export TOMCAT_HOME=/usr/local/tomcat

# source /etc/profile

3、赋予权限、修改ulimit

chown -R tomcat.tomcat /usr/local/{jdk/,tomcat/}
echo '*      -     nofile    65535'  >> /etc/security/limits.conf

 4、启动tomcat

su tomcat

/usr/local/tomcat/bin/startup.sh 
#备注:一定要切换到对应的tomcat用户里边启动,权限最小化

#查看启动结果
$ netstat  -lnpt
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name   
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      -                  
tcp6       0      0 :::8080                 :::*                    LISTEN      4088/java          
tcp6       0      0 :::22                   :::*                    LISTEN      -                  
tcp6       0      0 :::8009                 :::*                    LISTEN      4088/java

5、tomcat配置文件的简单介绍

    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
#连接器:首先这个8080是服务端口,后边http/1.1 是http的长连接,连接超时时间,毫秒。8443重定向端口

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
#连接器:AJP的连接器,由于文档不多,不建议使用。

/usr/local/tomcat/webapps/ROOT
#默认的tomcat的根文件位置。如果放到这个里边解压,默认是不需要添加url路径的:http://IP:端口
#如果放到/usr/local/tomcat/webapps/ceshi  访问:http://IP:端口/ceshi

6、tomcat的重启

ll /usr/local/tomcat/
bin
conf
lib
LICENSE
logs
NOTICE
RELEASE-NOTES
RUNNING.txt
temp
webapps
work

#备注:生产环境下,如果重启tomcat建议清空 temp 和 work目录下的东西,
#tomcat启动时会吧临时文件和工作文件放到temp和work文件夹下。建议清空再重启,否则可能发生非常奇怪的问题。

#重启tomcat
/usr/local/tomcat/bin/shutdown.sh 
rm -rf /usr/local/tomcat/{temp/*,work/*}
/usr/local/tomcat/bin/startup.sh

7、配置tomcat的gui

$ tail -5 tomcat-users.xml 

  <<role rolename="manager-gui" />
  <role rolename="admin-gui" />
  <user username="tomcat" password="<password>" roles="manager-gui,admin-gui"/>
</tomcat-users>
#备注:密码一定要复杂。另外建议开启tomcat的状态页面,其余全部删除。状态页面可以很直观的看到tomcat的状态。zabbix比较慢
#修改完之后重启tomcat

 8、tomcat 安全管理规范

每个公司都有每个公司的管理制度以及对应的软件的安全规范条款。这里就引用网上同僚们的一些东西吧。

注意:可以参考原文链接地址

Tomcat的安全
生产环境tomcat规范

1.更改服务监听端口
若 Tomcat 都是放在内网的,则针对 Tomcat 服务的监听地址都是内网地址

标准配置:<Connector port="10000" server="webserver"/>

2.telnet管理端口保护
修改默认的 8005 管理端口不易猜测(大于1024),但要求端口配置在8000~8999之间

修改SHUTDOWN命令为其他字符串 
标准配置:<Server port="8578" shutdown="dangerous">

3.AJP连接端口的保护
修改默认的ajp 8009端口为不易冲突(大于1024),但要求端口配置在8000~8999之间

通过iptables规则限制ajp端口访问的权限仅为线上机器,目的在于防止线下测试流量被apache的mod_jk转发至线上tomcat服务器

标准配置:<Connector port="8349" protocol="AJP/1.3"/>

4.禁用管理端
删除默认$CATALINA_HOME/conf/tomcat-users.xml文件,重启tomcat将会自动生成新的文件

删除$CATALINA_HOME/webapps下载默认的所有目录和文件

将tomcat应用根目录配置为tomcat安装目录以外的目录

标准配置:

a.server.xml配置 
一种直接修改Host节点信息,表示全局配置

<Host name="localhost"  appBase="/data/www/tomcat_webapps" unpackWARs="true" autoDeploy="false"></Host>

另一种直接在Host节点中新增Context节点,指定具体的项目

<Context path="" docBase="/usr/local/tomcat/webapps/jenkins" debug="0" reloadable="false" crossContext="true">
</Context>

b.在$CATALINA_HOME/conf/Catalina/locathost目录下新增文件 test##20160506172651.xml

<Context displayName="test" docBase="/data/www/tomcat_webapps/test##20160506172651.war" reloadable="false" />

5.隐藏Tomcat的版本信息
针对该信息的显示是由一个jar包控制的,该jar包存放在$CATALINA_HOME/lib目录下,名称为 catalina.jar,通过 jar xf 命令解压这个 jar 包会得到两个目录 META-INF 和 org ,修改 org/apache/catalina/util/ServerInfo.properties 文件中的 serverinfo 字段来实现来更改我们tomcat的版本信息

$ cd $CATALINA_HOME/lib
$ jar xf catalina.jar
$ cat org/apache/catalina/util/ServerInfo.properties |grep -v '^$|#'
$ mkdir -p org/apache/catalina/util
$ vim ServerInfo.properties
server.info=nolinux        # 把这个值改成其它值就行了

自定义错误页面:修改$CATALINA_HOME/conf/web.xml重定向 403/404/500等错误到指定的错误页面

6.降权启动
Tomcat启动用户权限必须非root权限,尽量降低tomcat启动用户的目录访问权限,如需直接对外使用80端口,可通过普通账号启动后,配置iptables规则进行转发,为了防止 Tomcat 被植入 web shell 程序后,可以修改项目文件。要将 Tomcat 和项目的属主做分离,即便被破坏也无法创建和编辑项目文件

7.文件列表访问控制
$CATALINA_HOME/conf/web.xml文件中的default部分的listings的配置必须为false(默认),表示不列出文件列表

8.访问限制
通过配置,限定访问的IP来源

全局设置限定IP和域名访问:

<Host name="localhost"  appBase="/data/www/tomcat_webapps"   unpackWARs="true" autoDeploy="false">
   <Valve className="org.apache.catalina.valves.RemoteAddrValve"  allow="192.168.1.10,192.168.1.30,192.168.2.*" deny=""/>  
   <Valve className="org.apache.catalina.valves.RemoteHostValve"  allow="www.test.com,*.test.com" deny=""/>
</Host>

9.脚本权限回收
控制CATALINAHOME/bin目录下的start.sh、catalina.sh、shutdown.sh的可执行权限;
chmod −R 744 CATALINA_HOME/bin/*

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 &quot;%r&quot; %s %b %{Referer}i %{User-Agent}i %D"
     resolveHosts="false" />

11.Server header重写
在HTTP Connector配置中加入server的配置,server="chuck-server"
    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" 
               server="lltest" />


# curl --head http://localhost:8080 



Tomcat 安全管理规范
Tomcat 安全管理规范

未完待续!!!!!!!

原文地址:https://www.cnblogs.com/Star-Haitian/p/8424278.html