• Linux安全加固之中间件Tomcat


    (注:皆为参考操作配置)

    这次是tomcat的Linux加固,分为身份鉴别、访问控制、安全审计、资源控制和入侵防范5个方面
    大部分加固基于xml配置文件进行修改,也应根据实际需求制定方案。
    寻找配置文件目录,Linux可以用find /-name *tomcat* 即可。

    0x00    身份鉴别
    1. 删除多余账号:
    修改tomcat配置文件**/conf/tomcat-users.xml配置文件,删除与工作无关的帐号。
    例如tomcat1与运行、维护等工作无关,删除帐号,注释如下行即可:
    <userusername=”tomcat1” password=”tomcat” roles=”admin”>.


    2. 口令复杂度:
    口令要求:长度至少8位,并包括数字、小写字母、大写字母和特殊符号4类中至少3类。
    修改tomcat配置文件***/conf/tomcat-users.xml配置文件
    <userusername=”usr1” password=”12345qwe” roles=”admin”>
    要求usr1密码必须满足复杂度要求。


    3. 不同用户不同账号:
    应为两个或两个以上即为合理
    修改tomcat配置文件***/conf/tomcat-users.xml配置文件,修改或添加帐号:
    <userusername=”tomcat” password=” Tomcat!234” roles=”admin”>


    4. 非root启动服务:
    ps -ef | grep tomcat|grep -v "grep"
    tomcat进程的启动用户应不为root
    使用普通用户启动tomcat服务。


    0x01    访问控制(留作自查)
    最小特权:
    编辑tomcat配置文件/conf/tomcat-user.xml配置文件,在配置文件<tomcat-users>节点下,修改用户角色权限,授权tomcat具有远程管理权限:


    0x02   安全审计
    编辑tomcat配置文件server.xml配置文件,在<HOST>标签中增加记录日志功能,将以下内容的注释标记<! -- -- >取消:
    <valveclassname=”org.apache.catalina.valves.AccessLogValve”
    Directory=”logs”prefix=”localhost_access_log.” Suffix=”.txt”
    Pattern=”common”resloveHosts=”false”/>

    classname: This MUSTbe set to org.apache.catalina.valves.AccessLogValve to use thedefault access log valve

    翻译:这必须设置为org.apache.catalina.valves.AccessLogValve以使用默认访问日志阀
    Directory:日志文件放置的目录,在tomcat下面有个logs文件夹,那里面是专门放置日志文件的,也可以修改为其他路径;
    Prefix:这个是日志文件的名称前缀,日志名称为localhost_access_log.2008-10-22.txt,前面的前缀就是这个localhost_access_log。
    Suffix: 文件后缀名。
    Pattern:common方式时,将记录访问源IP、本地服务器IP、记录日志服务器IP、访问方式、发送字节数、本地接收端口、访问URL地址等相关信息在日志文件中。
    resolveHosts:值为true时,tomcat会将这个服务器IP地址通过DNS转换为主机名,如果是false,就直接写服务器IP地址。


    0x03   入侵防范
    1. HTTP加密协议
    cat /tomcat/pat/to/path/conf/server.xml|sed '//d'|sed '/^$/d'|sed'//d'|sed '/^s*$/d'|grep "keystoreFile"

    (1)使用JDK自带的keytool工具生成一个证书:
    $JAVA_HOME/bin/keytool -genkey –alias tomcat –keyalg RSA -keystore/path/to/my/keystore
    其中目录:/path/to/my需要用户自行创建。

    (2)修改tomcat安装目录下/conf/server.xml配置文件,更改为使用HTTPS方式,增加如下行:
    <Connectorclassname="org.apache.catalina.http.HttpConnector"
    port="8443" protocol="HTTP/1.1" minProcessors="5"
    SSLEnabled="true"
    maxprocessors="100"
    enableLookups="true" acceptCount="10" debug="0"
    scheme="https"
    Factory_classname="org.apache.catalina.SSLServerSocketFactory"
    secure="true"
    clientAuth="false"
    keystoreFile="/path/to/my/keystore"
    keystorePass="123qwe"
    sslProtocol="TLS"/>
    其中keystorePass的值为生成keystore时输入的密码。

    (3)重新启动tomcat服务

    2. 禁用非法HTTP请求方法

    编辑web.xml文件
    查看org.apache.catalina.servlets.DefaultServlet是否存在如下配置:
    <init-param>
    <param-name>readonly</param-name>
    <param-value>false</param-value>
    </init-param>
    将false修改为true。readonly参数默认是true,即不允许delete和put操作。


    0x04   资源控制
    1. 超时登出
    单位是毫秒
    /conf/server.xml配置文件,将connectionTimeout修改为30秒:
    <Connectorport="8080" maxHttpHeaderSize="8192" maxThreads="150"minSpareThreads="25"maxSpareThreads="75"、enableLookups="false"redirectPort="8443" acceptCount="100"connectionTimeout="30000" disableUploadTimeout="true"/>

    2. 错误页面重定向

    (1) 编辑tomcat配置文件/conf/web.xml文件:
    在最后</web-app>一行之前加入以下内容:
    <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>
    第一个<error-page></error-page>之间的配置实现了将404未找到jsp网页的错误导向noFile.htm页面,也可以用类似方法添加其多的错误代码导向页面,如403,500等。

    第二个<error-page></error-page>之间的配置实现了当jsp网页出现java.lang.NullPointerException导常时,转向error.jsp错误页面,还需要在第个jsp网页中加入以下内容:
    <%@ pageerrorPage="/error.jsp" %>
    典型的error.jsp错误页面的程序写法如下:
    <%@ pagecontentType="text/html;charset=GB2312"%>
    <%@ pageisErrorPage="true"%>
    <html>
    <head><title>错误页面</title></head>
    <body>出错了:</p>错误信息:<%= exception.getMessage() %><br>
    Stack Trace is :<pre><font color="red"><%
    java.io.CharArrayWritercw = new java.io.CharArrayWriter();
    java.io.PrintWriterpw = new java.io.PrintWriter(cw,true);
    exception.printStackTrace(pw);
    out.println(cw.toString());
    %></font></pre>
    </body>
    </html>
    当出现NullPointerException异常时tomcat会把网页导入到error.jsp,且会打印出出错信息。

    重新启动tomcat服务

    3. 修改默认端口
    修改tomcat配置文件server.xml配置文件,更改默认管理端口到非8080:
    <Connector
    port="8080" maxHttpHeaderSize="8192" maxThreads="150"
    minSpareThreads="25"maxSpareThreads="75"、
    enableLookups="false"redirectPort="8443" acceptCount="100"
    connectionTimeout="300"disableUploadTimeout="true" />

    重新启动tomcat服务

    4. 禁止目录列出
    编辑tomcat配置文件web.xml配置文件:
    <init-param>
    <param-name>listings</param-name>
    <param-value>true</param-value>
    </init-param>
    把true改成false。

    重新启动tomcat服务

    5. 防止恶意关闭服务
    编辑tomcat配置文件conf/server.xml配置文件,
    shutdown的值为复杂的字符串:
    <Serverport="8005" shutdown="复杂的字符串">

    6. 连接数设置
    编辑tomcat配置文件server.xml文件:
    maxThreads="150" 表示最多同时处理150个连接。
    minSpareThreads="25" 表示即使没有人使用也开这么多空线程等待。
    maxSpareThreads="75" 表示如果最多可以空75个线程。
    acceptCount="100" 当同时连接的人数达到maxThreads时,还可以接收排队的连接,超过这个连接的则直接返回拒绝连接。

    7. 修改banner
    修改/lib/catalina.jar中Serverinfo.properties问津中的以下参数(修改以掩饰真实版本信息):
    server.info=X
    server.build=BuildDate
    server.number=X

  • 相关阅读:
    今日总结
    今日总结
    今日总结
    今日总结
    今日总结
    今日总结
    今日总结
    今日总结
    今日总结
    Interesting Finds: 2010 02.08 ~ 02.13
  • 原文地址:https://www.cnblogs.com/smlile-you-me/p/10877246.html
Copyright © 2020-2023  润新知