z0nek

关于我

1、删除管理后台等文件
删除TOMCAT默认示例文件、帮助文件、后台管理界面等,禁止使用manager/html管理后台。需删除的文件和目录清单如下:
$CATALINA_BASE/server/webapps/manager
$CATALINA_BASE/server/webapps/host-manager
$CATALINA_BASE/webapps/balancer
$CATALINA_BASE/webapps/manager
$CATALINA_BASE/webapps/host-manager
$CATALINA_BASE/webapps/webdav
$CATALINA_BASE/webapps/tomcat-docs
$CATALINA_BASE/webapps/jsp-examples
$CATALINA_BASE/webapps/servlets-examples
$CATALINA_BASE/webapps/examples
$CATALINA_BASE/webapps/docs
$CATALINA_BASE/conf/tomcat-users.xml

2、Tomcat启动帐号
建立独立用户,用户名和组名均为tomcat,不设置密码(即禁止SSH登录),tomcat进程以此帐号身份运行。
严禁以root权限运行tomcat,禁止以个人帐号或其他有shell权限的帐号运行tomcat。
3、禁止目录浏览
配置$CATALINA_BASE/conf/web.xml文件,防止直接访问目录时由于找不到默认主页而列出目录下所有文件。
<servlet>
……
<init-param>
<param-name>listings</param-name>
<param-value>false</param-value>
</init-param>
……
</servlet>

4、访问日志记录
必须打开access log记录功能,按小时或按天记录。prefix/fileDateFormat/pattern可自定义,但必须记录关键信息,例如:源IP,Host、时间、请求、状态码、数据大小、UA等。
注意:如果前端是Nginx做反向代理,必须自定义pattern,记录客户端真实IP(X-Real-IP)。
$CATALINA_BASE/conf/server.xml配置示例:
<Valve className=”org.apache.catalina.valves.AccessLogValve”
directory=”logs” prefix=”自定义” suffix=”.log”
fileDateFormat=”yyyy-MM-dd-HH”
pattern=”%a %l %u %t &quot;%r&quot; %s %b &quot;%{Referer}i&quot; &quot;%{User-Agent}i&quot; &quot; %{X-Real-IP}i”
resolveHosts=”false”/>

5、禁止使用JMX
如之前已经启用,在启动脚本里面(catalina.sh或startenv.sh)删除CATALINA_OPTS变量里面jmxremote相关参数即可。

6、禁止使用AJP
配置$CATALINA_BASE/conf/server.xml文件,注释或删除如下部分。
注释前
<Connector port=”*” maxThreads=”*”
enableLookups=”false” redirectPort=”*” protocol=”AJP/**” />
注释后
<!–
<Connector port=”*” maxThreads=”*”
enableLookups=”false” redirectPort=”*” protocol=”AJP/**” />
–>

7、WEB目录权限
默认情况下,tomcat启动账户对WEB目录下所有文件及子目录应无写权限。
标准配置:文件属主为root.root,权限为755。建议将日志文件及cache文件应放在WEB目录之外。

8、上传目录禁止执行
如tomcat需支持上传功能,需要对WEB目录下某些目录有写权限,强烈建议限制这些上传目录禁止执行脚本。
注:这里指的不是去除文件系统rwx权限中的x执行权限,而是针对指定目录如上传路径下的脚本文件不进行解析。
以下是通过UrlRewriteFilter模块来限制的示例配置,如果WEB-INF及相关目录不存在,创建一个即可。
a) 部署jar
把”urlrewrite-2.6.0.jar”拷贝到”$appdir/WEB-INF/lib”目录下或从<https://tuckey.org/urlrewrite/>获取最新版本的urlrewrite jar包。
b) 修改web.xml加载filter
在”$appdir/WEB-INF/web.xml”增加如下配置项
<filter>
<filter-name>UrlRewriteFilter</filter-name>
<filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
</filter>

<filter-mapping>
<filter-name>UrlRewriteFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
c) 设置规则禁止上传目录执行jsp
创建配置文件”$appdir/WEB-INF/urlrewrite.xml”,假设上传目录的相对路径为”/upload”,且脚本扩展名称为”.jsp”。则配置文件内容类似为:
<?xml version=”1.0″ encoding=”utf-8″?>
<!DOCTYPE urlrewrite PUBLIC “-//tuckey.org//DTD UrlRewrite 2.6//EN”
“https://tuckey.org/res/dtds/urlrewrite2.6.dtd”>

<urlrewrite>
<rule>
<from>^[\./]*/upload/.*\.jsp$</from>
<to>/deny.html</to>
</rule>
</urlrewrite>

9、隐藏版本信息
网站中常见的404、500等错误在浏览器中会显示服务器的详细信息,很容易暴露一些敏感的信息
可以采用两种方式屏蔽,推荐第一种方式:
1)
打开conf/web.xml文件,在文件的最后添加如下类似的代码,可以将404或者500错误重定向到另外一个页面
<error-page>
<error-code>404</error-code>
<location>/WEB-INF/jsp/404.jsp</location>
</error-page>

2)修改版本信息
具体操作步骤如下:
到$CATALINA_HOME/lib目录 创建org/apache/catalina/util目录
mkdir -p org/apache/catalina/util
cd $CATALINA_HOME/lib/org/apache/catalina/util
vi ServerInfo.properties #编辑下面文字
server.info=Apache Tomcat
/usr/local/tomcat/bin/catalina.sh stop
/usr/local/tomcat/bin/catalina.sh start


标签:运维安全

评论
© z0nek | Powered by LOFTER