Tomcat安全加固

总结一些tomcat加固的要点
1、删除$CATALINA_HOME/webapps下默认的所有目录文件。因为线上是不使用 Tomcat 默认提供的管理页面,另外删掉管理页面的两个配置文件host-manager.xmlmanager.xml。位于$CATALINA_HOME/conf/Catalina/localhost
2、为了tomcat版本信息泄露,隐藏或者伪装tomcat的版本信息。
默认Tomcat的版本信息如下:
icon
方法1、解压下图jar包,得到META-INF和org文件,修改org/apache/catalina/util/ServerInfo.properties 文件中的serverinfo字段实现更改tomcat的版本信息
icon
icon
修改完之后:
icon
方法2、修改$CATALINA_HOME/conf/server.xml,在Connector节点添加server字段。
icon
3、用户管理:
如果不需要web部署应用,可以注释或者删除tomcat-users.xml下用户权限相关配置
icon
4、如不需要自动部署,关闭自动部$CATALINA_HOME/署功能
修改conf/server.xml中的host字段,将下图处修改为:unpackWARs=”false” autoDeploy=”false”
icon
5、启动cookie的httpOnly属性;
修改 $CATALINA_HOME/conf/context.xml中添加如下图所示配置:
icon
启动cookie的secure属性,只允许cookie在加密方式下传输;
在web.xml中sesion-config节点配置cooker-config。
icon
6、服务权限控制:
tomcat以非root权限启动,应用部署目录权限和tomcat服务启动用户分离,如tomcat以tomcat用户启动,而部署应用的目录设置为nobody用户750.
7、AJP端口管理
AJP是为 Tomcat 与 HTTP 服务器之间通信而定制的协议,能提供较高的通信速度和效率。如果tomcat前端放的是apache的时候,会使用到AJP这个连接器。前端如果是由nginx做的反向代理的话可以不使用此连接器,因此需要注销掉该连接器。
修改如下图所示:
icon
8、禁止列目录:
修改web.xml如下图所示
icon
9、自定义错误页面(40X、50X),防止信息泄露:
icon
10、依据实际情况,定义会话超时时间:
icon
11、合理设置maxThreads,一般设置为8000以下,如果网址访问量非常大,建议运行多个tomcat做负载均衡处理且需注意jvm的参数配置。当心由于jvm参数过小而崩溃。配置命令在$CATALINA_HOME/conf/server.xml中。
12、强烈建议不要使用 Tomcat 的虚拟主机,推荐每个站点使用一个实例。即可以启动多个 Tomcat。
里面包含多个虚拟主机。因为tomcat是多线程,共享内存,任何一个虚拟主机中的应用崩溃,都会影响到所有应用程序。虽然采用多实例的方式会产生过多的开销,但至少保障了应用程序的隔离和安全。
注意升级过程中
1、避免跨大版本的升级
2、将当前老版本tomcat的server.xml(Tomcat主配置文件Server、Service、Engine、Host、Context、Connector)、catalina.sh(配置环境context .xml:指定tomcat和应用的启动路径、java运行时路径、java运行时参数、远程调试参数)web.xml(配置整个tomcat的jsp和servlet工作中的一些情况:servlet、servlet-mapping、session-config、mime-mapping、welcom-file-list、监听器、过滤器、error-page)、tomcat-users.xml(配置用户)文件进行备份,然后部署完新版本的tomcat之后,将这些配置文件覆盖过去即可,再停掉旧版本,启动新版本即可。

~~

-------------本文结束感谢您的阅读-------------
  • Post author: SuNu11
  • Post link: http://sunu11.com/2017/03/27/9/
  • Copyright Notice: All articles in this blog are licensed under BY-NC-SA unless stating additionally.