• tomcat安全


    Tomcat 是 Java Servlet、JSP、Java 表达式语言和 Java WebSocket 技术的开源实现,被广泛使用在 Java 语言开发的大型网站系统中。我们可以从以下几个方面来保障 Tomcat 的安全。

    保持版本更新

    建议在部署时采用最新稳定版的 Tomcat,并在运维过程中追踪官方版本发布的情况,选择升级到最新稳定版。

    删除默认应用

    从官网下载了 Tomcat 安装文件后,在其 webapps 目录下默认有如下的应用:docs、examples、host-manager、manager、ROOT。删除这些默认应用,可以减少安全风险。

    服务降权

    在实践中,Tomcat 服务器一般部署在负载均衡设备或者 Nginx 之后,服务的监听端口应设置为 1024 以上(例如常见的 8080)。在这种情况下,笔者建议为 Tomcat 设置专用的启动用户,而并不是使用 root 这一超级权限用户,以限制在发生 Tomcat 入侵后黑客可以获得的权限避免更大的危害。而这也是最小权限原则的实践。例如,通过以下命令建立普通用户 tomcat:

    useradd -s /sbin/nologin tomcat
    chown -R tomcat:tomcat  /path/to/path/tomcat/
    chmod -R 744 /usr/local/tomcat
    ret=`id -u tomcat >& /dev/null`
    if [ $? -ne 0 ];then
        echo "not exist"
    fi

    管理端口保护

    Tomcat 提供了通过 Socket 连接 8005 端口来执行关闭服务的能力,这在生产环境中是极为危险的。通过修改 server.xml 配置文件来禁用该管理端口:

    <Server port="8005" shutdown="SHUTDOWN">
    修改为
    <Server port="-1" shutdown="SHUTDOWN">

    AJP 连接端口保护

    Tomcat 服务器通过 Connector 连接器组件与客户程序建立连接,Connector 组件负责接收客户的请求以及把 Tomcat 服务器的响应结果发送给客户。默认情况下,Tomcat 在 server.xml 中配置了两种连接器,一种使用 AJP,要和 apache 结合使用,一种使用 http。当使用 http 时建议禁止 AJP 端口访问。禁用的方式是在 server.xml 中注释以下行

    <!--<Connector port="8329" protocol="AJP/1.3" redirectPort="8443" />-->


    关闭 WAR 包自动部署

    默认 Tomcat 开启了对 WAR 包的热部署的。笔者建议关闭自动部署,以防止 WAR 被恶意替换后导致的网站挂马。关闭 WAR 包自动部署的方式在 server.xml 中修改的

    <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
    修改为
    <Host name="localhost" appBase="webapps" unpackWARs="false" autoDeploy="false">

    自定义错误页面

    通过自定义错误页面,可以防止在发生未处理的异常时导致的信息泄露。自定义错误页面的方式是编辑 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>

    参数调优:

    Xms: 是指设定程序启动时占用内存大小。一般来讲,大点,程序会启动的快一点,但是也可能会导致机器暂时间变慢。
    Xmx: 是指设定程序运行期间最大可占用的内存大小。如果程序运行需要占用更多的内存,超出了这个设置值,就会抛出OutOfMemory异常。
    Xss: 是指设定每个线程的堆栈大小。这个就要依据你的程序,看一个线程大约需要占用多少内存,可能会有多少线程同时运行等。

    -Xms: 为jvm启动时分配的内存,比如-Xms200m,表示分配200M
    -Xmx: 为jvm运行过程中分配的最大内存,比如-Xms500m,表示jvm进程最多只能够占用500M内存
    -Xss: 为jvm启动的每个线程分配的内存大小,默认JDK1.4中是256K,JDK1.5+中是1M

  • 相关阅读:
    ubuntu進入dos界面命令 ubuntu進入圖形界面命令
    CentOS 8.2远程连接vncserver升级后1.10.1无法启动解决记录
    Eclipse:Cannot complete the install because of a conflicting dependency.问题解决
    Android SDK更新以及ADT更新出现问题的解决办法
    Visual Studio 2013开启JavaScript的智能提示功能
    linux中mysql密码找回的两种方式
    Oracle 物化视图 说明
    linux下mysql字符集编码问题的修改
    mysql 启动错误-server PID file could not be found
    在linux安装mysql,并设置远程访问
  • 原文地址:https://www.cnblogs.com/smlile-you-me/p/11409680.html
Copyright © 2020-2023  润新知