一、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/ 修改目录名称
 
 设置端口防火墙:
   centos7以下版本设置方法: 
      方法一:便于测试,可以先关闭关闭 iptables,防止端口拦截无法进行测试:service iptables stop 
      方法二:在iptables中添加允许规则(以下以Tomcat默认端口8080为例),操作步骤如下:
        1、添加规则  sudo iptables -I INPUT -p tcp -m tcp --dport 8080 -j ACCEPT   
        2、保存规则:sudo /etc/rc.d/init.d/iptables save
        3、重启iptables: sudo service iptables restart
 
   centos7设置方法:
开启端口
     firewall-cmd --zone=public --add-port=80/tcp --permanent
 
命令含义:
  --zone #作用域
  --add-port=80/tcp  #添加端口,格式为:端口/通讯协议
  --permanent   #永久生效,没有此参数重启后失效
 
重启防火墙
  firewall-cmd --reload
      
 Tomcat服务启动停止:
      启动tomcat:sh /usr/local/tomcat8/bin/startup.sh
 
      查看日志:tail -200f /usr/local/tomcat8/logs/catalina.out
    
      停止tomcat: sh /usr/local/tomcat8/bin/shutdown.sh
 

二、Tomcat 安全配置与优化

   2.1优化server.xml

2.1.1 隐藏版本信息

  • 隐藏HTTP 头部的版本信息 。

编辑server.xml: vi /usr/local/tomcat8/conf/server.xml

                 为Connector 添加 server 属性      
  1. <span style="font-family:Consolas, Liberation Mono, Menlo, Courier, monospace;">                </span><span style="font-family:Microsoft YaHei;"> <Connector port="8080" protocol="HTTP/1.1"
  2. connectionTimeout="20000"
  3. redirectPort="8443" server="APP Srv1.0"/></span>

  • 隐藏404页面出现的版本号

 
          针对该信息的显示是由一个jar包控制的,该jar包存放在 Tomcat 安装目录下的lib目录下,名称为 catalina.jar。

我们可以通过 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)

修改实例:

  1. <Host name="localhost"  appBase="webapps"
  2. unpackWARs="false" autoDeploy="false"
  3. 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 打开被注释的默认连接池配置

默认配置:

  1. <!--
  2. <Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
  3. maxThreads="150" minSpareThreads="4"/>
  4. -->
                                修改实例:           
  1. <Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
  2. maxThreads="150" minSpareThreads="100"
  3. prestartminSpareThreads="true" maxQueueSize="100"/>
 
                   参数讲解:
  • name: 线程名称
  • namePrefix: 线程前缀
  • maxThreads : 最大并发连接数,不配置时默认200,一般建议设置500~ 800 ,要根据自己的硬件设施条件和实际业务需求而定。
  • minSpareThreads:Tomcat启动初始化的线程数,默认值25
  • prestartminSpareThreads:在tomcat初始化的时候就初始化minSpareThreads的值, 不设置true时minSpareThreads
  • maxQueueSize: 最大的等待队列数,超过则拒绝请求

2.1.5.2 修改链接配置

 
                 
                 默认配置:
  1. <Connector port="8080" protocol="HTTP/1.1"
  2. connectionTimeout="20000"
  3. redirectPort="8443" />
 
                  修改配置:
  1. <Connector port="8080" protocol="org.apache.coyote.http11.Http11Nio2Protocol"
  2. connectionTimeout="20000"
  3. redirectPort="8443"
  4. executor="tomcatThreadPool"
  5. enableLookups="false"
  6. acceptCount="100"
  7. maxPostSize="10485760"
  8. compression="on"
  9. disableUploadTimeout="true"
  10. compressionMinSize="2048"
  11. noCompressionUserAgents="gozilla, traviata"
  12. acceptorThreadCount="2"
  13. compressableMimeType="text/html,text/xml,text/plain,text/css,text/javascript,application/javascript"
  14. URIEncoding="utf-8"/>
            参数讲解:
  • port:连接端口。
  • protocol:连接器使用的传输方式。  Tomcat 8 设置 nio2 更好:org.apache.coyote.http11.Http11Nio2Protocol
  • protocol, Tomcat 6、7 设置 nio 更好:org.apache.coyote.http11.Http11NioProtocol
            注:
           每个web客户端请求对于服务器端来说就一个单独的线程,客户端的请求数量增多将会导致线程数就上去了,CPU就忙着           跟线程切换。
            而NIO则是使用单线程(单个CPU)或者只使用少量的多线程(多CPU)来接受Socket,而由线程池来处理堵塞在pipe     或者队       列里的请求.这样的话,只要OS可以接受TCP的连接,web服务器就可以处理该请求。大大提高了web服务器的可伸缩性。   
  • executor: 连接器使用的线程池名称
  • enableLookups:禁用DNS  查询
  • acceptCount:指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理,默认设置 100 。
  • maxPostSize:限制 以FORM URL 参数方式的POST请求的内容大小,单位字节,默认是 2097152(2兆),10485760 为 10M。如果要禁用限制,则可以设置为 -1。
  • acceptorThreadCount: 用于接收连接的线程的数量,默认值是1。一般这个指需要改动的时候是因为该服务器是一个多核CPU,如果是多核 CPU 一般配置为 2。
  • compression:传输时是压缩。
  • compressionMinSize:压缩的大小
  • noCompressionUserAgents:不启用压缩的浏览器
           提示:
              压缩会增加Tomcat负担,最好采用Nginx + Tomcat 或者 Apache + Tomcat 方式,压缩交由Nginx/Apache 去做。 
             Tomcat 的压缩是在客户端请求服务器对应资源后,从服务器端将资源文件压缩,再输出到客户端,由客户端的浏览器负责解压缩并浏览。相对于普通的 浏览过程 HTML、CSS、Javascript和Text,它可以节省40% 左右的流量。更为重要的是,它可以对动态生成的,包括CGI、PHP、JSP、ASP、Servlet,SHTML等输出的网页也能进行压缩,压缩效率也很高。
 

 2.1.6 管理AJP端口

 
                        AJP是为 Tomcat 与 HTTP 服务器之间通信而定制的协议,能提供较高的通信速度和效率。如果tomcat前端放的是apache的时候,会使用到AJP这个连接                      器。 默认是开启的。如果不使用apache,注释该连接器。
                  实例:            
  1. <span style="font-family:Microsoft YaHei;">                             <!--<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />--></span>

2.2 JVM

 

2.3 应用程序部署

             默认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 和项目的属主做分离,这样子,即便被搞,他也无法创建和编辑项目文件。 
                 设置普通用户,用来启动tomcat
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

来源:http://blog.csdn.net/our_sky/article/details/51362676

Tomcat8安装, 安全配置与性能优化的更多相关文章

  1. [记录]NGINX配置HTTPS性能优化方案一则

    NGINX配置HTTPS性能优化方案一则: 1)HSTS的合理使用 2)会话恢复的合理使用 3)Ocsp stapling的合理使用 4)TLS协议的合理配置 5)False Start的合理使用 6 ...

  2. mysql配置以及性能优化(转)

    MySQL配置文件my.cnf中文详解,附mysql性能优化方法分享 ================================================================= ...

  3. Tomcat安全配置与性能优化

    Tomcat 是 Apache软件基金会下的一个免费.开源的WEB应用服务器,它可以运行在 Linux 和 Windows 等多个平台上,由于其性能稳定.扩展性好.免费等特点深受广大用户喜爱.目前,很 ...

  4. nginx全局配置和性能优化

    nginx目录结构和命令 1.ls /apps/nginx/:         html是测试页,sbin是主程序 2.ls /apps/nginx/sbin/:  nginx 只有一个程序文件 3. ...

  5. vue-cli3项目搭建配置以及性能优化

    项目初始化 注意:安装前请确保有安装node.js,并且node>=8.9 全局安装vue npm install -g @vue/cli 如果之前安装了vue旧版本,查看vue --versi ...

  6. Tomcat8安装及配置教程

    Apache  Tomcat8.0安装及配置教程.. Apache  Tomcat8.0官方网站链接:http://tomcat.apache.org/ apache-tomcat-8.0.39-wi ...

  7. Tomcat8安装, 安全配置与性能优化(转)

    一.Tomcat 安装 官网:http://tomcat.apache.org/ Tomcat8官网下载地址:http://tomcat.apache.org/download-80.cgi 为了便于 ...

  8. Tomcat 安全配置与性能优化

    一.Tomcat内存优化 1.JAVA_OPTS参数说明 Tomcat内存优化主要是对 tomcat 启动参数优化,我们可以在 tomcat 的启动脚本 catalina.sh 中设置 JAVA_OP ...

  9. Nginx基本配置、性能优化指南

    大多数的Nginx安装指南告诉你如下基础知识——通过apt-get安装,修改这里或那里的几行配置,好了,你已经有了一个Web服务器了!而且,在大多数情况下,一个常规安装的nginx对你的网站来说已经能 ...

随机推荐

  1. 为tomcat动态添加jndi数据源信息

    我们在开发项目的时候,总要和数据库打交道,如何获取数据源,以什么样的方式来获取,成为了我们即简单又熟悉而且不得不注意的一个问题. 那么在这里我说三种获取数据源的常用方式: 一.通过配置文件来获取 首先 ...

  2. Raspberry pi(-) Mac下安装系统

    购买树莓派一般的操作说明书都是windows下的,因为本人只有MBP,外加虚拟机Parallels Desktop无法识别SD卡,所以就直接参考Mac教程了. 1.系统镜像官网下载 推荐用Raspbi ...

  3. MySQL 基础语句

    MySQL 基础语句 多个知识点 ----------------------------------------------------------------------------------- ...

  4. C#实现Dll(OCX)控件自动注册的两种方法 网上找的 然后 自己试了试 还是可以用的

    尽管MS为我们提供了丰富的.net framework库,我们的程序C#开发带来了极大的便利,但是有时候,一些特定功能的控件库还是需要由第三方提供或是自己编写.当需要用到Dll引用的时候,我们通常会通 ...

  5. nodejs在同一台服务器上部署并同时运行两个或以上服务端时,一个服务用户登录后会挤掉另一个用户的问题

    问题描述:一台服务器,部署了两个或以上不同的Web服务,服务A的用户在登陆后,服务B的用户也登陆,此时服务A的用户在点击页面时,会返回登陆页面. 问题根源:浏览器保存的session相同,即cooki ...

  6. Windows Azure初体验

    目前在IT界,云这个概念的第一意思不再是词典里的解释了.不过它们还是有相同点的——也许确实会酝酿出一块大蛋糕,可也是飘在天上,众神分食之,与我等P民无关.所谓云,不过是网络时代发展到一定阶段的必然产物 ...

  7. 将字母变为其下个字母(abc变为bcd)

    题目描述 输入一行电报文字,将字母变成其下一字母(如'a'变成'b'--'z'变成'a'其它字符不变). 输入 一行字符 输出 加密处理后的字符 样例输入 a b 样例输出 b c#include & ...

  8. ue4标签测试与总结(UPROPERTY)

    学习UE4框架中的标签,本篇是总结成员变量标签UPROPERTY. 引擎版本:4.12.5 前期准备: 1.新建项目,C++空模板,新建C++类,继承AActor,名称MyActor. 使用TestA ...

  9. Oracle重新装机后如何快速还原以前表和用户

    本人使用的oracle10g 首先拷贝以前的oradata 文件夹 一:重新创建oracle数据库后手动关闭oracle所有服务 二:将oradata中新创建的数据库目录改名,d:\app\user\ ...

  10. Mysql技术内幕(第四版)读书笔记(一)

    题记:写代码已经有2年了,学到了很多知识,但是没有一个好习惯去记录,去分享,好多知识点都会忘记,所以从今天开始学着像大牛一样去记录自己经历项目的点点滴滴,先从最近读<Mysql技术内幕>开 ...