• Tomcat 安全优化


    1、telnet 管理端口保护(强制)

    类别 配置内容及说明 标准配置 备注

    telnet

    管理端口保护

    1、修改默认的 8005 管理端口为不易猜测的端口(大于 1024);

    2、修改 SHUTDOWN 指令为其他字符串;

    <Server   port="8527" shutdown="guanbi"> 以上配置项的配置内容只是建议配置,可以按照服务实际情况进行合理配置,但要求端口配置在 8000~8999 之间;

    2、ajp 连接端口保护(推荐)

    类别 配置内容及说明 标准配置 备注
    AJP 连接端口保护

    1、修改默认的 ajp 8009 端口为不易冲突的大于 1024 端口;

    2、通过 iptables 规则限制 ajp 端口访问的权限仅为线上机器;

    <Connector port="8528"

    protocol="AJP/1.3">

    以上配置项的配置内容仅为建议配置,请按照服务实际情况进行合理配置,但要求端口配置在 8000~8999 之间;保护此端口的目的在于防止线下的测试流量被 mod_jk 转发至线上 tomcat 服务器;

    3、禁用管理端(强制)

    类别 配置内容及说明 标准配置 备注
    禁用管理端

    1、删除默认的{Tomcat 安装目录}/conf/tomcat-users.xml 文件,重启 tomcat 后将会自动生成新的文件;

    2、删除{Tomcat 安装目录}/webapps 下默认的所有目录和文件;

    3、将 tomcat 应用根目录配置为 tomcat 安装目录以外的目录;

    <Context path="" docBase="/web/webapps" debug="0" reloadable="false" crossContext="true" /> 对于前端 web 模块,Tomcat 的高危安全隐患,一旦被攻破,黑客通过上传 web shell 的方式将会直接取得服务器的控制权,后果极其严重;

    4、降权启动(强制)

    类别 配置内容及说明 标准配置 备注
    降权启动

    1、tomcat 启动用户权限必须为非 root 权限,尽量降低 tomcat 启动用户的目录访问权限;

    2、如需直接对外使用 80 端口,可通过普通账号启动后,配置 iptables 规则进行转发;

    useradd tomcat

    cp -a /usr/local/tomcat8 /home/tomcat/tomcat8_1/

    chown -R tomcat:tomcat /home/tomcat/tomcat8_1/

    su -c '/home/tomcat/tomcat8_1/bin/startup.sh' tomcat

    ps -ef | grep tomcat

    避免一旦 tomcat 服务被入侵,黑客直接获取高级用户权限危害整个 server 的安全;

    5、文件列表访问控制(强制)

    类别 配置内容及说明 标准配置 备注
    文件列表访问控制 1、conf/web.xml 文件中 default 部分 listings 的配置必须为 false;

    <init-param>

    <param-name>listings</param-name>

    <param-value>false</param-value>

    </init-param>

    false 为不列出目录文件,true 为允许列出,默认为 false;

    6、版本信息隐藏(强制)

    类别 配置内容及说明 标准配置 备注
    版本信息隐藏

    1、修改 conf/web.xml,重定向 403、404 以及 500 等错误到指定的错误页面;

    2、也可以通过修改应用程序目录下的 WEB-INF/web.xml 下的配置进行错误页面的重定向;

    <error-page>

    <error-code>403</error-code>

    <location>/forbidden.jsp</location>

    </error-page>

    <error-page>

    <error-code>404</error-code>

    <location>/notfound.jsp</location>

    </error-page>

    <error-page>

    <error-code>500</error-code>

    <location>/systembusy.jsp</location>

    </error-page>

    在配置中对一些常见错误进行重定向,避免当出现错误时 tomcat 默认显示的错误页面暴露服务器和版本信息;必须确保程序根目录下的错误页面已经存在;

    7、Server header 重写(推荐)

    类别 配置内容及说明 标准配置 备注
    Server header 重写 在 HTTP Connector 配置中加入 server 的配置; server="webserver" 当 tomcat HTTP 端口直接提供 web 服务时此配置生效,加入此配置,将会替换 http 响应 Server header 部分的默认配置,默认是 Apache-Coyote/1.1

    8、访问限制(可选)

    类别 配置内容及说明 标准配置或操作 备注
    访问限制 通过配置,限定访问的 ip 来源

    <Context path="" docBass="/web/webapps" debug="0" reloadable="false" crossContext="true">  <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="61.148.18.138,61.135.165.*" deny="*.*.*.*"/> 

    </Context>

    通过配置信任 ip 的白名单,拒绝非白名单 ip 的访问,此配置主要是针对高保密级别的系统,一般产品线不需要;

    9、起停脚本权限回收(推荐)

    类别 配置内容及说明 标准配置或操作 备注
    起停脚本权限回收 去除其他用户对 Tomcat 的 bin 目录下 shutdown.sh、startup.sh、catalina.sh 的可执行权限; chmod -R 744 tomcat/bin/* 防止其他用户有起停线上 Tomcat 的权限;

    10、访问日志格式规范(推荐)

    类别 配置内容及说明 标准配置或操作 备注
    访问日志格式规范 开启 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 %{UserAgent}i %D" resolveHosts="false"/> 开启 Referer 和 User-Agent 是为了一旦出现安全问题能够更好的根据日志进行问题排查;

    11、禁止列出目录

    vim /usr/local/tomcat8/conf/web.xml

     <init-param>

            <param-name>listings</param-name>

            <param-value>false</param-value>

     </init-param>

    12、页面超时

    <session-config>

              <session-timeout>30</session-timeout>

    </session-config>

    13、默认页面

    vim /usr/local/tomcat8/conf/web.xml

     <welcome-file-list>

                  <welcome-file>index.html</welcome-file>

                  <welcome-file>index.htm</welcome-file>

                   <welcome-file>index.jsp</welcome.file>

     </welcome-file-list>

    14、配置页面传输压缩

    vim /usr/local/tomcat8/conf/server.xml

    <Connector port="8080" protocol="HTTP/1.1"

                            connectionTimeout="20000"

                            redirectPort="8443"

                             compression="on"                     #开启压缩

                             compressionMinSize="50"        #指定最小的压缩文件,单位是字节

                             noCompressionUserAgents="gozilla,Traviata"      #此浏览器类型不进行压缩

                             compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"/>  #文件的格式

    /usr/local/tomcat8/bin/shutdown.sh

    /usr/local/tomcat8/bin/startup.sh

  • 相关阅读:
    其实php真的不错!!!
    mysql 中 时间和日期函数
    mysql grant 命令三种常用
    "设备用反线 不同设备用平行" 这条法则要好好理解.
    mysql 用户管理
    discuz! 页面含义及目录结构分析(转)
    Html TO Ubb and Ubb TO Html
    zend Development Environment 5.5 6.0 6.1 注册码
    discuz登陆相关资料
    linux中的定制任务 crontab
  • 原文地址:https://www.cnblogs.com/2567xl/p/12682311.html
Copyright © 2020-2023  润新知