当前位置: > Linux服务器 > Tomcat >

Tomcat 安全配置

时间:2015-02-08 00:19来源:linux.it.net.cn 作者:IT
删除默认文件 
 
 
删除TOMCAT默认示例文件、帮助文件、后台管理界面等,禁止使用manager/admin管理后台。需删除的文件和目录清单如下: 
引用
 
$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
 
 
启动帐号 
 
建立独立用户,用户名和组名均为tomcat,不设置密码(即禁止SSH登录),tomcat进程以此帐号身份运行,严禁以root权限运行tomcat,禁止以个人帐号或其他有shell权限的帐号运行tomcat。可选如下方法之一来实现非ROOT启动tomcat: 
 
修改启动脚本
 
 
在$CATALINA_BASE/startenv.sh里面export环境变量: 
 
export TOMCAT_USER=tomcat 
 
同时需要修改$CATALINA_HOME/bin/startup.sh 
 
把 
Java代码  收藏代码
exec "$PRGDIR"/"$EXECUTABLE" start "$@"  
 
修改为: 
Java代码  收藏代码
if [ -z "$TOMCAT_USER" ]; then  
    exec "$PRGDIR"/"$EXECUTABLE" start "$@"  
else  
    exec su $TOMCAT_USER -c "$PRGDIR/$EXECUTABLE start $@"  
fi  
 
使用jsvc来启动tomcat
 
 
在jsvc配置文件里面指定参数 
 
引用
-u tomcat
 
 
禁止列目录 
配置$CATALINA_BASE/conf/web.xml文件,防止直接访问目录时由于找不到默认主页而列出目录下所有文件。 
Java代码  收藏代码
<init-param>  
            <param-name>listings</param-name>  
            <param-value>false</param-value>  
        </init-param>  
 
 
打开access log 
按小时或按天记录。prefix/fileDateFormat/pattern可自定义,但必须记录关键信息,例如:源IP,Host、时间、 请求、状态码、数据大小、UA等。注意:如果前端是NG做反向代理,默认的pattern="combined"和pattern="common"不能 记录用户的真实IP,必须自定义pattern,记录客户端真实IP(X-Real-IP) 
引用
 
<Valve className="org.apache.catalina.valves.AccessLogValve" 
    directory="logs"  prefix="xx" 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"/>
 
 
禁止使用jmx 
 
如之前已经启用,在启动脚本里面(catalina.sh或startenv.sh)删除CATALINA_OPTS变量里面jmxremote相关参数即可。 
 
 
禁止使用AJP 
 
配置$CATALINA_BASE/conf/server.xml文件,注释或删除如下部分。 
 
注释前 
引用
 
<Connector port="*" maxThreads="*" 
               enableLookups="false" redirectPort="*" protocol="AJP/**" />
 
 
目录权限 
 
默认情况下,tomcat启动用户对WEB目录下所有文件及子目录应无写权限。标准配置:文件属主为root.root,权限为755。 
 
日志文件及cache文件应放在WEB目录之外 
 
 
上传目录禁止执行 
 
如tomcat需支持上传功能,需要对WEB目录下某些目录有写权限,那么应该限制这些上传目录禁止执行脚本。 
 
appdir路径有几种可能: 
 
(1) 默认位置 
 
appdir="$CATALINA_BASE/webapps/ROOT" 
 
(2) 默认位置下指定了appname 
 
appdir="$CATALINA_BASE/webapps/$appname" 
 
(3)通过docBase参数指定的路径 
 
appdir="$docBase" 
 
这些是通过UrlRewriteFilter模块来限制的示例配置,如果WEB-INF及相关目录不存在,创建一个即可。 
 
 
设置规则禁止上传目录执行jsp 
 
可以使用 
引用
<urlrewrite> 
    <rule> 
        <from>^[\./]*/upload/.*\.jsp$</from> 
        <to>/deny.html</to> 
    </rule> 
</urlrewrite>
(责任编辑:IT)
------分隔线----------------------------
栏目列表
推荐内容