瞌睡虫
tomcat tomcat加固

tomcat 加固有哪些方法

分享
  • 在下炳尚 2 风险管理(专业级)RM/PL 高级信息系统项目管理师 官方采纳
    在下炳尚2 风险管理(专业级)RM/PL 高级信息系统项目管理师
    官方采纳

    tomcat在默认配置下其存在一定的安全隐患,可被恶意攻击。以下是一些安全加固的方法:

    1. 升级到最新稳定版

    出于稳定性考虑,不建议进行跨版本升级,如果之前是6.0系列版本,最好还是使用该系列的最新版本。

    eg:Tomcat6.x:该版本已经于2016年12月31日停止支持,最新稳定版本为6.0.53。

    2. 从监听端口上加固

    1) 如果Tomcat不需要对外提供服务,则监听在本地回环,前面放Nginx。如果需要对外提供访问,比如一个Nginx挂多个Tomcat,那么在服务器上用iptables只允许负载均衡器的IP来访问

    <Connector port=8080″ address=127.0.0.1″  maxHttpHeaderSize=8192″ URIEncoding=UTF-8″  maxThreads=500″ minSpareThreads=25″ maxSpareThreads=75″  enableLookups=false” redirectPort=8443″ acceptCount=100″  connectionTimeout=10000″ disableUploadTimeout=true/>

    2) 现在我们一般不用Apache通过AJP协议来调用Tomcat了,所以AJP端口可以关闭。
    ``

    ``
    3) 在新版的Tomcat中,SHUTDOWN端口默认就是监听在127.0.0.1的,所以不需要修改。如果还想加固,那可以把SHUTDOWN换成其它的字符串。

    <Server port=8005″ shutdown=”YourString”>

    3.自定义错误页面,隐藏Tomcat信息

    编辑conf/web.xml,在标签上添加以下内容:

    <error-page>  <error-code>404</error-code>  <location>/404.html</location></error-page><error-page>  <error-code>500</error-code>  <location>/500.html</location></error-page>

    4.禁用Tomcat管理页面

    1) 删除webapps目录下Tomcat原有的所有内容

    2) 删除conf/Catalina/localhost/下的host-manager.xml和manager.xml这两个文件

    5.用普通用户启动Tomcat

    useradd -M -s /bin/false tomcatchown -R tomcat.tomcat /usr/local/src/apache-tomcat-6.0.37su – tomcat -c “/usr/local/src/apache-tomcat-6.0.37/bin/catalina.sh start”

    6.禁止Tomcat列目录

    这在新版本中默认就是禁用的,可以在conf/web.xml中编辑

    <init-param>  <param-name>listings</param-name>  <param-value>false</param-value></init-param>
  • 安全小白成长记 2 信息安全等级高级测评师 CISP-PTE
    安全小白成长记2 信息安全等级高级测评师 CISP-PTE

    1.如果不需要控制台管理,请更改控制台用户文件,注销账号信息,如果需要控制台,请更改账户信息。
    修改tomcat/conf/tomcat-user.xml文件
    注释或修改如下信息
    <tomcat-users> </tomcat-users>中间的是用户账号信息,manager-gui登录认证需要在这中间加入

    <role rolename="manager-gui"> <user username="admin" password="www.123.com" roles="manager-gui"/>

    2.开启日志功能,增加审计环节
    修改conf/server.xml文件
    去掉如下行的注释符

    <Valve className=“org.apache.catalina.valves.AccessLogValve” directory=“logs” prefix="localhost_access_log." suffix=".txt" pattern="common" resolveHosts="false"/>

    3.避免泄露敏感信息
    在网站根目录下新建noFile.html文件
    查看并启用tomcat/conf/web.xml文件中下列代码:

    <error-page> <error-code>404</error-code> <location>/noFile.html</location> </error-page>

    4.防止浏览器查看目录内容
    编辑tomcat/conf/web.xml配置文件

    <init-param>         <param-name>listings</param-name>         <param-value>true</param-value>     </init-param>true改成false

    5.禁用不安全的http请求方式
    编辑tomcat/conf/web.xml配置,添加或修改如下信息

    <security-constraint> <web-resource-collection> <url-pattern></url-pattern> <http-method>PUT</http-method> <http-method>DELETE</http-method> <http-method>HEAD</http-method> <http-method>OPTIONS</http-method> <http-method>TRACE</http-method> </web-resource-collection> <auth-constraint> </auth-constraint> </security-constraint> <login-config> <auth-method>BASIC</auth-method> </login-config>

    6.访问来源白名单
    编辑tomcat/conf/server.xml,添加如下

    <value className=“org.apache.catalina.values.RemoteAddrValue” allow=IP地址" deny="" />

    7.缓解dos攻击带来的过度资源占用――根据情况修改connectionTimeout,acceptCount,maxThreads
    编辑tomcat/conf/server.xml文件

    <Connector?port="8080"?protocol="HTTP/1.1"?connectionTimeout=300"?redirectPort=8443?acceptCount=500?maxThreads=400?/>

    maxThreads 是处理请求的线程数,acceptCount 是等待队列,acceptCount并不是一定要大于等于maxThreads。maxThreads 满了,进入acceptCount ,acceptCount 也满了,则 拒绝请求
    5.5版本以下为

    <Connector className=“org.apache.coyote.tomcat4.CoyoteConnector” port=8080” minProcessors=5” maxProcessors=75” enableLookups=true” redirectPort=8443” acceptCount=100” debug=0” connectionTimeout=300 ” useURIValidationHack=false” protocolHandlerClassName="org.apache.jk.server.JkCoyoteHandler"/>

    8.降低被扫描的几率――修改port=”8080”和redirectPort=“8443”
    编辑tomcat/conf/server.xml文件

    <Connector?port="8080"?protocol="HTTP/1.1"?connectionTimeout=300"?redirectPort=8443”acceptCount=500?maxThreads=400?/>

    5.5版本以下为

    <Connector className=“org.apache.coyote.tomcat4.CoyoteConnector” port=8080” minProcessors=5” maxProcessors=75” enableLookups=true” redirectPort=8443” acceptCount=100” debug=0” connectionTimeout=300 ” useURIValidationHack=false” protocolHandlerClassName="org.apache.jk.server.JkCoyoteHandler"/>

    9.防止传输信息被截获解读
    使用jdk的keytools生成密钥对
    执行命令keytool -genkey -alias tomcat -keyalg RSA -keystore /mydir/keystore
    修改tomcat的web.xml文件取消注释信息后添加秘钥路径和访问密码

    <Connector port=8443” protocol=“org.apache.coyote.http11.Http11Protocol” maxThreads=150” SSLEnabled=true” scheme=“https” secure=true” clientAuth="false" keystor
  • 写回答