加入收藏 | 设为首页 | 会员中心 | 我要投稿 甘南站长网 (https://www.0941zz.com/)- 科技、行业物联网、开发、云计算、云管理!
当前位置: 首页 > 运营中心 > Tomcat > 正文

tomcat 安全规范 tomcat安全加固和规范

发布时间:2023-02-17 11:20:37 所属栏目:Tomcat 来源:互联网
导读:tomcat是一个开源Web服务器,基于Tomcat的Web运行效率高,可以在一般的硬件平台上流畅运行,因此,颇受Web站长的青睐。不过,在默认配置下其存在一定的安全隐患,可被恶意攻击。以下是一些安全加固的方法: 版本安全 升级到最新稳定版,出于稳定性考虑,不建
  tomcat是一个开源Web服务器,基于Tomcat的Web运行效率高,可以在一般的硬件平台上流畅运行,因此,颇受Web站长的青睐。不过,在默认配置下其存在一定的安全隐患,可被恶意攻击。以下是一些安全加固的方法:
 
  版本安全
 
   升级到最新稳定版,出于稳定性考虑,不建议进行跨版本升级。
 
  服务降权
 
  不要使用root用户启动tomcat,使用用普通用户启动Tomcat,集群内用户名统一UID
 
  端口保护
 
  1 更改tomcat管理端口8005 ,此端口有权限关闭tomcat服务,但要求端口配置在8000~8999之间,并更改shutdown执行的命令
  2 若 Tomcat 都是放在内网的,则针对 Tomcat 服务的监听地址都是内网地址
  3 修改默认的ajp 8009端口为不易冲突(大于1024),但要求端口配置在8000~8999之间
 
  禁用管理端
 
  1 删除默认$CATALINA_HOME/conf/tomcat-users.xml文件,重启tomcat将会自动生成新的文件
  2 删除$CATALINA_HOME/webapps下载默认的所有目录和文件
  3 将tomcat应用根目录配置为tomcat安装目录以外的目录
 
  隐藏Tomcat的版本信息
 
  针对该信息的显示是由一个jar包控制的,该jar包存放在$CATALINA_HOME/lib目录下,名称为 catalina.jar,
  通过 jar xf 命令解压这个 jar 包会得到两个目录 META-INF 和 org ,
  修改 org/apache/catalina/util/ServerInfo.properties 文件中的 serverinfo 字段来实现来更改我们tomcat的版本信息
 
  关闭war自动部署
 
  默认 Tomcat 是开启了对war包的热部署的。为了防止被植入木马等恶意程序,因此我们要关闭自动部署。
 
  修改实例:
 
     <Host name="localhost" appBase=""
             unpackWARs="false" autoDeploy="false">
 
  自定义错误页面
 
 
  <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>
  屏蔽目录文件自动列出
 
  编辑conf/web.xml文件
 

  <servlet>
      <servlet-name>default</servlet-name>
      <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
      <init-param>
        <param-name>debug</param-name>
        <param-value>0</param-value>
      </init-param>
      <init-param>
        <param-name>listings</param-name>
        <param-value>false</param-value>
      </init-param>
      <load-on-startup>1</load-on-startup>
    </servlet>
    
  <param-value>false</param-value>
  这里false为不列出,true为充许列出
 
  多虚拟主机
 
  强烈建议不要使用 Tomcat 的虚拟主机,推荐每个站点使用一个实例。即,可以启动多个 Tomcat,而不是启动一个 Tomcat 里面包含多个虚拟主机。
  因为 Tomcat是多线程,共享内存,任何一个虚拟主机中的应用崩溃,都会影响到所有应用程序。虽然采用多实例的方式会产生过多的开销,但至少保障了应用程序的隔离和安全。
 
  脚本权限回收
 
  控制CATALINAHOME/bin目录下的start.sh、catalina.sh、shutdown.sh的可执行权限
  chmod−R744 CATALINA_HOME/bin/*
 
  分离 Tomcat 和项目的用户
 
  为了防止 Tomcat 被植入 web shell 程序后,可以修改项目文件。因此我们要将 Tomcat 和项目的属主做分离,这样子,即便被搞,他也无法创建和编辑项目文件。
 
  server head重写
 
  在HTTP Connector配置中加入server的配置 server="server_name",默认是Apache-Copyote/1.1
  通过配置,限定访问的IP来源
 
  <Host name="localhost"  appBase="/data/www/tomcat_webapps"   unpackWARs="true" autoDeploy="false">
     <Valve className="org.apache.catalina.valves.RemoteAddrValve"  allow="192.168.1.10,192.168.1.30,192.168.2.*" deny=""/>
     <Valve className="org.apache.catalina.valves.RemoteHostValve"  allow="www.test.com,*.test.com" deny=""/>
  </Host>
 
  访问日志格式规范
  开启tomcat默认访问日志中Referer和User-Agent记录
 
  标准配置:
 
  <Valve className="org.apache.catalina.valves.AccessLogValve"
     directory="logs" prefix="localhost_access_log"
       suffix=".txt" pattern="%h %l %u %t "%r" %s %b %{Referer}i %{User-Agent}i %D"
       resolveHosts="false" />
 
  tomcat禁用非法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操作。
 
  tomcat用户具有远程管理权限
  在tomcat-users.xml中,修改tomcat用户的role值包含manager,如:
 
  <user username="tomcat" password="***"
  roles="manager">
 
  tomcat自动登出时间不大于30秒
  编辑server.xml,修改自动登出时间为30秒,如下:
 
 
  <Connector
  port="8080" maxHttpHeaderSize="8192" maxThreads="150"
  minSpareThreads="25" maxSpareThreads="75"、
  enableLookups="false" redirectPort="8443" acceptCount="100"
  connectionTimeout="30000" disableUploadTimeout="true" />
  tomcat应根据机器性能和业务需求,设置最小连接数和最大连接数
 
  编辑server.xml文件,
 
  样例如下: <Connector port="8080" minSpareThreads="25" ……/>
  minSpareThreads=“25” 表示即使没有人使用也开这么多空线程等待
  根据实际情况设置连接数
 
  编辑server.xml文件,
  样例如下: <Connector port="8080" maxThreads="150"……/>
  maxThreads=“150” 表示最多同时处理150个连接
  根据实际情况配置连接数
 
  Tomcat配置访问日志
  修改server.xml,将如下内容的注释标记取消:
 
 
  <Valve className=”org.apache.catalina.valves.AccessLogValve”
  Directory=”logs” prefix=”localhost_access_log.” Suffix=”.txt”
  Pattern=”common” resloveHosts=”false”/>
  配置Tomcat错误页面重定向
 
  编辑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>

(编辑:甘南站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读