• tomcat加固


    tomcat是一个开源Web服务器,基于TomcatWeb运行效率高,可以在一般的硬件平台上流畅运行,因此,颇受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">

    自定义错误页面

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

    复制代码
    <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 &quot;%r&quot; %s %b %{Referer}i %{User-Agent}i %D"
         resolveHosts="false" />
  • 相关阅读:
    Python之遍历所有行
    Python之找到所有空值所在行
    Python之根据条件筛选特定行
    Python之ArcGIS的字段计算器的运用
    Python之时间格式的快速处理
    Python之多列数据(元组)同时写入DataFrame不同列
    Python之对DataFrame的多列数据运用apply函数操作
    ubuntu12 配置samba服务 实现文件共享 分类: ubuntu 测试 虚拟机 2015-04-25 20:35 38人阅读 评论(0) 收藏
    判断一个对象是否可迭代 的方法 分类: python 2015-03-27 12:20 82人阅读 评论(0) 收藏
    ubuntu中设置tomcat自启动 分类: ubuntu 测试 2015-02-28 17:15 66人阅读 评论(0) 收藏
  • 原文地址:https://www.cnblogs.com/maohuidong/p/9277333.html
Copyright © 2020-2023  润新知