等保2.0测评 — Apache Tomcat中间件
在我们正式测评之前,首先要做的就是信息收集,但中间件部署位置看运维人员心情,所以第一步我们需要查找到该中间件的部署目录,并确认相应版本信息。
find / -name "catalina.sh"
利用 find 命令找到对应部署目录,再使用如下命令查询版本
/usr/local/apache-tomcat-8.5.56/bin/catalina.sh version

根据上图 Apache Tomcat 对应的版本即为 8.5.56.0
接着我们再去确认是否开启了控制台管理,查看tomcat目录/conf/tomcat-users.xml,上述路径为/usr/local/apache-tomcat-8.5.56/conf/tomcat-users.xml 文件,如果username,password关键字那段上下被<!-- …… --!>包裹,那么可以推断出未使用控制台管理

另外我们还可以查看 /usr/local/apache-tomcat-8.5.56/webapps 目录下是否存在manager 目录文件,如果没有也是将其管理控制台删除了。

另外tomcat端口,我们查看文件 /usr/local/tomcat/conf/server.xml,找到如下配置,通过port可以确定对应端口号

如果还有疑问,简单粗暴一点,直接访问对应ip+端口,点击 Manager App,或自主添加 ip:端口号/manager 访问,弹出该界面则确认tomcat-users.xml 中是否允许用户登录,如果访问404,那么基本已禁用。

一、身份鉴别
如果不使用控制台管理,可在结果记录中下 “未开启tomcat管理控制台,通过登录到操作系统本地管理该中间件” 不适用的结论。
a)应对登录的用户进行身份标识和鉴别,身份标识具有唯一性,身份鉴别信息具有复杂度要求并定期更换
针对于使用控制台管理的情况,查看tomcat目录 /conf/tomcat-users.xml 文件,确认用户的口令组成情况,并询问是否定期更改。

另外tomcat 无强制口令复杂度策略,以及口令到期策略。
b)应具有登录失败处理功能,应配置并启用结束会话、限制非法登录次数和当登录连接超时自动退出等相关措施
1. 登录失败处理功能
默认:5次,锁定10分钟。(自己测试的)
查看 tomcat目录/conf/server.xml文件配置
查看failureCount(次)、lockOutTime(秒) 值

2. 超时值
个人尝试暂未发现能设置登录超时自动退出的参数。
网上说的这个参数,个人测试无效。

c)当进行远程管理时,应采取必要措施防止鉴别信息在网络传输过程中被窃听
使用浏览器查看Tomcat管理控制台是否能使用HTTPS方式访问;
默认情况下,抓包,传输过程中鉴别信息采用BASE 64编码

可通过解码获得原文

d)应采用口令、密码技术、生物技术等两种或两种以上组合的鉴别技术对用户进行身份鉴别,且其中一种鉴别技术至少应使用密码技术来实现
这个现场验证即可,基本不存在双因素认证的。
二、访问控制
如果不使用控制台管理,可在结果记录中下 “未开启tomcat管理控制台,通过登录到操作系统本地管理该中间件” 不适用的结论。
a)应对登录的用户分配账户和权限
1. 查看有哪些用户,分别为什么角色
在tomcat目录下/conf/tomcat-user.xml

tomcat角色:
● tomcat:具有访问Tomcat管理界面的权限,如管理应用程序、查看日志等。
● manager-script:具有通过HTTP协议访问Tomcat管理接口的权限,可以通过脚本等方式进行应用程序的管理操作。
● manager-gui:具有通过Web界面访问Tomcat管理界面的权限,可以通过Web界面进行应用程序的管理操作。
● manager-jmx:具有通过JMX(Java Management Extensions)访问Tomcat管理界面的权限,可以通过JMX进行应用程序的管理操作。
● admin-gui:作为管理员角色,具有更高级别的权限,可以对Tomcat的配置文件进行修改和管理。
● admin-script:作为管理员角色,具有更高级别的权限,可以通过脚本等方式进行Tomcat配置的管理和修改。
b)应重命名或删除默认账户,修改默认账户的默认口令
查看 tomcat目录下/conf/tomcat-user.xml
是否存在 admin、manager、tomcat、role1、both等默认账户

c)应及时删除或停用多余的、过期的账户,避免共享账户的存在
查看tomcat目录下/conf/tomcat-user.xml,是否存在多余账户
d)应授予管理用户所需的最小权限,实现管理用户的权限分离
查看tomcat目录下 /conf/tomcat-user.xml,按最小授权原则分配
管理用户的权限分离应该实现不了
e)应由授权主体配置访问控制策略,访问控制策略规定主体对客体的访问规则
查看tomcat目录下 /conf/tomcat-user.xml,确认管理员对各用户的访问控制规则,即设置对应用户的角色。但是这些角色访问的web内容应该是预设好的,无法修改。

例如manager-gui 角色登录后就是能访问这些模块,不会像自主开发的应用系统分的那样细致。

f)访问控制的粒度应达到主体为用户级或进程级,客体为文件、数据库表级
主体为用户级,客体为web控制台对应功能模块。
g)应对重要主体和客体设置安全标记,并控制主体对有安全标记信息资源的访问
默认不符合。
三、安全审计
咱们先了解一下tomcat日志有哪些首先看一下tomcat的位置,不同于其他web中间件,它的日志并不在/var/log目录下,而在tomcatl安装路径下的logs文件夹。

日志种类说明
1. catalina.date.log Catalina 引擎的日志文件
2. catalina.out Catalina 控制台输出,包括标准输出和错误输出
3. host-manager.date.log 主机管理日志
4. localhost.date.log Tomcat 内部代码丢出日志
5. locahost_access_log.date.txt 网页访问日志
6. manager.date.log 应用管理日志
关于以上日志的配置文件 1.2.3.4.6 均在tomcat根目录/conf/logging.properties下,5在tomcat根目录 /conf/server.xml下
① logging.properties
一般日志文件定义是3行
首行决定什么级别以上的信息输出
每类日志的级别分为如下7种:
SEVERE(highest value)> WARNING > INFO > CONFIG > FINE >FINER >FINEST(lowest value)
OFF为禁用输出;ALL为全部输出
第二行决定输出日志文件的路径
第三行决定日志文件的前缀

catalina.out 由于是输出控制台(console)信息,该信息源于Linux输出的重定向,因此与其它日志不同。
ps:manager 和host-manager 分别对应tomcat 后台页面的Manager App和Host Manager,想要生成这两类日志,需要在tomcat-users.xml里分别配置manager-gui和admin-gui角色的账号号密码,并访问相应页面,否则这两个日志都会是空的。
1-5 类的日志可归纳为运行日志,一般用于排查服务端console、catalina、tomcat、web应用管理遇到的错误。
② server.xml
访问日志,即访问网页的记录。
规则:
className 开启访问日志必用类
directory 日志存放目录
prefix 日志名前缀
suffix 日志文件后缀
pattern 日志记录的格式

除了第一个className 不允许修改外,其他字段值可以根据实际需要修改,最重要的就是 pattern,我们结合实际日志进行对比:

与之前的pattern进行比对, pattern="%h %l %u %t "%r"%s %b"
%h 为远程主机名 对应 192.168.21.237
%l 为远程登录名,除非IdentityCheck设为‘On’,否则将得到一个“-”
%u 为远程用户名(根据验证信息而来),若不存在得到一个“-”
%t 为时间,用普通日志格式(标准英语格式),对应[29/Jun/2020:17:04:30 +0800]
" 为双引号"的实体编码
%r 为请求头第一行(包括HTTP方法和请求的RUI),对应GET /test/ HTTP/1.1
%s 为HTTP响应状态码,对应200
%b 为发送信息的字节数,不包括HTTP头,如果字节数为0的话,显示为-,对应88
关于这个的字段的详细配置说明,查阅官方英文文档最为准确:
http://tomcat.apache.org/tomcat-8.0-doc/config/valve.html#Access_Log_Valve

了解大概tomcat的日志记录的情况,那么下面就方便大家理解了
a)应启用安全审计功能,审计覆盖到每个用户,对重要的用户行为和重要安全事件进行审计
确认是否开启审计和相应级别
① 查看tomcat目录 /conf/logging.properties
catalina——Catalina引擎的日志文件
localhost——Tomcat下内部代码丢出日志
manager——应用管理日志
host-manager——主机管理日志
java——Catalina控制台输出,包括标准出书和错误输出

确认图中框起字段不为OFF为开启审计
且审计级别不低于"FINE"
② 查看tomcat目录 /conf/server.xml,Access网页访问日志
有如下字段,取消注释后

b)审计记录应包括事件的日期和时间、用户、事件类型、事件是否成功及其他与审计相关的信息
1. 确认系统当前时间
直接看日志时间是否正确即可,一般跟随操作系统时间,Linux系统可采用date 命令查看当前时间。
2. 查看日志配置文件
tomcat目录/conf/server.xml 文件

默认符合,除非手动修改了上述配置,例如查看一条access日志

c)应对审计记录进行保护,定期备份,避免受到未预期的删除、修改或覆盖等
1. 查看日志文件权限
文件权限不高于644

2. 询问是否进行定期备份
看有无方式(如备份脚本)将 tomcat目录/logs/ 目录进行定期备份。
3. 查看日志文件的保存周期
d)应对审计进程进行保护,防止未经授权的中断
审计进程与中间件主进程关联,无法单独中断审计进程,只要开启即符合
四、入侵防范
a)应遵循最小安装的原则,仅安装需要的组件和应用程序
不适用
b)应关闭不需要的系统服务、默认共享和高危端口
不适用
c)应通过设定终端接入方式或网络地址范围对通过网络进行管理的管理终端进行限制
不适用
d)应提供数据有效性检验功能,保证通过人机接口输入或通过通信接口输入的内容符合系统设定要求
该条结合对应的漏扫报告,确认控制台端是否存在对应漏洞
e)应能发现可能存在的已知漏洞,并在经过充分测试评估后,及时修补漏洞
该条结合对应的漏扫报告,确认该中间件是否存在已知漏洞,高危漏洞需要进行及时修补
f)应能够检测到对重要节点进行入侵的行为,并在发生严重入侵事件时提供报警
不适用
五、恶意代码防范
a)应采用免受恶意代码攻击的技术措施或主动免疫可信验证机制及时识别入侵和病毒行为,并将其有效阻断
不适用
六、可信验证
a)可基于可信根对计算设备的系统引导程序、系统程序、重要配置参数和应用程序等进行可信验证,并在应用程序的关键执行环节进行动态可信验证,在检测到其可信性受到破坏后进行报警,并将验证结果形成审计记录送至安全管理中心
不适用
七、数据完整性
a)应采用校验技术或密码技术保证重要数据在传输过程中的完整性,包括但不限于鉴别数据、重要业务数据、重要审计数据、重要配置数据、重要视频数据和重要个人信息等
1.鉴别数据
观察控制台使用的协议,https符合,http不符合
若未开启远程管理不适用
2.重要配置数据
观察控制台使用的协议,https符合,http不符合
本地管理不适用
3.重要审计数据
审计数据是否进行传输,采用什么协议传输,是否有完整性校验
b)应采用校验技术或密码技术保证重要数据在存储过程中的完整性,包括但不限于鉴别数据、重要业务数据、重要审计数据、重要配置数据、重要视频数据和重要个人信息等
鉴别数据、重要配置数据、重要审计数据是否具有完整性校验措施
八、数据保密性
a)应采用密码技术保证重要数据在传输过程中的保密性,包括但不限于鉴别数据、重要业务数据和重要个人信息等
1. 鉴别数据
开启控制台,查看是否使用https
若未开启远程管理不适用
2. 不涉及重要业务数据和重要个人信息
b)应采用密码技术保证重要数据在存储过程中的保密性,包括但不限于鉴别数据、重要业务数据和重要个人信息等
1. 鉴别数据
开启控制台,明文存储
tomcat目录conf/tomcat-users,xml文件下

2. 不存储重要业务数据和重要个人信息
更多推荐



所有评论(0)