【AICon】AI 基础设施、LLM运维、大模型训练与推理,一场会议,全方位涵盖! >>> 了解详情
写点什么

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:007058

评论

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

聪明人的训练(十六)

Changing Lin

4月日更

百度联合清华,全球首个十亿像素数据集来了!

百度大脑

人工智能 百度

Google Analytics

曦语

数据分析

11 个非常实用的 Python 和 Shell 拿来就用脚本实例!

JackTian

Python 程序员 Shell linux运维 脚本语言

量化合约交易机器人系统开发|量化合约交易机器人APP软件开发

系统开发

拍乐云入选 2021 爱分析·产业数字化厂商全景报告

拍乐云Pano

RTC

使用transform制作书本翻页效果

空城机

JavaScript 大前端 4月日更 书本翻页

MySQL性能监控与调优

Sakura

4月日更

我们真的可以使世界成为无密码的地方吗?

龙归科技

网络 安全性

合约量化交易机器人系统开发|合约量化交易机器人APP软件开发

如何利用ipad随时随地开发代码

程序员石磊

ipad 编程 远程

微擎的日志文件保存在哪里?如何查看。

微擎应用商城

5分钟教你学会GaussDB数据分布策略设计

华为云开发者联盟

数据库 分布式数据库 GaussDB GaussDB(for openGauss) 数据分布

这份阿里P8大佬手写的 “Java核心面试精选” 疯传阿里内网

码农之家

Java 编程 程序员 互联网 面试

深入浅出带你掌握线程、多线程和线程池

华为云开发者联盟

Java 线程 多线程 线程池 操作系统

13年Java开发经验精华总结!29大核心知识模块,带你直达架构师!

Java架构追梦

Java 阿里巴巴 架构 全栈知识点

使用Python映射,过滤和缩减函数:所有您需要知道的

华为云开发者联盟

Python 函数 映射 内置函数

web简易视频聊天室+媒体流插入

anyRTC开发者

大前端 音视频 WebRTC RTC

Linux df 命令

一个大红包

linux命令 4月日更

量化合约机器人APP开发|量化合约机器人软件系统开发

系统开发

十大经典系统架构设计面试题

程序员石磊

架构 面试 架构设计

【LeetCode】删除排序链表中的重复元素Java题解

Albert

算法 LeetCode 4月日更

征服耶鲁教授的算法大神程序媛,是如何践行“以人为本”开发智慧社区大脑的?

华为云开发者联盟

算法 音视频 智慧社区 华为智慧园区数字平台 数字平台

合约量化机器人系统开发|合约量化机器人软件APP开发

系统开发

vue2的$refs在vue3组合式API中的替代方法

devpoint

Vue3 $refs vue2 this.$refs

HTTPS双向认证

上海派拉基础研发

https HTTP ssl SSL 连接

Rust从0到1-枚举-match控制流

rust 枚举 match

1分钟get什么是训练数据

澳鹏Appen

人工智能 机器学习 大数据 数据集

很坑的Could not transfer artifact报错

01Running

maven Mac IDEA

与同事组队,用 3s 把工作节点打通,建立信赖与协作关系。

叶小鍵

Kafka源码阅读笔记(1)

InfoQ_Springup

kafka

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