Tomcat服务安全加固和优化_tomcat加固使用安全的http请求 ...

打印 上一主题 下一主题

主题 808|帖子 808|积分 2424

3. Tomcat 默认帐号安全
修改 Tomcat 安装目次 conf 下的 tomcat-user.xml 文件,重新设置复杂口令并保存文件。重启 Tomcat 服务后,新口令即生效。
4. 修改默认访问端口
修改 conf/server.xml 文件把默认的 8080 访问端口改成其它端口。
5. 重定向错误页面
修改访问 Tomcat 错误页面的返回信息,在 webapps\manger 目次中创建相应的401.html、404.htm、500.htm 文件,然后在 conf/web.xml 文件的最后一行之前添加下列代码:
  1.   <error-page>      
  2.                              <error-code>401</error-code>              
  3.                              <location>/401.htm</location>         
  4.                      </error-page>         
  5.                      <error-page>   
  6.                              <error-code>404</error-code>        
  7.                              <location>/404.htm</location>         
  8.                      </error-page>  
  9.                      <error-page>   
  10.                              <error-code>500</error-code>  
  11.                              <location>/500.htm</location>      
  12.                       </error-page>
复制代码
6. 克制列出目次
防止直接访问目次时由于找不到默认页面,而列出目次下的文件的情况。
在 web.xml 文件中,将listings改成false。
7. 删除文档和示例步伐
删除 webapps 目次下的 docs、examples、manager、ROOT、host-manager 文件夹。
加固二

Apache Tomcat文件包含弊端告急修复

Tomcat 弊端介绍

tomcat有弊端, 需要升级到9.0.31
https://cert.360.cn/warning/detail?id=849be16c6d2dd909ff56eee7e26aeefe
2020年02月20日, 360CERT 监测发现 国家信息安全弊端共享平台(CNVD) 收录了 CNVD-2020-10487 Apache Tomcat文件包含弊端
Tomcat是由Apache软件基金会部属Jakarta项目开辟的Servlet容器,按照Sun Microsystems提供的技能规范,实现了对Servlet和JavaServer Page(JSP)的支持。由于Tomcat自己也内含了HTTP服务器,因此也可以视作单独的Web服务器。
CNVD-2020-10487是文件包含弊端,攻击者可利用该弊端读取或包含 Tomcat 上全部 webapp 目次下的恣意文件,如:webapp 设置文件、源代码等。
修复建议

更新到如下Tomcat 版本

Apache Tomcat 6 已经制止维护,请升级到最新受支持的 Tomcat 版本以免遭受弊端影响。
请广大用户时刻关注 Apache Tomcat® - Welcome! 获取最新的 Tomcat Release版本,以及 apache/tomcat: Apache Tomcat 获取最新的 git 版本。
360安全大脑-Quake网络空间测绘系统通过对全网资产测绘,发现 Apache Tomcat 在国内存在大范围的使用情况。具体分布如下图所示。
Apache Tomcat 6 已经制止维护,请升级到最新受支持的 Tomcat 版本以免遭受弊端影响。
请广大用户时刻关注 Apache Tomcat® - Welcome! 获取最新的 Tomcat Release版本,以及 apache/tomcat: Apache Tomcat 获取最新的 git 版本。
360安全大脑-Quake网络空间测绘系统通过对全网资产测绘,发现 Apache Tomcat 在国内存在大范围的使用情况。具体分布如下图所示。

升级方案

1. 继承springboot为parent的

pom添加properties
  1. <tomcat.version>9.0.31</tomcat.version>
复制代码
验证: 启动后日志为:
  1. 2020-02-21 11:46:34.797  INFO 22968 ---[ restartedMain]org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [ApacheTomcat/9.0.31]
复制代码
2. dependency bom引入的

通常我们不会直接继承 spring-boot-starter-parent, 而是通过如下方式引入bom
  1. <dependency>
  2. <!-- Import dependency management from Spring Boot -->
  3. <groupId>org.springframework.boot</groupId>
  4. <artifactId>spring-boot-dependencies</artifactId>
  5. <version>${springboot.version}
  6.     </version>
  7.     <type>pom</type>
  8.     <scope>import</scope>
  9. </dependency>
复制代码
直接声明tomcat依赖:
  1. <dependency>
  2. <groupId>org.apache.tomcat</groupId>
  3. <artifactId>tomcat-annotations-api</artifactId>
  4. <version>${tomcat.version}</version>
  5. </dependency>
  6. <dependency>
  7. <groupId>org.apache.tomcat</groupId>
  8. <artifactId>tomcat-jdbc</artifactId>
  9. <version>${tomcat.version}</version>
  10. </dependency>
  11. <dependency>
  12. <groupId>org.apache.tomcat</groupId>
  13. <artifactId>tomcat-jsp-api</artifactId>
  14. <version>${tomcat.version}</version>
  15. </dependency>
  16. <dependency> <groupId>org.apache.tomcat.embed</groupId>
  17. <artifactId>tomcat-embed-core</artifactId>
  18. <version>${tomcat.version}</version>
  19. </dependency>
  20. <dependency>
  21. <groupId>org.apache.tomcat.embed</groupId>
  22. <artifactId>tomcat-embed-el</artifactId>
  23. <version>${tomcat.version}</version>
  24. </dependency>
  25. <dependency>
  26. <groupId>org.apache.tomcat.embed</groupId>
  27. <artifactId>tomcat-embed-jasper</artifactId>
  28. <version>${tomcat.version}</version>
  29. </dependency>
  30. <dependency>
  31. <groupId>org.apache.tomcat.embed</groupId>
  32. <artifactId>tomcat-embed-websocket</artifactId>
  33. <version>${tomcat.version}</version>   
  34. </dependency>
复制代码
不更新版本的情况下,使用下面的操作

如未使用 Tomcat AJP 协议:
如未使用 Tomcat AJP 协议,可以直接将 Tomcat 升级到 9.0.31、8.5.51 或 7.0.100 版本进行弊端修复。
如无法立即进行版本更新、大概是更老版本的用户,建议直接关闭 AJPConnector,或将其监听地址改为仅监听本机 localhost。
具体操作:
  1. (1)编辑 <CATALINA_BASE>/conf/server.xml,找到如下行(<CATALINA_BASE> 为 Tomcat 的工作目录):
  2. <Connector port="8009"protocol="AJP/1.3" redirectPort="8443" />
  3. (2)将此行注释掉(也可删掉该行):
  4. <!--<Connectorport="8009" protocol="AJP/1.3"redirectPort="8443" />-->
  5. (3)保存后需重新启动,规则方可生效。
复制代码
tomcat防护

1.克制自动部署

设置自动部署,容易被部署恶意或未经测试的应用步伐,应将其禁用
  1. 修改Tomcat 根目录下的配置文件conf/server.xml,将host节点的autoDeploy属性设置为“false”,如果host的deployOnStartup属性(如没有deployOnStartup配置可以忽略)为“true”,则也将其更改为“false”
复制代码
2.tomcat目次权限检测

在运行Tomcat服务时,克制使用root用户运行,tomcat目次(catalina.home、 catalina.base目次)全部者应改为非root的运行用户
  1. 使用chown -R <Tomcat启动用户所属组>:<Tomcat启动用户> <Tomcat目录>修改tomcat目录文件所有者,如chown -R tomcat:tomcat /usr/local/tomcat
复制代码
3.Tomcat进程运行权限检测

在运行Internet服务时,最好尽可能克制使用root用户运行,降低攻击者拿到服务器控制权限的机会。
  1. 创建低权限的账号运行Tomcat
复制代码
4.克制体现异常调试信息

当请求处置处罚期间发生运行时错误时,ApacheTomcat将向请求者体现调试信息。建议不要向请求者提供此类调试信息
  1. 在Tomcat根目录下的conf/web.xml文件里面的web-app添加子节点:<error-page><exception-type>java.lang.Throwable</exception-type><location>/error.jsp</location></error-page>,在webapps目录下创建error.jsp,定义自定义错误信息
复制代码
5.开启日志记载

Tomcat需要保存输出日志,以便于清除错误和发生安全事件时,进行分析和定位
  1. 1、修改Tomcat根目录下的conf/server.xml文件。
  2. 2、取消Host节点下Valve节点的注释(如没有则添加)。
  3. <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" />
  4. 3、重新启动Tomcat
复制代码
6.克制Tomcat体现目次文件列表

Tomcat允许体现目次文件列表会引发目次遍历弊端
  1. 修改Tomcat 跟目录下的配置文件conf/web.xml,将listings的值设置为false。 <param-name>listings</param-name> <param-value>false</param-value>
复制代码
7.删除项目无关文件和目次

Tomcat安装提供了示例应用步伐、文档和其他可能不用于生产步伐及目次,存在极大安全风险,建议移除
  1. 请删除Tomcat示例程序和目录、管理控制台等,即从Tomcat根目录的webapps目录,移出或删除docs、examples、host-manager、manager目录。
复制代码
8.克制为tomcat设置manager-gui弱口令

tomcat-manger是Tomcat提供的web应用热部署功能,该功能具有较高权限,会直接控制Tomcat应用,应只管克制使用此功能。如有特殊需求,请务必确保为该功能设置了强口令
  1. 编辑Tomcat根目录下的配置文件conf/tomcat-user.xml,修改user节点的password属性值为复杂密码, 密码应符合复杂性要求:
  2. 1、长度8位以上
  3. 2、包含以下四类字符中的三类字符:
  4. 英文大写字母(A 到 Z)
  5. 英文小写字母(a 到 z)
  6. 10 个基本数字(0 到 9)
  7. 非字母字符(例如 !、$、#、%、@、^、&)
  8. 3、避免使用已公开的弱密码,如:abcd.1234 、admin@123等
复制代码
9.限制服务器平台信息泄漏

限制服务器平台信息泄漏会使攻击者更难确定哪些弊端会影响服务器平台。
  1. 1、进入Tomcat安装主目录的lib目录下,比如 cd /usr/local/tomcat7/lib
  2. 2、执行:jar xf catalina.jar org/apache/catalina/util/ServerInfo.properties,修改文件ServerInfo.properties中的server.info和server.number的值,如分别改为:Apache/11.0.92、11.0.92.0
  3. 3、执行:jar uf catalina.jar org/apache/catalina/util/ServerInfo.properties
  4. 4、重启Tomcat服务
复制代码
Tomcat使用总结

屏蔽版本
关闭shutdown端口
禁用管理界面
自定义错误页面
AJP协议
修改Cookies安全性
Tomcat安全规范
Tomcat性能优化
Linux 修改catalina.sh 文件
windows修改cataliba.bat文件
其它内容
tomcat项目的部署方式
第一种:项目直接放入 webapps 目次中
第二种:修改 conf/server.xml 文件
第三种 在conf\Catalina\localhost下新增wwwroot.xml
相同IP差别端口部署
1、屏蔽版本

在tomcat的安装目次下的lib目次中找到catalina.jar文件,通过压缩软件打开,找到catalina.jar\org\apache\catalina\util\ServerInfo.properties文件修改里面的内容
  1. server.info=Apache Tomcat/8.5.38
  2. server.number=8.5.38.0
  3. server.built=Feb 5 2019 11:42:42 UTC
  4. server.info=Apache Tomcat
  5. server.number=0.0.0.0
  6. server.built=Feb 5 2009 11:42:42 UTC
复制代码
2、关闭shutdown端口

Tomcat的设置文件server.xml中有这么一行:
通过telnet连接到8005端口发送SHUTDOWN指令关闭tomcat服务器。
我们可以修改指令,将SHUTDOWN换成一个不容易猜测到的字符串,大概把port的值直接改成-1
3、禁用管理界面



  • Server Status
  • Manager App
  • Host Manager
    在开辟情况下我们可以在conf目次下修改tomcat-users.xml文件
  1. <role rolename="manager-gui"/>
  2. <role rolename="admin-gui"/>
  3. <user username="tomcat" password="tomcat" roles="manager-gui,admin-gui"/>
复制代码
天生情况下修改webapps目次下的ROOT文件夹,将它重命名大概制空
4、自定义错误页面

修改在conf目次下面的web.xml的文件,在文件内追加:
  1. <error-page>
  2.     <error-code>404</error-code>
  3.     <location>/404.jsp</location>
  4. </error-page>
复制代码
5、AJP协议

定义:WEB服务器通过TCP连接和SERVLET容器连接。为了淘汰进程天生socket的花费,WEB服务器和SERVLET容器之间实验保持持久性的TCP连接,对多个请求/回复循环重用一个连接。一旦连接分配给一个特定的请求,在请求处置处罚循环结束之前不会在分配。换句话说,在连接上,请求不是多元的。这个是连接两端的编码变得容易,虽然这导致在一时刻会有很多连接。
作用:通过AJP协议来通过Apache进行访问的署理。
  1. <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
复制代码
以是当我们不需要用Apache做访问署理的话,最好在server.xml文件中将上面那句话给解释掉(淘汰性能开销)。
如果不想解释掉也至少改成下面这个样子:
  1. <Connector port="8009" protocol="AJP/1.3" address="127.0.0.1" redirectPort="8443" />
复制代码
克制将8009端口暴露在表面,造成安全隐患。
6、修改Cookies安全性

设置成httpOnly=true,修改默认cookie名称
修改conf目次下的context.xml文件
  1. <Context useHttpOnly="true" sessionCookieName="yoursessionname">
复制代码
7、Tomcat安全规范



  • 版本安全
升级到最新稳固版,出于稳固性考虑,不建议进行跨版本升级。


  • 服务降权
不使用root用户启动tomcat,使用平凡用户启动


  • 端口掩护
  • 更改tomcat管理端口8005,此端口有权限关闭tomcat服务,但要求端口设置在8000~8999之间,并更改SHUTDOWN执行的下令
  • 若tomcat都是放在内网的,则针对tomcat服务的监听地址都是内网地址
  • 修改默认的AJP端口,但要求端口设置在8000~8999之间
  • 禁用管理端
  • 删除默认CATALINA_HOME/webapps下载默认的全部目次和文件
  • 将tomcat应用根目次设置为tomcat安装目次以外的目次
  • 隐藏tomcat的版本信息
针对该信息的体现是由一个jar包控制的,
该jar包存放在$CATALINA_HOME/lib目次下,名称为 catalina.jar,
通过 jar xf 下令解压这个 jar 包会得到两个目次 META-INF 和 org ,
修改 org/apache/catalina/util/ServerInfo.properties 文件中的 serverinfo
字段来实现来更改我们tomcat的版本信息


  • 关闭war自动部署
默认Tomcat 是开启了对war包的热部署的。为了防止被植入木马等恶意步伐,因此我们要关闭自动部署。
  1. <Host name="localhost" appBase="" unpackWARs="false" autoDeploy="false">
复制代码


  • 屏蔽目次文件自动列出
编辑conf/web.xml文件
  1. <servlet>
  2.       <servlet-name>default</servlet-name>
  3.       <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
  4.       <init-param>
  5.           <param-name>debug</param-name>
  6.           <param-value>0</param-value>
  7.       </init-param>
  8.       <init-param>
  9.           <param-name>listings</param-name>
  10.           <param-value>false</param-value> //这里false为不列出,true为充许列出
  11.       </init-param>
  12.       <load-on-startup>1</load-on-startup>
  13.   </servlet>
复制代码


  • 多虚拟主机
强烈建议不要使用 Tomcat 的虚拟主机,保举每个站点使用一个实例。即,可以启动多个 Tomcat,而不是启动一个 Tomcat
里面包含多个虚拟主机。 因为
Tomcat是多线程,共享内存,任何一个虚拟主机中的应用瓦解,都会影响到全部应用步伐。虽然采用多实例的方式会产生过多的开销,但至少保障了应用步伐的隔离和安全


  • 脚本权限接纳
控制CATALINAHOME/bin目次下的start.sh、catalina.sh、shutdown.sh的可执行权限
  1. chmod −R 744 CATALINA_HOME/bin/\*
复制代码


  • 分离 Tomcat 和项目的用户
为了防止 Tomcat 被植入 web shell 步伐后,可以修改项目文件。因此我们要将 Tomcat
和项目的属主做分离,这样子,即便被搞,他也无法创建和编辑项目文件。


  • server head重写
server=“Microsoft-IIS/6.5”
  1. <Connector port="8080" protocol="HTTP/1.1"
  2.              connectionTimeout="20000"
  3.              redirectPort="8443"
  4.              URIEncoding="UTF-8"
  5.              useBodyEncodingForURI="true"
  6.              server="Microsoft-IIS/6.5" />
复制代码


  • 通过设置,限定访问的IP来源
  1. <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="false">
  2. <Valve className="org.apache.catalina.valves.RemoteAddrValve"  allow="192.168.1.10,192.168.1.30,192.168.2.\*" deny=""/>  
  3. <Valve className="org.apache.catalina.valves.RemoteHostValve"  allow="www.test.com,\*.test.com" deny=""/>
  4. </Host>
复制代码


  • 访问日志格式规范
开启tomcat默认访问日志中Referer和User-Agent记载
  1. <Valve className="org.apache.catalina.valves.AccessLogValve"
  2. directory="logs" prefix="localhost\_access\_log"
  3.    suffix=".txt" pattern="%h %l %u %t &quot;%r&quot; %s %b %{Referer}i %{User-Agent}i %D"
  4.    resolveHosts="false" />
复制代码
8、Tomcat性能优化



  • 禁用AJP协议
  • 将BIO通讯模式修改为NIO通讯模式
  1. <Connector connectionTimeout="20000" port="8066" protocol="org.apache.coyote.http11.Http11NioProtocol" redirectPort="8448"/>
复制代码
9、Tomcat性能优化

禁用AJP协议
将BIO通讯模式修改为NIO通讯模式
  1. <Connector connectionTimeout="20000" port="8066" protocol="org.apache.coyote.http11.Http11NioProtocol" redirectPort="8448"/>
复制代码
其它设置项:



  • 启用外部连接池,来满意高并发已经复用的请求
    executor=“tomcatThreadPool”
  1. <Connector executor="tomcatThreadPool"
  2.              port="8080" protocol="HTTP/1.1"
  3.              connectionTimeout="20000"
  4.              redirectPort="8443" />
  5. <Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
  6.       maxThreads="150" minSpareThreads="4"/>
复制代码


  • 优化连接器
  1. <Connector port="8066" executor="tomcatThreadPool" protocol="org.apache.coyote.http11.Http11NioProtocol"
  2.           connectionTimeout="20000"
  3.           enableLookups="false"
  4.           maxPostSize="10485760"
  5.           URIEncoding="UTF-8"
  6.           useBodyEncodingForURI="true"
  7.           acceptCount="100"
  8.           acceptorThreadCount="2"
  9.           disableUploadTimeout="true"
  10.           maxConnections="10000"
  11.           SSLEnabled="false"
  12.   />
复制代码


  • 在tomcat中设置JVM参数
修改bin/catalina.bat文件设置参数(解释后第一行),增长
  1.  set JAVA_OPTS=-Dfile.encoding=UTF-8
  2.   -server
  3.   -Xms1024m
  4.   -Xmx2048m
  5.   -XX:NewSize=512m
  6.   -XX:MaxNewSize=1024m
  7.   -XX:PermSize=256m
  8.   -XX:MaxPerPermSize=356m
  9.   -XX:NewRatio=2
  10.   -XX:MaxTenuringThreshold=50
  11.   -XX:+DisableExplicitGC
复制代码

10、Linux 修改catalina.sh 文件

修改 /usr/program/tomcat7/bin/catalina.sh 文件,把下面信息添加到文件第一行。


  • 如果服务器只运行一个 Tomcat
  • 机子内存如果是 4G:
  1. CATALINA_OPTS="-Dfile.encoding=UTF-8 -server -Xms2048m -Xmx2048m -Xmn1024m -XX:PermSize=256m -XX:MaxPermSize=512m -XX:SurvivorRatio=10 -XX:MaxTenuringThreshold=15 -XX:NewRatio=2 -XX:+DisableExplicitGC"
复制代码
机子内存如果是 8G:
  1. CATALINA_OPTS="-Dfile.encoding=UTF-8 -server -Xms4096m -Xmx4096m -Xmn2048m -XX:PermSize=256m -XX:MaxPermSize=512m -XX:SurvivorRatio=10 -XX:MaxTenuringThreshold=15 -XX:NewRatio=2 -XX:+DisableExplicitGC"
复制代码


  • 机子内存如果是 16G:
CATALINA_OPTS=“-Dfile.encoding=UTF-8 -server -Xms8192m -Xmx8192m -Xmn4096m -XXermSize=256m -XX:MaxPermSize=512m -XX:SurvivorRatio=10 -XX:MaxTenuringThreshold=15 -XX:NewRatio=2 -XX:+DisableExplicitGC”


  • 机子内存如果是 32G:
  1. CATALINA_OPTS="-Dfile.encoding=UTF-8 -server -Xms16384m -Xmx16384m -Xmn8192m -XX:PermSize=256m -XX:MaxPermSize=512m -XX:SurvivorRatio=10 -XX:MaxTenuringThreshold=15 -XX:NewRatio=2 -XX:+DisableExplicitGC"
复制代码


  • 如果是 8G 开辟机
  1. -Xms2048m -Xmx2048m -XX:NewSize=512m -XX:MaxNewSize=1024m -XX:PermSize=256m -XX:MaxPermSize=512m
复制代码
如果是 16G 开辟机
  1. -Xms4096m -Xmx4096m -XX:NewSize=1024m -XX:MaxNewSize=2048m -XX:PermSize=256m -XX:MaxPermSize=512m
复制代码
  -Dfile.encoding:默认文件编码
-server:表示这是应用于服务器的设置,JVM 内部会有特殊处置处罚的
-Xmx1024m:设置JVM最大可用内存为1024MB
-Xms1024m:设置JVM最小内存为1024m。此值可以设置与-Xmx相同,以克制每次垃圾接纳完成后JVM重新分配内存。
-Xmn1024m:设置JVM新生代巨细(JDK1.4之后版本)。一般-Xmn的巨细是-Xms的1/2左右,不要设置的过大或过小,过大导致老年代变小,频繁Full GC,过小导致minor GC频繁。如果不设置-Xmn,可以采用-XX:NewRatio=2来设置,也是一样的结果
-XX:NewSize:设置新生代巨细
-XX:MaxNewSize:设置最大的新生代巨细
-XXermSize:设置永世代巨细
-XX:MaxPermSize:设置最大永世代巨细
-XX:NewRatio=4:设置年轻代(包罗 Eden 和两个 Survivor 区)与终身代的比值(撤消永世代)。设置为 4,则年轻代与终身代所占比值为 1:4,年轻代占整个堆栈的 1/5
-XX:MaxTenuringThreshold=10:设置垃圾最大年龄,默认为:15。如果设置为 0 的话,则年轻代对象不经过 Survivor 区,直接进入年老代。对于年老代比较多的应用,可以提高效率。如果将此值设置为一个较大值,则年轻代对象会在 Survivor 区进行多次复制,这样可以增长对象再年轻代的存活时间,增长在年轻代即被接纳的概论。需要留意的是,设置了 -XX:MaxTenuringThreshold,并不代表着,对象肯定在年轻代存活15次才被晋升进入老年代,它只是一个最大值,毕竟上,存在一个动态盘算机制,盘算每次晋入老年代的阈值,取阈值和MaxTenuringThreshold中较小的一个为准。
-XX:+DisableExplicitGC:这个将会忽略手动调用 GC 的代码使得 System.gc() 的调用就会变成一个空调用,完全不会触发任何 GC
  11、Tomcat项目的部署方式

第一种:项目直接放入 webapps 目次中
第二种:修改 conf/server.xml 文件
打开tomcat下conf/server.xml,在标签之间输入项目设置信息
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <Server port="8005" shutdown="SHUTDOWN">
  3.     <Listener className="org.apache.catalina.startup.VersionLoggerListener" />
  4.     <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
  5.     <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
  6.     <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
  7.     <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
  8.     <GlobalNamingResources>
  9.         <Resource name="UserDatabase" auth="Container"
  10.             type="org.apache.catalina.UserDatabase"
  11.             description="User database that can be updated and saved"
  12.             factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
  13.             pathname="conf/tomcat-users.xml" />
  14.     </GlobalNamingResources>
  15.     <Service name="Catalina">
  16.         <Connector port="8080" protocol="HTTP/1.1"
  17.             connectionTimeout="20000"
  18.             redirectPort="8443"
  19.             URIEncoding="UTF-8"
  20.             useBodyEncodingForURI="true"
  21.             server="Microsoft-IIS/6.5" />
  22.         <Engine name="Catalina" defaultHost="localhost">
  23.             <Realm className="org.apache.catalina.realm.LockOutRealm">
  24.                 <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>
  25.             </Realm>
  26.             <Host name="localhost"  appBase="webapps" unpackWARs="true" autoDeploy="true">
  27.                 <Context path="/wwwroot" docBase="F:/wwwroot" reloadable="true" />
  28.                 <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
  29.                     prefix="localhost\_access\_log" suffix=".txt"
  30.                     pattern="%h %l %u %t &quot;%r&quot; %s %b" />
  31.             </Host>
  32.         </Engine>
  33.     </Service>
  34. </Server>
复制代码
第三种 在conf\Catalina\localhost下新增wwwroot.xml
里面的内容就一句话:
  1. <Context  docBase="F:/wwwroot" reloadable="true" />
复制代码
相同IP差别端口部署

在server.xml中多追加一个service
  1. <Service name="web">
  2.     <Connector port="8088"   protocol="HTTP/1.1" maxThreads="700" acceptCount="100"             connectionTimeout="2000" redirectPort="8445" URIEncoding="UTF-8"/>
  3.     <Engine name="web" defaultHost="localhost">
  4.         <Host name="localhost" appBase="webapp1">
  5.             <Context docBase="F:/wwwroot" path="" reloadable="true" />
  6.         </Host>
  7.     </Engine>
  8. </Service>
复制代码
12、Apache Tomcat 弊端之 CNVD-2020-10487

弊端修复方案
**1.版本升级,**停止2020-2-24,官方公布的已修复该弊端版本包罗:
Apache Tomcat 7.0.100
Apache Tomcat 8.5.51
Apache Tomcat 9.0.31
2.关闭AJPConnector:
修改conf/server.xml设置文件的,删除或解释掉这一行,修改后重启tomcat。
  1. <Connector port="8009"protocol="AJP/1.3" redirectPort="8443" />
复制代码
3.设置AJP协议的secret(此方法只能淘汰弊端被利用的可行性,可以配合版本升级使用):
  1. <Connector port="8009"protocol="AJP/1.3" redirectPort="8443" address="YOUR_ADDRESS" secret="YOUR_SECRET"/>
复制代码
建议将 Tomcat 立即升级到 9.0.31、8.5.51 或 7.0.100 版本进行修复,同时为 AJP Connector 设置 secret 来设置 AJP 协议的认证凭证。比方(留意必须将 YOUR_TOMCAT_AJP_SECRET 更改为一个安全性高、无法被轻易猜解的值)
https://www.jianshu.com/p/8bd6419caa1e
https://www.jianshu.com/p/f4c0c0476dae
13、Tomcat修改内存设置

一、设置
Tomcat/conf/server.xml修改设置
  1. <connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol"
  2.         redirectPort="8443"
  3.         URIEncoding="UTF-8"
  4.         minSpareThreads="25"
  5.         maxSpareThreads="300"
  6.         maxThreads="500"
  7.         acceptCount="500"
  8.         connectionTimeout="30000"
  9.         enableLookups="false"/>
复制代码
二、参数说明
maxIdleTime:最大空闲时间,凌驾这个空闲时间,且线程数大于minSpareThreads的,都会被接纳,默认值1分钟(60000ms);
minSpareThreads:最小空闲线程数,任何情况都会存活的线程数,即便凌驾了最大空闲时间,也不会被接纳,默认值4;
maxSpareThreads:最大空闲线程数,在最大空闲时间(maxIdleTime)内活泼过,此时空闲,当空闲时间大于maxIdleTime则被接纳,小则继承存活,等候被调度,默认值50;
maxThreads:最大线程数,大并发请求时,tomcat能创建来处置处罚请求的最大线程数,凌驾则放入请求队列中进行列队,默认值为200;
acceptCount:当最大线程数(maxThreads)被使用完时,可以放入请求队列列队个数,凌驾这个数返回connection refused(请求被拒绝),一般设置和max
Threads一样,不过这个具体需要根据自己的应用实际访问峰值和均匀值来权衡,默认值为100;
connectionTimeout:网络连接超时,假设设置为0表示永不超时,这样设置隐患巨大,通常可设置为30000ms,默认60000ms。
Windows Tomcat允许每个进程maxThreads(最大线程数)2000
Linux Tomcat允许每个进程maxThreads(最大线程数)1000
https://www.jianshu.com/p/6dd2ab2f376b
14、tomcat默认日志优化处置处罚

1,针对logging.properties。
修改conf/logging.properties日志设置文件可以屏蔽掉部分的日志信息。
将level级别设置成WARNING就可以大量淘汰日志的输出,固然也可以设置成OFF,直接禁用掉。
可以直接用下边的内容更换掉原来的文件。如果也是tomcat8的话。
  1. $cat conf/logging.properties
  2. # Licensed to the Apache Software Foundation (ASF) under one or more
  3. # contributor license agreements.  See the NOTICE file distributed with
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

用户国营

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表