「作者简介」:冬奥会网络安全中国代表队,CSDN Top100,就职奇安信多年,以实战工作为基础著作 《网络安全自学教程》,适合基础薄弱的同学系统化的学习网络安全,用最短的时间掌握最核心的技术。
这一章节我们需要知道Tomcat基线检查的标准和加固方式。
Tomcat安全基线
- 1、删除默认页面
- 2、控制台口令
- 3、shutdown口令
- 4、禁用静态目录列表
- 5、开启访问日志
- 6、禁用HTTP方法
- 7、修改banner信息
- 8、关闭热部署
- 9、降低权限
1、删除默认页面
删除 tomcat安装目录\webapps\
目录下的 docs、examples 文件夹。这两个是Tomcat提供的示例程序。
2、控制台口令
http://127.0.0.1:8080/manager/html
可以访问tomcat的控制台。
1)如果不使用控制台,可以删除tomcat安装目录\webapps\
目录下的 manager、host-manager 文件夹。
2)如果使用控制台,可以设置复杂的密码。tomcat安装目录\conf\tomcat-users.xml
。
<tomcat-users >
<user username="tomcat" password="复杂的密码" roles="manager-gui"/>
3、shutdown口令
shutdown.sh
关闭tomcat服务是连接8005端口执行SHUTDOWN命令实现的。
我们直接telnet 8005端口,执行SHUTDOWN命令,也可以关闭Tomcat服务。
tomcat安装目录\conf\server.xml
设置复杂的shutdown口令。
扩展:Tomcat端口作用
- 8005:Telnet8005端口执行shutdown口令关闭Tomcat服务。
- 8009:httpd使用ajp协议通过8009端口反向代理Tomcat。
- 8080:http监听端口。
- 8443:https监听端口,默认不开启,需要提供证书。
4、禁用静态目录列表
tomcat安装目录\conf\web.xml
的 listings 设置为 false,重启Tomcat 服务生效。
如果开启静态目录列表,直接访问目录,并且目录下没有默认主页时,就会列出目录下的所有文件,导致目录遍历。
5、开启访问日志
Tomcat 7 开始默认开启访问日志。手动开启到 tomcat安装目录\conf\server.xml
取消 AccessLogValve 的注释,重启生效。directory是目录位置、perfix是日志文件名、pattern是日志格式。
tomcat安装目录\logs\
查看 access日志。具体的日志路径和文件名取决于上一步server.xml的配置。
扩展:pattern日志格式,-
表示空。
- %a:远程IP。
- %A:本地IP。
- %b:发送的字节数。
- %h:远程主机名。
- %H:请求协议。
- %l:远程用户名。
- %m:请求的方法(GET、POST等)。
- %p:接受请求的本地端口。
- %q:查询字符串,如果存在,有一个前置的
?
。 - %r:请求的第一行(请求方法和请求的URI)。
- %s:HTTP响应状态码(200、404等)。
- %S:用户的session ID。
- %t:日期和时间,Common Log Format格式。
- %u:被认证的远程用户。
- %U:请求URL路径。
- %v:本地服务名。
- %D:处理请求的时间,毫秒。
- %T:处理请求的时间,秒。
- %I:当前请求的线程名。
6、禁用HTTP方法
Tomcat 7.0.0 - 7.0.79 的readonly默认未false,允许PUT、DELETE等请求方式,会造成远程代码执行,比如 CVE-2017-12615。
新版本 readonly 默认为 true,并且不显示这一项。检查 tomcat安装目录\conf\web.xml
,readonly 不能为 false。
7、修改banner信息
系统的 banner 信息充当欢迎语的作用,会泄露服务类型、版本号等信息。
1)HEAD请求获取的响应头信息,可能会暴漏版本号。
到 tomcat安装目录\conf\server.xml
改server的值或者删掉这个字段。一些新版本优化掉了server字段。
2)页面访问报错时,会泄露版本。
tomcat安装目录\lib\catalina.jar\org\apache\catalina\util\ServerInfo.properties
修改server.info 和 server.number。
8、关闭热部署
Tomcat 7 开始默认开启自动部署,也就是热部署,会自动检查webapps目录下的的新文件并重新部署web程序。否则就需要重启Tomcat才能重新加载。
tomcat安装目录\conf\server.xml
Host 的 autoDeploy 设置成 false,关闭热部署。
9、降低权限
Tomcat 安装目录的权限改成非root用户。使用非 root 用户启动 Tomcat。
# 创建tomcat用户
useradd tomcat
# Tomcat安装目录的所有者改为tomcat
chown -R tomcat:tomcat /opt/tomcat
# 停止Tomcat
/opt/tomcat/bin/shutdown.sh
# 切换tomcat用户
su tomcat
# 以tomcat用户的权限运行Tomcat
/opt/tomcat/bin/startup.sh