如何预防后台被攻击?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,一经查实,立即删除!

相关文章

position详解

导读: position的定位类型有:static(默认值)、relative(相对定位)、absolute(绝对定位)、fixed(固定定位)、sticky(粘性定位)。其中最常用的就是relative和ab…

原型设计列表

PencilFramerShireframeUIDesignerBalsamiq MockupsMockup BuilderMockupFrameBoxiPhone MockupGOOFLOWWireframeSketcherFluidIAIndigo StudioOrigamiQuartz ComposerJustprotoAvocadoPaintCodeMockplus(摩客)墨刀

IDC机房跳线

服务网卡口与配线架 这里有一根网线 记录方式 签 A:23FM-23U-T07 (配线架网线) B:23FM-23U-NIC1(服务器网线) 在配线架的机柜旁边一定写明了 跳线的对面的 交换和配线架的网线位置 比如 记录方式为 A:23FA-23FJ-T07 B:H3C-22U-T04 转载于:https://www…

常用的mysql sql_mode

ONLY_FULL_GROUP_BY: 对于GROUP BY聚合操作,如果在SELECT中的列,没有在GROUP BY中出现,那么这个SQL是不合法的,因为列不在GROUP BY从句中 NO_AUTO_VALUE_ON_ZERO: 该值影响自增长列的插入。默认设置下&…

(转)Java atomic原子类的使用方法和原理(一)

在讲atomic原子类之前先看一个小例子: public class UseAtomic { public static void main(String[] args) { AtomicInteger atomicIntegernew AtomicInteger(); for(int i0;i<10;i){ Thread tnew Thread(new AtomicTest(atomicInteger)); t.start(); try { t.join(0); } ca…

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

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

linux(centOS7,mini),python环境的搭建

今天想试一试python在linux下的工作&#xff0c;在vmware中安装了centOS7版本的linux&#xff0c;先前装过一个带GUI的&#xff0c;但是感觉在虚拟机理跑的太慢&#xff0c;干脆直接装一个最精简的mini版&#xff0c;试一下ifconfig&#xff0c;vim啥的全部commend not found。…

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

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

Windows下pip 离线包安装

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

mysql维护

1.通过 show engine innodb status命令来查看这些线程的状态&#xff1a; mysql>show engine innodb status\G *************************** 1. row ***************************Type: InnoDBName: #####################################################################…

VMware设置及linux静态ip设置

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

InnoDB内存优化

1&#xff0e;InnoDB缓存机制 InnoDB用一块内存区做IO缓存池&#xff0c;该缓存池不仅用来缓存InnoDB的索引块&#xff0c;而且也用来缓存InnoDB的数据块&#xff0c;这一点与MyISAM不同。 在内部&#xff0c;InnoDB缓存池逻辑上由 free list、flush list和LRU list组成。顾名…

问题 L: 超超的中等意思

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

改善带有 order by子句或group子句SQL的性能

如果通过 show global status 看到 sort_merge_passes 的值很大&#xff0c;可以考虑通过调整参数sort_buffer_size的值来增大排序缓存区&#xff0c;以改善带有 order by子句或group子句SQL的性能。 对于无法通过索引进行连接操作的查询&#xff0c;可以尝试通过增大&#xf…

springboot系列十五、springboot集成PageHelper

一、介绍 项目中经常会遇到分页&#xff0c;PageHelper为我们解决了这个问题。本质上实现了Mybatis的拦截器&#xff0c;作了分页处理。 二、配置PageHelper 1、引入依赖 pagehelper-spring-boot-starter对了pagehelper做了封装&#xff0c;减少 了配置文件&#xff0c;只需要在…

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…

第十一章 Helm-kubernetes的包管理器(上)

Helm - K8s的包管理器 11.1 Why Helm K8s能够很好的组织和编排容器&#xff0c;但它缺少一个更高层次的应用打包工具&#xff0c;Helm就是干这个的。 比如对于一个MySQL服务&#xff0c;K8s需要部署如下对象&#xff1a; &#xff08;1&#xff09;Service&#xff0c;让外界能…

C# - JSON详解

C# - JSON详解 转载于:https://www.cnblogs.com/macT/p/10214396.html

弗尤博客(十一)之搜索博文

在首页中右侧在textbox输入值&#xff0c;单击搜索Botton 跳转到 找一找 页面 其中textbox文本值传递过去并且显示在控件中&#xff0c;搜索结果也一起显示&#xff08;datalist&#xff09;转载于:https://www.cnblogs.com/frankybpx/p/10214409.html

史上最全的前端开发面试题(含详细答案)

本文由我收集网络 自己平时面试的 或者面试别人时的一些前端面试题&#xff0c;初学者阅后也要用心钻研其中的原理&#xff0c;重要知识需要系统学习、透彻学习&#xff0c;形成自己的知识链。万不可投机取巧&#xff0c;切勿临时抱佛脚只求面试侥幸混过关. 知识最重要的是学习…