写点什么

Linux 系统安全(九):Tomcat 安全

  • 2019-08-25
  • 本文字数:1094 字

    阅读完需:约 4 分钟

Linux系统安全(九):Tomcat 安全

Tomcat 是 Java Servlet、JSP、Java 表达式语言和 Java WebSocket 技术的开源实现,被广泛使用在 Java 语言开发的大型网站系统中。我们可以从以下几个方面来保障 Tomcat 的安全。

保持版本更新

建议在部署时采用最新稳定版的 Tomcat,并在运维过程中追踪官方版本发布的情况,选择升级到最新稳定版。

删除默认应用

从官网下载了 Tomcat 安装文件后,在其 webapps 目录下默认有如下的应用:docs、examples、host-manager、manager、ROOT。删除这些默认应用,可以减少安全风险。

服务降权

在实践中,Tomcat 服务器一般部署在负载均衡设备或者 Nginx 之后,服务的监听端口应设置为 1024 以上(例如常见的 8080)。在这种情况下,笔者建议为 Tomcat 设置专用的启动用户,而并不是使用 root 这一超级权限用户,以限制在发生 Tomcat 入侵后黑客可以获得的权限避免更大的危害。而这也是最小权限原则的实践。例如,通过以下命令建立普通用户 tomcat:


# groupadd -g 2000 tomcat# useradd -g 2000 -u 2000 tomcat  
复制代码

管理端口保护

Tomcat 提供了通过 Socket 连接 8005 端口来执行关闭服务的能力,这在生产环境中是极为危险的。通过修改 server.xml 配置文件来禁用该管理端口:


<Server port="8005" shutdown="SHUTDOWN"> 
复制代码


修改为


<Server port="-1" shutdown="SHUTDOWN">
复制代码

AJP 连接端口保护

Tomcat 服务器通过 Connector 连接器组件与客户程序建立连接,Connector 组件负责接收客户的请求以及把 Tomcat 服务器的响应结果发送给客户。默认情况下,Tomcat 在 server.xml 中配置了两种连接器,一种使用 AJP,要和 apache 结合使用,一种使用 http。当使用 http 时,建议禁止 AJP 端口访问。禁用的方式是在 server.xml 中注释以下行:


<!--<Connector port="8329" protocol="AJP/1.3" redirectPort="8443" />-->
复制代码

关闭 WAR 包自动部署

默认 Tomcat 开启了对 WAR 包的热部署的。笔者建议关闭自动部署,以防止 WAR 被恶意替换后导致的网站挂马。关闭 WAR 包自动部署的方式在修改 server.xml 中的


   <Host name="localhost"  appBase="webapps" unpackWARs="true" autoDeploy="true">
复制代码


改成


<Host name="localhost"  appBase="webapps" unpackWARs="false" autoDeploy="false">
复制代码

自定义错误页面

通过自定义错误页面,可以防止在发生未处理的异常时导致的信息泄露。自定义错误页面的方式是,编辑 web.xml,在标签上添加以下内容:


<error-page><error-code>404</error-code><location>/404.html</location></error-page><error-page><error-code>500</error-code><location>/500.html</location></error-page>
复制代码


本文内容来自作者图书作品《Linux 系统安全:纵深防御、安全扫描与入侵检测》,点击购买


2019-08-25 09:007698

评论

发布
暂无评论
发现更多内容

架构设计之「入口统一」原则

凌晞

架构 软件设计原则

一份送给IT工程师们的礼物,观测云2022正式发布!

观测云

[Day30]-[二叉树]第二小的值

方勇(gopher)

LeetCode 数据结构和算法

千万级学生管理系统考试存储系统方案

踩着太阳看日出

架构训练营

倒计时0日!Apache DolphineScheduler4月 Meetup 大佬手把手教你大数据开发,离线调度

白鲸开源

2020,微服务降温了?

爱好编程进阶

Java 程序员 后端开发

分布式系统学习资料汇总

Geek_4zc1nt

分布式 分布式系统 资料 资料整理 公开课

Fedora 上如何安装 gitea

HoneyMoose

一个普通App变成Launcher的故事

Changing Lin

android Launcher

模块四作业(试卷存储方案)

Dean.Zhang

太卷了! 八股文、算法张口就来?2022版Java面试手册帮你轻松拿下

Java架构追梦

Java 程序员 后端开发

Java面试通关秘籍:笔记导图+面试文档+视频讲解

Java架构追梦

Java 程序员 后端开发

18 应用服务器集群的伸缩性设计

爱好编程进阶

Java 程序员 后端开发

渗透实战之内网渗透流程

网络安全学海

网络安全 信息安全 渗透测试 WEB安全 漏洞挖掘

Go 语言入门很简单:Go 计时器

宇宙之一粟

Go 语言 计时器 4月月更

Postman 如何删除一个工作空间

HoneyMoose

[Day31-01]-[二叉树]二叉树的直径

方勇(gopher)

LeetCode 数据结构和算法

[Day31-02]-[二叉树]二叉搜索树节点最小距离

方勇(gopher)

LeetCode 数据结构和算法

15-spring整合mybatis方式一

爱好编程进阶

Java 程序员 后端开发

企评家|为什么说我们需要企业成长性评价

企评家

元宇宙里开豪车

CECBC

架构实战营 第 6 期 模块四课后作业

火钳刘明

#架构实战营 「架构实战营」

元宇宙的本质特征是五大融合

CECBC

Java工程师面试题汇总,全会月薪至少3W

Java架构追梦

Java 程序员 后端开发

ffmpeg命令参数类型

Loken

【ELT.ZIP】OpenHarmony啃论文俱乐部——点燃主缓存压缩技术火花

ELT.ZIP

gpu OpenHarmony ELT.ZIP 主缓存

01-回顾多线程

爱好编程进阶

Java 程序员 后端开发

模块四:作业

本人法海

「架构实战营」

天下谁人不识君:当IPv6+成为千行百业的朋友

脑极体

未来计算图鉴:十年后的计算长什么模样?

脑极体

2020年最全Java面试汇总整理(含答案)

爱好编程进阶

Java 程序员 后端开发

Linux系统安全(九):Tomcat 安全_软件工程_胥峰_InfoQ精选文章