本篇文章较长,但请大家耐心看完,毕竟是小编费劲心思总结的,而且小编相信这篇肯定对大家是有一点帮助的;好了,不打扰大家了,耐心看吧!
1. 用户账号与口令安全
修改默认账号口令
修改默认口令或禁用默认账号
参考配置操作
编辑tomcat/conf/tomcat-user.xml配置文件,修改用户角色权限
授权tomcat具有远程管理权限:
- <user username=”tomcat” password=”强壮的口令”
- roles=”admin,manager”>
补充操作说明
“强壮的口令”要求为口令长度至少8位,并包括数字、小写字母、大写字母和特殊符号4类中至少2类。
Tomcat 4.x和5.x版本用户角色分为:role1,tomcat,admin,manager四种。
- role1:具有读权限;
- tomcat:具有读和运行权限;
- admin:具有读、运行和写权限;
- manager:具有远程管理权限。
Tomcat 6.0.18版本只有admin和manager两种用户角色,且admin用户具有manager管理权限。
Tomcat 4.1.37和5.5.27版本及以后发行的版本默认除admin用户外其他用户都不具有manager管理权限。
判定条件
修改后的账号可以登录Tomcat Web服务器为正常。
检测操作
访问http://ip:8080/manager/html管理页面,进行Tomcat服务器管理。
2.优化WEB服务账号
设置shutdown为复杂的字符串,防止恶意用户telnet到8005端口后,发送SHUTDOWN命令停止Tomcat服务。
参考配置操作
打开Tomcat_home/conf/server.xml,设置shutdown为复杂的字符串。
<Server port="8005" shutdown="复杂字符不要包括特殊字符,如:冒号、分号、引号等。
判定条件
查看Tomcat_home/conf/server.xml配置文件
<Server port="8005" shutdown="复杂的字符串">
3.日志与审计
增加访问日志审计,记录错误信息和访问信息。
参考配置操作
编辑server.xml配置文件,在
将以下内容的注释标记< ! -- -- >取消
- <valve classname=”org.apache.catalina.valves.AccessLogValve”Directory=”logs” prefix=”localhost_access_log.” Suffix=”.txt”
- Pattern=”common” resloveHosts=”false”/>
补充操作说明
- classname: This MUST be set to
- org.apache.catalina.valves.AccessLogValve to use the default access log valve. &<60
Directory:日志文件放置的目录,在tomcat下面有个logs文件夹,那里面是专门放置日志文件的,也可以修改为其他路径;
Prefix: 这个是日志文件的名称前缀,日志名称为localhost_access_log.2008-10-22.txt,前面的前缀就是这个localhost_access_log
Suffix: 文件后缀名
Pattern: common方式时,将记录访问源IP、本地服务器IP、记录日志服务器IP、访问方式、发送字节数、本地接收端口、访问URL地址等相关信息在日志文件中
resolveHosts:值为true时,tomcat会将这个服务器IP地址通过DNS转换为主机名,如果是false,就直接写服务器IP地址
判定条件
查看logs目录中相关日志文件内容,记录完整
检测操作
查看localhost_access_log.2018-10-22.log中相关日志记录
4.安全防护
隐藏Tomcat显示版本信息
参考配置操作
a.解压catalina.jar
- cd {Tomcat_home}/server/lib 【4.x】
- cd {tomcat_home}/lib【5.5以上】
- jar xf catalina.jar org/apache/catalina/util/ServerInfo.properties
b.修改server.info行,修改相关的版本信息:server.info=Apache Tomcat
c.重新压缩catalina.jar
- jar uf catalina.jar org/apache/catalina/util/ServerInfo.properties
判定条件
Telent ip :80 端口
执行get head查看是否包含版本信息
5.禁止目录遍历
修改参数文件,禁止目录遍历。
参考配置操作
(1) 编辑tomcat/conf/web.xml配置文件,
- <init-param>
- <param-name>listings</param-name>
- <param-value>true</param-value>
- </init-param>
把true改成false
(2)重新启动tomcat服务
判定条件
当WEB目录中没有默认首页如index.html,index.jsp等文件时,不会列出目录内容
检测操作
直接访问http://ip:8800/webadd
6.错误信息自定义
修改错误文件信息内容,防止信息泄漏
参考配置操作
(1)配置tomcat/conf/web.xml文件:
在***一行之前加入以下内容:
- <error-page>
- <error-code>404</error-code>
- <location>/noFile.htm</location>
- </error-page>
- ……………
- <error-page>
- <exception-type>java.lang.NullPointerException</exception-type>
- <location>/error.jsp</location>
- </error-page>
***个<error-page></error-page>
第二个<error-page></error-page>
- <%@ page errorPage="/error.jsp" %>
典型的error.jsp错误页面的程序写法如下:
- <%@ page contentType="text/html;charset=GB2312"%>
- <%@ page isErrorPage="true"%>
- <html>
- <head><title>错误页面</title></head>
- <body>出错了:</p> 错误信息: <%= exception.getMessage() %><br>
- Stack Trace is : <pre><font color="red"><%
- java.io.CharArrayWriter cw = new java.io.CharArrayWriter();
- java.io.PrintWriter pw = new java.io.PrintWriter(cw,true);
- exception.printStackTrace(pw);
- out.println(cw.toString());
- %></font></pre>
- </body>
- </html>
当出现NullPointerException异常时tomcat会把网页导入到error.jsp,且会打印出出错信息。
(2)重新启动tomcat服务
判定条件
指向指定错误页面
检测操作
URL地址栏中输入http://ip:8800/manager
7.更改默认管理端口
更改tomcat服务器默认端口
参考配置操作
(1)修改tomcat/conf/server.xml配置文件,更改默认管理端口到8800
- <Connector
- port="8800" maxHttpHeaderSize="8192" maxThreads="150"
- minSpareThreads="25" maxSpareThreads="75"、
- enableLookups="false" redirectPort="8443" acceptCount="100"
- connectionTimeout="300" disableUploadTimeout="true" />
(2)重启tomcat服务
补充操作说明
判定条件
使用8800端口登陆页面成功
检测操作
登陆http://ip:8800
8.超时自动登出
对于具备字符交互界面的设备,应支持定时账户自动登出。登出后用户需再次登录才能进入系统。
参考配置操作
编辑tomcat/conf/server.xml配置文件,修改为30秒
- <Connector
- port="8080" maxHttpHeaderSize="8192" maxThreads="150"
- minSpareThreads="25" maxSpareThreads="75"、
- enableLookups="false" redirectPort="8443" acceptCount="100"
- connectionTimeout="300" disableUploadTimeout="true" />
判定条件
30秒自动登出。
检测操作
登陆tomcat默认页面http://ip:8080/manager/html ,使用管理账号登陆
9.通讯加密
对于通过HTTP协议进行远程维护的设备,设备应支持使用HTTPS等加密协议。
参考配置操作
(1)使用JDK自带的keytool工具生成一个证书
- $JAVA_HOME/bin/keytool -genkey –alias tomcat –keyalg RSA
- -keystore /path/to/my/.keystore
(2)修改tomcat/conf/server.xml配置文件,更改为使用https方式,增加如下行:
- <Connector classname="org.apache.catalina.http.HttpConnector"
- port="8443" minProcessors="5" maxprocessors="100" enableLookups="true"
- acceptCount="10" debug="0" scheme="https" secure="true"
- clientAuth="false" keystoreFile="/path/to/my/.keystore"
- keystorePass="runway" protocol="TLS"/>
其中keystorePass的值为生成keystore时输入的密码
(3)重新启动tomcat服务
判定条件
使用https方式登陆tomcat服务器页面,登陆成功
检测操作
使用https方式登陆tomcat服务器管理页面