signed

QiShunwang

“诚信为本、客户至上”

Tomcat

2021/1/28 13:56:45   来源:

Tomcat

简介

Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。

官方网站:https://tomcat.apache.org/

Tomcat安装

安装模式(需要JDK)

  • Windows Service Installer 安装版
  • Windows zip 解压配置
  • Linux tar.gz 解压配置

安装配置问题

1.Windows下安装启动后中文乱码
解决:修改 apache-tomcat\conf\logging.properties中 java.util.logging.ConsoleHandler.encoding = GBK

2.Tomcat文件安装随操作系统启动
在 apache-tomcat\bin\ 下运行powshell,执行.\service.bat install Tomcat,取消 .\service.bat remove Tomcat

3.Linux下安装完能正常访问和看到tcp6,看不到tcp的连接
解决命令打开 / home/jzt/apache-tomcat-9.0.41/bin/catalina.sh 向文件里面追加
JAVA_OPTS="$JAVA_OPTS -Djava.net.preferIPv4Stack=true -Djava.net.preferIPv4Addresses=true "

4.更改端口
修改文件 apache-tomcat\conf\server.xml 中 Connector port="8080"

5.更改网站目录
修改文件 apache-tomcat\conf\server.xml,在<host></host>标签之间添加上:
<Context path=“” docBase=“webceshi” debug=“0” reloadable=“true” />  
path 是虚拟目录的名字,如果要只输入ip地址就显示主页,则该键值留为空;docBase 是虚拟目录的路径,它默认的是$tomcat/webapps/ROOT目录。

6.实现多端口多应用
修改文件 apache-tomcat\conf\server.xml 中 <Service name="xx">...</Service>

7.连接数据库
方法一:apache-tomcat\conf\context.xml中配置
方法二:apache-tomcat\conf\server.xml中配置
方法三:apache-tomcat\conf\server.xml中配置虚拟目录时配置 
方法四:在Web项目中的META-INF目录下新建一个文件context.xml,写入配置

Tomcat安全漏洞

Tomcat文件包含漏洞(CNVD-2020-10487/CVE-2020-1938)(攻击者可利用该高危漏洞读取或包含 Tomcat 上所有 webapp 目录下的任意文件,如:webapp 配置文件或源代码等)

Tomcat后台弱口令上传war包(Tomcat管理弱口令页面Getshell)

Tomcat PUT上传漏洞 (CVE-2017-12615) (Tomcat PUT方法任意文件上传(CVE-2017-12615))

Tomcat反序列化漏洞(CVE-2016-8735) 

Tomcat样例目录session操控漏洞(Apache Tomcat examples directory vulnerabilities(Apache Tomcat样例目录session操纵漏洞))

Tomcat本地提权漏洞(CVE-2016-1240)(Tomcat本地提权漏洞分析与防御)

Tomcat安全加固

更新和安装补丁

升级到最新稳定版,出于稳定性考虑,不建议进行跨版本升级

tomcat版本与jdk版本对应关系(https://tomcat.apache.org/whichversion.html)


隐藏tomcat版本号

这个方法治标不治本,能规避掉依据版本号报漏洞的扫描

修改tomcat安装目录/lib/catalina.jar 的 \org\apache\catalina\util\ServerInfo.properties 文件,以下3个参数修改为自定义值:

建议注释掉
# server.info=Apache Tomcat/9.0.41
# server.number=9.0.41.0
# server.built=Dec 3 2020 11:43:00 UTC

修改为

server.info=Apache Tomcat
server.number=0.0.0.0
server.built=Dec 3 2020 11:43:00 UTC

修改方法:

jar xf catalina.jar org/apache/catalina/util/ServerInfo.properties
生成 org/apache/catlina/util/ServerInfo.properties目录文件
修改 ServerInfo.properties文件
jar uf catalina.jar org/apache/catalina/util/ServerInfo.properties
替换catalina.jar

删除webapps文件夹下的示例程序及文档

保持webapps下只有所需的项目即可,tomcat的管理端和样例报过不少漏洞,还是清理掉为妙


禁用管理端

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

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

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

注释掉 /conf/tomcat-users.xml中的用户信息

删除 /conf/Catalina/localhost/ 下的 host-manager.xml和manager.xml 两个文件


端口保护

监听的8080端口负责建立HTTP连接
监听的8005端口负责监听关闭tomcat的请求
监听的8009端口负责和其他的HTTP服务器建立连接

不用则注释掉 \apache-tomcat\conf\server.xml 中的端口信息,tomcat9 默认注释


服务降权

非root权限运行,避免一旦tomcat服务器入侵,黑客直接获取高级用户权限,危害整个server的安全

开启日志审核

修改 conf/server.xml,取消注释
  <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"   
  prefix="localhost_access_log." suffix=".txt" pattern="common" resolveHosts="false"/> 
  
启用access_log后,重启tomcat,在tomcat_home/logs中可以看到访问日志


关闭war自动部署

默认Tomcat开启了对war包的热部署,为了防止被植入木马等恶意程序,因此要关闭自动部署
<Host name="localhost" appBase="" unpackWARs="false" autoDeploy="false">


屏蔽目录文件自动列出

编辑 conf/web.xml 
<init-param>
    <param-name>listings</param-name>
    <param-value>false</param-value>
</init-param>


禁用非法HTTP方法

编辑 web.xml
org.apache.catalina.servlets.DefaultServlet 
<init-param> 
<param-name>readonly</param-name> 
<param-value>true</param-value> 
</init-param>

其中param-value为true时,即不允许delete和put操作