如何预防后台被攻击?Tomcat 的安全配置来啦!

安全是系统架构中最重要的关注点之一,通常情况下,所说的安全涵盖网络安全、数据安全、操作系统安全、服务器安全以及应用系统安全等诸多方面。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所示。

图 2.Tomcat内置应用

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应用,配置方法如图3所示。

图 3.禁用自动部署

管理平台安全

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种角色,配置方式如图4所示。

图 4. 管理平台角色配置

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

图 5. Web版管理控制台

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

图 6. 服务器状态页面

Server-status包含以下几部分信息:

host-manager管理控制台可以动态地添加一个虚拟主机。此外还可以启动、停止、删除虚拟主机,如图7所示。

通过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/*)。

图 7. host-manager管理平台页面

3. 管理平台安全加固

管理平台有发布管理应用的权限,默认情况下host-manager和manager应用存在安全风险,可能会产生严重的危害,所以针对Tomcat管理平台需通过以下几个方面进行安全加固。

如使用内置host-manager和manager管理应用,需要增加IP访问限制,在应

用下META-INF/context.xml文件中配置。修改allow属性的正则表达式。8.5版本前需要手动开启,而8.5版本之后,则默认开启只有本机可以访问。比如只允许ip地址10.232.150.78和10.232.150.80访问manager管理应用,将allow属性值修改为10.232.150.78|10.232.150.80即可,如图8所示。

图8. IP访问限制配置方式

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

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

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

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

图9. LockOutRealm 配置

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/570007.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring Boot 单例模式中依赖注入问题

在日常项目开发中,单例模式可以说是最常用到的设计模式,项目也常常在单例模式中需要使用 Service 逻辑层的方法来实现某些功能。通常可能会使用 Resource 或者 Autowired 来自动注入实例,然而这种方法在单例模式中却会出现 NullPointExceptio…

VO,BO,PO,DO,DTO的区别

面对这个图,让我们先从承上启下的DTO开始入手 DTO(Data Transfer Object)数据传输对象 这个传输通常指的前后端之间的传输 DTO是一个比较特殊的对象,他有两种存在形式: 在后端,他的存在形式是java对象&…

Windows下pip 离线包安装

pip在线安装十分方便,有时候某些服务器并没有直接联网,需要下载好安装包上传到服务器上进行安装,不经常用,还是有点小麻烦的。 安装Python之后,将下载好的安装包包放在Python安装的根目录下使用pip install packagenam…

VMware设置及linux静态ip设置

1. VMWARE虚拟机NAT模式上网设置 1.1. VM虚拟机设置 1.1.1. 虚拟机全局设置 启动虚拟机选择【虚拟网络编辑器】 如果需要管理员权限点【更改设置】,没有提示这忽略这一步 选择NAT模式,更改下面的子网IP,改成你需要的任何一个子网网段&…

问题 L: 超超的中等意思

问题 L: 超超的中等意思 时间限制: 1 Sec 内存限制: 128 MB提交: 366 解决: 27[提交] [状态] [命题人:jsu_admin]题目描述 已知p,q,k和一个难搞得多项式(pxqy)^k。想知道在给定a和b的值下计算多项式展开后x^a*y^b得系数s。输入 多组输入,每组数据一行输入p,q,k,a,…

SELinux 引起的 Docker 启动失败

问题描述 Linux OS 版本 CentOS Linux release 7.2.1511 (Core) 启动Docker service docker start 启动失败信息 原因分析 Error starting daemon: SELinux is not supported with the overlay2 graph driver on this kernel. Either boot into a newer kernel or disabl...nab…

postgresql模糊匹配正则表达式性能问题

postgresql 模糊匹配 目前建议使用like,~~,不建议使用正则表达式, 目前有性能问题https://yq.aliyun.com/articles/405097正则表达式效率比较低下:操作符 ~~ 等效于 LIKE, 而 ~~* 对应 ILIKE。 还有 !~~ 和 !~~* 操作符 分别代表 …

配置MySQL的环境变量

配置MySQL的环境变量 1.现在安装MySQL ——–下载最新版MySQL软件,将MySQL安装到系统目录中,记录当前安装目录; 如安装mysql到D:\wamp\mysql目录下 2.打开win7系统——右击计算机——单击属性-弹出win7系统页面 3.高级系统设置-环境变…

通过mysqldump备份数据库

使用mysqldump命令备份 mysqldump命令的作用是备份MySQL数据库。是将数据库中的数据备份成一个文本文件。表的结构和表中的数据将存储在生成的文本文件中。mysqldump命令的工作原理很简单。它先查出需要备份的表的结构,再在文本文件中生成一个CREATE语句。然后&…

ThinkPHP-保存生成的二维码

通过TP框架引入Qrcode插件,然后调用插件生成二维码,并保存1.引入qrcode插件: 2.功能页面-生成二维码按钮: 3.生成二维码-代码: 4.后台代码-通过vendor方法引入: //下载生成的二维码-引用方法1 pu…

工厂方法 Factory Method

背景:有一个应用框架,它可以向用户显示多个文档。在这个框架中,两个主要的抽象是类Application和Document.这两个类都是抽象的。客户必须通过它们的子类来做与举替应用相关的实现。 分析:因为被实例化的特定Document子类是与特定应…

解析.DBC文件, 读懂CAN通信矩阵,实现车内信号仿真

通常我们拿到某个ECU的通信矩阵数据库文件,.dbc后缀名的文件。 直接使用CANdb Editor打开,可以很直观的读懂信号矩阵的信息,例如下图: 现在要把上图呈现的信号从.dbc文件中解析出来,供实现自动化仿真总线信号使用&…

01-数据库基础

1 数据库系统概述 1.1 数据库的4个基本概念 数据(Data):数据库中存储的基本对象数据库(Database):长期储存在计算机内、有组织的、可共享的大量数据的集合。数据库管理系统(DBMS):用户与操作系统之间的一层…

linux命令——crontab的使用方法

一、crond简介 crond是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检…

第一个程序 快速编译链接的办法

转载于:https://www.cnblogs.com/ZHONGZHENHUA/p/10223249.html

变量 和 注释

转自:白月黑羽Python3教程:http://www.python3.vip/doc/tutorial/python/0003/ Python语言中,所有的 数据 都被称之为 对象。 每个整数、小数、字符串,还有我们后面要学的 字典、元组、列表 等, 都是对象。 在Python程…

jQuery教程03-jQuery 元素、id、.class和*全选择器

jQuery 基础选择器 jQuery 选择器允许您对 HTML 元素组或单个元素进行操作。 jQuery 选择器基于元素的 id、类、类型、属性、属性值等"查找"(或选择)HTML 元素。 它基于已经存在的 CSS 选择器,除此之外,它还有一些自定…

前台一键备份数据库+PHP实现方式

一、实现思路 1、单击备份按钮传递参数到后台,ajax实现: function backupDatabase(){var back backupDatabase;$.ajax({url:system_backup.php?dobackupDatabase,type:POST,data:back,dataType:json,beforeSend:function(){intervalwindow.setInterv…

windows+PHP+shell_exec()无法执行的原因

今天使用shell_exec()命令执行wkhtmltopdf.exe 生成pdf文件时,总是无法生成PDF文件,使用var_dump()打印返回值,结果是null。可是检查代码并没有什么问题啊?执行程序的目录是 D:\Program Files\wkhtmltopdf\bin\wkhtmltopdf.exe …

通过wkhtmltopdf导出支持CSS样式的pdf文件

在公司项目中发现有下载pdf文件的功能,但是不能识别CSS样式,导致下载的pdf文件格式显得很别扭,虽然能看但是难看。然后就是百度啊,google啊,最后找到一款能够识别CSS样式的软件—wkhtmltopdf。wkhtmltopdf可以直接把任…