Tomcat中间件基线核查
一、身份鉴别
1.1 应启用身份鉴别、 用户身份标识唯一性检查、用户身份鉴别信息复杂度检查以及登录失败处理功能,并根据安全策略配置相关参数
检查是否按照用户分配账号,避免账号共享,至少存在两个账号:
修改tomcat-users.xml配置文件,修改或添加账号。
<user username=”tomcat” password=” testPasswd&” roles=”admin”>
1.2 应提供用户身份标识唯一和鉴别信息复杂度检查功能,保证应用系统中不存在重复用户身份标识,身份鉴别信息不易被冒用
密码长度不小于8位且包括数字、小写字母、大写字母和特殊符号中至少两类:
在配置文件tomcat-users.xml中设置口令的长度不小于8位,复杂度符合要求。
eg: <user username="tomcat" password="testPasswd&" roles="admin" />
二、访问控制
2.1 应提供访问控制功能,依据安全策略控制用户对文件、数据库表等客体的访问
2.1.1 检查是否禁用非法HTTP方法
禁用非法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操作。
2.1.2 检查是否修改tomcat manager文件夹名称
修改manager文件夹名称:
eg:将C:\Program Files\Apache Software Foundation\Tomcat 7.0\webapps\manager修改为C:\Program Files\Apache Software Foundation\Tomcat 7.0\webapps\XXX XXX为新的文件夹名称
2.1.3 检查是否更改tomcat服务器默认端口
应更改tomcat服务器默认端口:
修改配置文件server.xnl,更改默认管理端口: <Connector port="新的端口" protocol="HTTP/1.1" connectionTimeout="300" redirectPort="8443" />
2.1.4 检查是否禁止tomcat列表显示文件
禁止Tomcat列表显示文件:
编辑配置文件web.xml,修改如下: <init-param> <param-name>listings</param-name> <param-value>true</param-value> </init-param> 把true改成false
2.2 应由授权主体配置访问控制策略,并严格限制默认帐户的访问权限
2.2.1 检查是否禁用超级用户启用tomcat
应禁止超级用户启用tomcat:
在超级用户模式下启用tomcat,如果可以启用,建议禁用超级用户,改为普通用户进行启用。
2.2.2 检查是否设置防止恶意关闭tomcat服务
应避免恶意shutdown TOMCAT服务:
打开tomcat_home/conf/server.xml,查看是否设置了复杂的字符串 <Server port="8005" shutdown="复杂的字符串"> 避免恶意shutdown TOMCAT服务
2.3 应授予不同帐户为完成各自承担任务所需的最小权限,并在它们之间形成相互制约的关系
检查是否设置在设备权限配置能力内,根据用户的业务需要,配置其所需的最小权限
修改用户角色权限,授权tomcat具有远程管理权限:
编辑tomcat-users.xml配置文件,修改用户角色权限,授权tomcat具有远程管理权限:
eg:<user username=”tomcat” password=”***” roles=”manager”>
2.4 应对通信过程中的整个报文或会话过程进行加密
检查是否配置设备支持使用HTTPS加密协议
设备应支持使用HTTPS加密协议:
使用JDK自带的keytool工具生成一个证书(keystore文件),其中包含了密钥。
在命令行输入以下命令:keytool -genkey -alias tbb -keyalg RSA -keystore d:\tbb.keystore(可自选地址)
根据系统提示输入“keystore”密码和其他信息,注意:您的名字与姓氏是什么?此项要输入本机IP地址
输入私钥密码,确认私钥密码 系统将在当前目录下生成一个“keystore”文件
创建自签名的证书
使用使用JDK自带的命令keytool创建自签名证书:keytool -selfcert -alias tbb -keystore d:\tbb.keystore(可自选地址)
创建成功后,将证书导出:keytool -export -alias tbb -keystore d:\tbb.keystore -storepass 123456 -rfc -file d:\tbb.cer(可自选地址)
将证书导入到“受信任的根证书颁发机构”,开始->运行->certmgr.msc
修改配置文件xml,如下: <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" maxThreads="150" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" keystorePass="your passwd" keystoreFile="your keystore"/>
重启tomcat
三、安全审计
3.1 应提供覆盖到每个用户的安全审计功能,对应用系统重要安全事件进行审计
检查是否配置日志功能,对用户登录进行记录
应对用户登录使用的账号,登录是否成功,登录时间,以及远程登录时用户使用的IP地址进行记录:
编辑server.xml配置文件,在<HOST>标签中增加记录日志功能,将以下内容的注释标记< ! -- -- >取消: <Valve className=”org.apache.catalina.valves.AccessLogValve” Directory=”logs” prefix=”localhost_access_log.” Suffix=”.txt” Pattern=”common” resloveHosts=”false”/>
四、软件容错
4.1 在故障发生时,应用系统应能够继续提供一部分功能,确保能够实施必要的措施
检查是否配置tomcat错误页面重定向
配置Tomcat错误页面重定向:
编辑配置文件web.xml,
修改如下: <error-page> <error-code>404</error-code> <location>/错误页面</location> </error-page> …………… <error-page> <exception-type>java.lang.NullPointerException</exception-type> <location>/错误页面</location> </error-page>
五、资源控制
5.1当应用系统的通信双方中的一方在一段时间内未作任何响应,另一方应能够自动结束会话
检查是否设置连接超时时间
应设置Connector接受一个连接后等待的时间不大于默认时间60秒(60000毫秒):
编辑配置文件server.xml,修改超时时间: <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="xxx" redirectPort="8443" /> 注意:0为永不超时,也属于不合规。
应设置Connector接受一个连接后等待的时间不为0:
编辑配置文件server.xml,修改超时时间: <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="xxx" redirectPort="8443" /> 注意:0为永不超时,也属于不合规。
5.2 应能够对应用系统的最大并发会话连接数进行限制
5.2.1 检查是否设置连接数
应根据机器性能和业务需求,设置最小连接数:
编辑server.xml文件,样例如下: <Connector port="8080" minSpareThreads="25" ……/> minSpareThreads="25" 表示即使没有人使用也开这么多空线程等待 根据实际情况设置连接数
应根据机器性能和业务需求,设置最大连接数:
编辑server.xml文件,样例如下: <Connector port="8080" maxThreads="150"……/> maxThreads="150" 表示最多同时处理150个连接 根据实际情况配置连接数