AI实践哪家强?来 AICon, 解锁技术前沿,探寻产业新机! 了解详情
写点什么

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

评论

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

区块链与分布式存储构建数据要素市场基础设施

CECBC

区块链 分布式

架构师训练营 - 命题作业 - 第三周

徐时良

极客大学架构师训练营

Architecture Phase1 Week4:HomeWork

phylony-lu

极客大学架构师训练营

【知识分享】区块链常用术语

CECBC

区块链 货币 网络节点

BigDecimal是如何搞定精度缺失的

hasWhere

Appium之「元素定位和UiAutomator表达式」

清菡软件测试

CECBC区块链专委会副主任吴桐主讲光大证券法定数字货币讲座

CECBC

区块链 数字货币

如何开一场高效的会议?

boshi

高效工作 开会

第二节课后作业

happy

区块链--凌驾于政治之上的存在

CECBC

区块链 信息技术

小伙伴问我:如何搭建Maven私服?我连夜肝了这篇实战文章!!

冰河

maven 私服 仓库

VUE第一个项目怎么读懂

MySQL从删库到跑路

Java html5 Vue 大前端 vux

架构师训练营 Week4 - 课后作业

缓存 自动化 异步 集群 冗余

架构师训练营第四周学习总结

邓昀垚

极客大学架构师训练营

Serverless与传统Web框架的迁移

刘宇

Serverless

理想的程序员

极客思享

Web Storage API的介绍和使用

程序那些事

web tech web storage web storage api storage api

架构师训练营 - 学习笔记 - 第三周

徐时良

极客大学架构师训练营

金秋十月重磅技术文——网络编程大揭秘

Java架构师迁哥

编程 程序员

一个草根的日常杂碎(10月4日)

刘新吾

随笔杂谈 生活记录 社会百态

LeetCode题解:49. 字母异位词分组,数组计数+哈希表,JavaScript,详细注释

Lee Chen

大前端 LeetCode

架构师训练营第 1 期 - 第 3 周 - 学习总结

wgl

极客大学架构师训练营

小伙伴想学Jenkins自动构建发布项目,我:安排上了!!

冰河

项目管理 jenkins 灰度发布 自动构建 及时发布

架构师训练营第 1 期 - 第 3 周 - 作业

wgl

极客大学架构师训练营

spring-boot-route(五)整合Swagger生成接口文档

Java旅途

Java springboot swagger

区块链带来第四次技术革命 融入生产大幅提高企业收入

CECBC

区块链 数字资产 技术革命

架构师训练营第三周心得

CmHuang

阿里P8大牛爆肝的《Java核心技术总结》+《面试题总结》简直赞爆了

Java架构之路

Java 程序员 面试 编程语言 进阶

让人一夜暴富的区块链,新时代革命的开始

CECBC

区块链 时代革命

Serverless Frist 的渐进式应用开发框架 Malagu

木香丘

开源 Serverless 云原生 Malagu Framework

Architecture Phase1 Week4:Summarize

phylony-lu

极客大学架构师训练营

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