风险评估:Tomcat的安全配置,Tomcat安全基线检查加固

07-11 1011阅读

「作者简介」:冬奥会网络安全中国代表队,CSDN Top100,就职奇安信多年,以实战工作为基础著作 《网络安全自学教程》,适合基础薄弱的同学系统化的学习网络安全,用最短的时间掌握最核心的技术。

风险评估:Tomcat的安全配置,Tomcat安全基线检查加固

这一章节我们需要知道Tomcat基线检查的标准和加固方式。

风险评估:Tomcat的安全配置,Tomcat安全基线检查加固

Tomcat安全基线

  • 1、删除默认页面
  • 2、控制台口令
  • 3、shutdown口令
  • 4、禁用静态目录列表
  • 5、开启访问日志
  • 6、禁用HTTP方法
  • 7、修改banner信息
  • 8、关闭热部署
  • 9、降低权限

    1、删除默认页面

    删除 tomcat安装目录\webapps\ 目录下的 docs、examples 文件夹。这两个是Tomcat提供的示例程序。

    风险评估:Tomcat的安全配置,Tomcat安全基线检查加固

    2、控制台口令

    http://127.0.0.1:8080/manager/html 可以访问tomcat的控制台。

    风险评估:Tomcat的安全配置,Tomcat安全基线检查加固

    1)如果不使用控制台,可以删除tomcat安装目录\webapps\ 目录下的 manager、host-manager 文件夹。

    风险评估:Tomcat的安全配置,Tomcat安全基线检查加固

    2)如果使用控制台,可以设置复杂的密码。tomcat安装目录\conf\tomcat-users.xml 。

    
    

    风险评估:Tomcat的安全配置,Tomcat安全基线检查加固

    3、shutdown口令

    shutdown.sh 关闭tomcat服务是连接8005端口执行SHUTDOWN命令实现的。

    我们直接telnet 8005端口,执行SHUTDOWN命令,也可以关闭Tomcat服务。

    tomcat安装目录\conf\server.xml 设置复杂的shutdown口令。

    风险评估:Tomcat的安全配置,Tomcat安全基线检查加固

    扩展:Tomcat端口作用

    • 8005:Telnet8005端口执行shutdown口令关闭Tomcat服务。
    • 8009:httpd使用ajp协议通过8009端口反向代理Tomcat。
    • 8080:http监听端口。
    • 8443:https监听端口,默认不开启,需要提供证书。

      4、禁用静态目录列表

      tomcat安装目录\conf\web.xml 的 listings 设置为 false,重启Tomcat 服务生效。

      风险评估:Tomcat的安全配置,Tomcat安全基线检查加固

      如果开启静态目录列表,直接访问目录,并且目录下没有默认主页时,就会列出目录下的所有文件,导致目录遍历。

      风险评估:Tomcat的安全配置,Tomcat安全基线检查加固

      5、开启访问日志

      Tomcat 7 开始默认开启访问日志。手动开启到 tomcat安装目录\conf\server.xml 取消 AccessLogValve 的注释,重启生效。directory是目录位置、perfix是日志文件名、pattern是日志格式。

      风险评估:Tomcat的安全配置,Tomcat安全基线检查加固

      tomcat安装目录\logs\ 查看 access日志。具体的日志路径和文件名取决于上一步server.xml的配置。

      风险评估:Tomcat的安全配置,Tomcat安全基线检查加固

      扩展:pattern日志格式,- 表示空。

      • %a:远程IP。
      • %A:本地IP。
      • %b:发送的字节数。
      • %h:远程主机名。
      • %H:请求协议。
      • %l:远程用户名。
      • %m:请求的方法(GET、POST等)。
      • %p:接受请求的本地端口。
      • %q:查询字符串,如果存在,有一个前置的 ? 。
      • %r:请求的第一行(请求方法和请求的URI)。
      • %s:HTTP响应状态码(200、404等)。
      • %S:用户的session ID。
      • %t:日期和时间,Common Log Format格式。
      • %u:被认证的远程用户。
      • %U:请求URL路径。
      • %v:本地服务名。
      • %D:处理请求的时间,毫秒。
      • %T:处理请求的时间,秒。
      • %I:当前请求的线程名。

        6、禁用HTTP方法

        Tomcat 7.0.0 - 7.0.79 的readonly默认未false,允许PUT、DELETE等请求方式,会造成远程代码执行,比如 CVE-2017-12615。

        新版本 readonly 默认为 true,并且不显示这一项。检查 tomcat安装目录\conf\web.xml,readonly 不能为 false。

        风险评估:Tomcat的安全配置,Tomcat安全基线检查加固

        7、修改banner信息

        系统的 banner 信息充当欢迎语的作用,会泄露服务类型、版本号等信息。

        1)HEAD请求获取的响应头信息,可能会暴漏版本号。

        风险评估:Tomcat的安全配置,Tomcat安全基线检查加固

        到 tomcat安装目录\conf\server.xml 改server的值或者删掉这个字段。一些新版本优化掉了server字段。

        风险评估:Tomcat的安全配置,Tomcat安全基线检查加固

        2)页面访问报错时,会泄露版本。

        风险评估:Tomcat的安全配置,Tomcat安全基线检查加固

        tomcat安装目录\lib\catalina.jar\org\apache\catalina\util\ServerInfo.properties 修改server.info 和 server.number。

        风险评估:Tomcat的安全配置,Tomcat安全基线检查加固

        8、关闭热部署

        Tomcat 7 开始默认开启自动部署,也就是热部署,会自动检查webapps目录下的的新文件并重新部署web程序。否则就需要重启Tomcat才能重新加载。

        tomcat安装目录\conf\server.xml Host 的 autoDeploy 设置成 false,关闭热部署。

        风险评估:Tomcat的安全配置,Tomcat安全基线检查加固

        9、降低权限

        Tomcat 安装目录的权限改成非root用户。使用非 root 用户启动 Tomcat。

        # 创建tomcat用户
        useradd tomcat	
        # Tomcat安装目录的所有者改为tomcat
        chown -R tomcat:tomcat /opt/tomcat
        # 停止Tomcat
        /opt/tomcat/bin/shutdown.sh
        # 切换tomcat用户
        su tomcat
        # 以tomcat用户的权限运行Tomcat
        /opt/tomcat/bin/startup.sh
        
VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]