为了符合tomcat安全基线,需要做一下加固:
1、管理用户的密码加密:《摘要算法加密tomcat登录密码》
管理用户在conf/tomcat-users.xml中配置,密码一般是明文形式,如果需要加密,可以在conf/server.xml配置加密算法后,在tomcat-users.xml文件中填写密文。步骤如下:
1、server.xml中配置密码加密方式,此处仅做MD5加密,注意:Realm小节在默认配置中是一行,以/结尾,需要拆开。 <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"> <CredentialHandler algorithm="MD5" className="org.apache.catalina.realm.MessageDigestCredentialHandler"/> </Realm> 2、用digest.sh脚本生成md5加密的密文,输出为:userpassword:balabalabalabala digest.sh -a md5 userpassword 3、将生成的密文替换conf/tomcat-users.xml中原来的明文密码
2、配置错误页面:《tomcat配置错误页面》,在web.xml的<web-app>中添加
<!-- 400错误 --> <error-page> <error-code>400</error-code> <location>/error.html</location> </error-page> <!-- 404 页面不存在错误 --> <error-page> <error-code>404</error-code> <location>/error.html</location> </error-page> <!-- 500 服务器内部错误 --> <error-page> <error-code>500</error-code> <location>/error.html</location> </error-page> <!-- java.lang.Exception异常错误,依据这个标记可定义多个类似错误提示 --> <error-page> <exception-type>java.lang.Exception</exception-type> <location>/error.html</location> </error-page> <!-- java.lang.NullPointerException异常错误,依据这个标记可定义多个类似错误提示 --> <error-page> <exception-type>java.lang.NullPointerException</exception-type> <location>/error.html</location> </error-page>
3、允许远程登录manager控制台:修改manager/META-INF/context.xml,注释掉以下限制:
<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127.d+.d+.d+|::1|0:0:0:0:0:0:0:1" />
4、修改banner:《tomcat修改banner,隐藏版本信息》,修改conf/server.xml的server属性。需要说明的是,此处修改的只是http头中的banner,tomcat的一些错误页面会附加上原始版本信息。关于tomcat的版本信息完全屏蔽,还是要到lib/catalina.jar中去修改。
打开tomcat的conf/server.xml,在server.xml找到 <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8" useBodyEncodingForURI="true" /> 修改后如下: <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8" useBodyEncodingForURI="true" server="Microsoft-IIS/6.5"/>