Tomcat8安装, 安全配置与性能优化
一、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.23server.number=8.0.23.0server.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.propertiesserver.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  #开机启动 | 
参考资料:
https://github.com/judasn/Linux-Tutorial/blob/master/Tomcat-Install-And-Settings.md
http://nolinux.blog.51cto.com/4824967/1608940
centos7设置防火墙:http://stackoverflow.com/questions/24729024/centos-7-open-firewall-port
JVM模型:http://xmuzyq.iteye.com/blog/599750
                    
                
                
            
        
浙公网安备 33010602011771号