安全是系统架构中最重要的关注点之一,通常情况下,所说的安全涵盖网络安全、数据安全、操作系统安全、服务器安全以及应用系统安全等诸多方面。
Tomcat 是一个免费的开放源代码 的Web应用服务器,技术先进、性能稳定。由于它优秀的稳定性以及丰富的文档资料,广泛的使用人群,从而在开源领域受到广泛的青睐,因此,Tomcat安全也越来越受到重视。
Tomcat作为一款应用服务器,默认情况下可以满足多数场景的安全需求,但是在安全要求较高的情况下,仍需要从多个方面进行配置,已防止Tomcat管理后台被攻击等风险。Tomcat安全主要从以下2个方面介绍。
配置安全
默认情况下其存在一定的安全隐患,可被恶意攻击,所以在生产环境中需要对Tomcat进行安全配置,下面将介绍影响Tomcat配置安全的4个选项。
1. Tomcat环境部署完毕后,要删除根目录下的一些默认文件夹:CATALINA_HOME/webapps文件夹下的内置应用,这些应用可能会导致安全风险,因此移除不使用的应用。对于docs(Tomcat本地说明文档)、examples(Tomcat相关的demo示例)、ROOT(Tomcat默认页),可以将其直接移除。
host-manager和manager用于管理及监控tomcat容器,如果已经使用第三方工具来管理tomcat,不需要manager管理登录,这两个应用也可以直接移除,如图所示。

                                

2. 降权启动tomcat
tomcat 启动用户权限必须为非root,避免一旦tomcat服务被入侵,获取root权限,因为在Linux操作系统中,root用户的权限是最高的,可以执行普通用户无法执行的操作。应单独为Tomcat服务器创建一个用户,并且授予运行应用服务器所需的最小系统权限。 3. 删除不使用的组件
Tomcat是开源软件,那么server.xml中的默认配置对所有人都是可见的,它的运行机制也是众所周知的,因此使用默认配置也会增加服务器受攻击的风险。所以在部署生产环境前,移除不必要的组件,默认情况下,server.xml配置了一个HTTP连接器(8080)和一个AJP连接器(8009),实际上绝大多数情况下,只需要一个连接器。如果Tomcat不存在前置的web服务器,此时可以保留HTTP而删除AJP连接器。 4. 禁用自动部署
在默认情况下,Tomcat是自动部署的,只要是在webapps目录下的war包均会在Tomcat启动时自动部署,包括被植入的恶意web应用。要避免恶意的web应用自动启动,可以考虑从两个方面解决:一是修改web应用部署目录为其他路径,这样攻击者很难找到正确的部署目录并部署web应用;二是禁用自动部署,将server.xml配置文件中Host元素的autoDeploy和deployOnStartup属性设置为false,此时只有通过context标签部署web应用,配置方法如图所示。

                      

管理平台安全
1. 管理平台是什么?
Tomcat提供了基于Web方式的管理平台,管理平台即是内置的两个独立的web应用,位于webapps目录下的host-manager和manager。host-manager管理控制台可以动态地添加一个虚拟主机。此外还可以启动、停止、删除虚拟主机,在实际生产中很少使用host-manager管理平台。manager管理平台可以很方便的管理运行在tomcat服务器上的Web应用,如发布、启动、停止或删除Web应用,还可以实时管理HTTP会话以及查看服务器状态信息等。 2. 管理平台如何使用
在tomcat启动成功后,通过http://ip:port/manager/html访问manager 管理平台 ,因为默认添加了访问权限控制,第一次访问需要在 conf/ tomcat-users.xml 文件 中为当前用户添加角色,manager管理平台共有4种角色,分别为: • manager-gui:允许访问html页面接口(即URL路径为/manager/html/*); • manager-script:允许访问纯文本接口(即URL路径为/manager/text/*); • manager-jmx:允许访问JMX代理接口(即URL路径为/manager/jmxproxy/*); • manager-status:允许访问Tomcat只读状态页面(即URL路径为/manager/status/*)。 其中manager-gui、manager-script、manager-jmx三个角色均具备manager-status角色的权限,即这三种角色权限无需再额外添加manager-status权限。实际使用中只需配置manager-gui角色通过html页面的形式访问管理平台。 manager管理平台有4种角色,host-manager管理平台有2种角色,配置方式如图所示。

                         

Web版管理控制台可以发布、停止、重新加载指定的web应用,如图所示。

                       

通过http://ip:port/manager/status ,查看Server-status服务器状态页面,如图所示

                          

Server-status包含以下几部分信息:
服务器基本信息    服务器版本、JVM版本、操作系统、ip地址

系统信息    内存使用情况

JVM信息    JVM分配及使用情况

连接器信息    连接器请求处理线程的使用情况
host-manager管理控制台可以动态地添加一个虚拟主机。此外还可以启动、停止、删除虚拟主机,如图所示。
通过http:// ip:port /host-manager/html 访问host-manager管理平台,因为默认添加了访问权限控制,第一次访问需要在conf/tomcat-users.xml文件中为当前用户添加角色,host-manager管理平台共有2种角色,分别为admin-gui和admin-script,配置方式如图3所示。 • admin-gui:允许访问html页面接口(即URL路径为/manager/html/*)。 • admin-script:允许访问纯文本接口(即URL路径为/manager/text/*)。

                                   

3. 管理平台安全加固
管理平台有发布管理应用的权限,默认情况下host-manager和manager应用存在安全风险,可能会产生严重的危害,所以针对Tomcat管理平台需通过以下几个方面进行安全加固。 • 如使用内置host-manager和manager管理应用,需要增加IP访问限制,在应 用下META-INF/context.xml文件中配置。修改allow属性的正则表达式。8.5版本前需要手动开启,而8.5版本之后,则默认开启只有本机可以访问。比如只允许ip地址192.168.20.18和192.168.20.19访问manager管理应用,将allow属性值修改为192.168.20.18|192.168.20.19即可,如图所示。

                    

• 如需访问host-manager和manager应用需要分配相关的角色权限。我们还应

设置足够健壮的密码,建议加强口令强度,设置口令复杂度为8位以上,大小写字母、数字、特殊符号的组合,并定期更换密码,避免使用弱口令。

• 管理平台添加用户锁定功能,在server.xml中配置了org.apache.catalina.real

m.LockOutRealm,LockOutRealm 是一个Tomcat的Realm实现,它扩展了CombinedRealm,假如在某一段时间内出现很多验证失败,则它能够提供锁定用户的功能,已避免攻击者进行密码暴力破解。LockOutRealm 配置方式, server.xml文件Engine元素内添加,如图所示

                            

failureCount    用户身份验证验证失败的连续次数。默认为5。

lockOutTime    身份验证失败后,用户被锁定的时间(以秒为单位)。默认为300(5分钟)。
LockOutRealm实现支持以下附加属性:

4. 管理平台入侵案例
某系统曾发现Tomcat管理平台暴露互联网及弱口令的高危漏洞。由于在互联网可直接访问系统Tomcat管理平台,可使用弱用户名密码admin/xxxxx成功登录。可对系统进行管控,同时具有上传恶意war包或者直接上传webshell脚本导致服务器被入侵等风险。 Tomcat管理平台有启动、停止、重新加载、监控Web应用等权限,所以管理后台的安全问题是Tomcat安全的重要部分,如果出现漏洞会对业务系统造成严重的危害,需要充分引起重视并进行安全加固。管理平台就是Tomcat服务器内置的两个web应用,如果使用管理平台需添加ip访问限制,Tomcat已提供此功能,需在白名单设置指定ip地址可以访问管理平台,另外还需设置健壮的登录密码来防止暴力破解。 安全措施不可忽视,继比特币勒索病毒风波之后,petya病毒又席卷众多国家计算机高防服务器,造成严重影响。Tomcat服务器同样面临着病毒、黑客、信息泄露等安全威胁。 总之,Tomcat与安全相关的配置,在实际开发过程中,需要结合应用系统的业务场景综合考虑,而非一味地堆积各种安全配置,否则不仅达不到预期效果,反而会影响系统的访问性能。此外,系统安全是一个非常复杂又非常重要的领域,包括网络、应用、数据、操作系统等诸多方面,本文只是介绍了与Tomcat相关的安全配置。

tomcat 的安全配置预防后台被攻击的更多相关文章

  1. Tomcat server.xml配置示例

    本文由 ImportNew 几乎所有容器类型的应用都会包含一个名为 server.xml 的文件结构.基本上,其中的每个元数据或者配置都是容器完成初始化所需要的.正是由于这些内容都是可配置的,使得软件 ...

  2. Tomcat免安装配置

    大家都知道tomcat吧!因为Tomcat 技术先进.性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器,也是运行Servlet和JS ...

  3. Tomcat负载均衡配置-未完成

    集群技术是目前非常流行的提高系统服务能力与高可靠性( HA- High Availability )的手段,通过把多个独立的服务器组成一个集群可以实现失效无缝转移.也就是说当有某一台集群中的服务器当机 ...

  4. nginx+tomcat集群配置(4)--rewrite规则和多应用根目录设定思路

    前言: nginx中有一块很重要的概念, 就是rewrite规则. 它会对URL进行修改, 然后进行内部的重定向. rewrite授予了nginx更多的自由, 使得后级服务的接入更加地方便. 本文将简 ...

  5. Apache+tomcat集群配置

    一.软件准备 Apache 2.2 : http://httpd.apache.org/download.cgi,下载msi安装程序,选择no ssl版本 Tomcat 6.0 : http://to ...

  6. Linux+Apache+Tomcat集群配置

    参考: http://blog.csdn.net/bluishglc/article/details/6867358# http://andashu.blog.51cto.com/8673810/13 ...

  7. Apache + Tomcat集群配置详解 (1)

    一.软件准备 Apache 2.2 : http://httpd.apache.org/download.cgi,下载msi安装程序,选择no ssl版本 Tomcat 6.0 : http://to ...

  8. Nginx与Tomcat安装、配置与优化

    Nginx与Tomcat安装.配置与优化 Nginx与Tomcat安装.配置与优化 Nginx的安装与使用 Nginx是一款优秀的反向代理服务器 安装: rpm(或者是pkg安装),是预编译好的程序包 ...

  9. Tomcat服务器的配置

    本地安装的Tomcat服务器版本是 Apache Tomcat/7.0.42 启动 localhost 使用Tomcat的前提是安装了jdk,我在本地安装了jdk7.Tomcat服务器的文件目录为F: ...

随机推荐

  1. C++五子棋(六&七)——游戏结束

    规则原理 如图 判断游戏结束 chessData.h //row,col 表示当前落子 bool checkWin(ChessData* game, int row, int col); 横.竖.斜( ...

  2. 图片叠加科幻切换 -- css

    <template> <div>   <div class="a"></div> <div class="b&quo ...

  3. Spring Authorization Server授权服务器入门

    11月8日Spring官方已经强烈建议使用Spring Authorization Server替换已经过时的Spring Security OAuth2.0,距离Spring Security OA ...

  4. Go通过cobra快速构建命令行应用

    来自jetbrains Go 语言现状调查报告 显示:在go开发者中使用go开发实用小程序的比例为31%仅次于web,go得益于跨平台.无依赖的特性,用来编写命令行或系统管理这类小程序非常不错. 本文 ...

  5. ps、top命令查找不到进程的解决方案

    netstat -anpt发现一个奇怪的连接,但是ps和top命令确查不到此进程,这很可能是因为因为ps和top命令被替换了导致这些进程被过滤掉了.因此我这里有个脚本专门查找出来隐藏的进程 #!/us ...

  6. python学习-Day23

    目录 今日内容详细 logging模块(续集) 日志模块的主要组成部分 配置字典 配置字典在项目中的使用 第三方模块 如何利用工具下载第三方模块 查看当前解释器下载的第三方模块 下载第三方模块 直接使 ...

  7. 代码管理工具-Git基础介绍及常用技巧

    目录 Git起源 基本概念 Branch.HEAD和Commit tree Git分支 git merge 和 git rebase 的区别和抉择 与远程仓库的交互 关于一些实际开发场景的问题和解决方 ...

  8. AcWing-3167. 星星还是树 -c++题解(模拟退火)

    ​ 在二维平面上有 n 个点,第 i 个点的坐标为 (xi,yi).请你找出一个点,使得该点到这 n个点的距离之和最小.该点可以选择在平面中的任意位置,甚至与这 n个点的位置重合. 输入格式 第一行包 ...

  9. [笔记] $f(i)$ 为 $k$ 次多项式,$\sum_{i=0}^nf(i)\cdot q^i$ 的 $O(k\log k)$ 求法

    \(f(i)\) 为 \(k\) 次多项式,\(\sum_{i=0}^nf(i)\cdot q^i\) 的 \(O(k\log k)\) 求法 令 \(S(n)=\sum_{i=0}^{n-1}f(i ...

  10. 使用grabit分析mysql数据库中的数据血缘关系

    使用grabit分析mysql数据库中的数据血缘关系 Grabit 是一个辅助工具,用于从数据库.GitHub 等修订系统.bitbucket 和文件系统等各种来源收集 SQL 脚本和存储过程,然后将 ...