50万奖金+官方证书,深圳国际金融科技大赛正式启动,点击报名 了解详情
写点什么

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

评论

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

带你熟悉NLP预训练模型:BERT

华为云开发者联盟

人工智能 华为云 语言模型 华为云开发者联盟

每日一题:LeetCode-468. 验证IP地址

Geek_4z9ami

面试 算法 LeetCode 字符串 IP地址

集力向新 共博未来 | 博科资讯与东集技术达成战略合作

极客天地

孙文龙理事长参加第二十一届中国国际软件合作洽谈会主题大会并致辞

开放原子开源基金会

开放原子校源行(北理工站)成功举办,多举措赋能开源人才建设,助力开源生态繁荣发展

开放原子开源基金会

Kmesh v0.1.0 版本发布

华为云开发者联盟

开发 华为云 华为云开发者联盟 Kmesh

带你手把手玩转【RAG】应用!

AI大咚咚

AI AI应用 rag AI原生应用

这些定律,在职场越早知道越好

伤感汤姆布利柏

基于 Vue3 + Springboot 构建的前端低代码框架

互联网工科生

Vue 低代码 spring-boot JNPF

解锁加密货币增长的秘密:通过 Token Explorer 解读市场信号

Footprint Analytics

区块链 Token 代币

团队如何限制合适的在制品(WIP)数量

敏捷开发

项目管理 敏捷开发 看板方法 禅道项目管理软件 在制品限制

百度营销共拓开放平台全新上线,全链路共建AIGC营销新图景

科技热闻

BLCR:区块链游戏革新,激发无尽策略乐趣!

Footprint Analytics

区块链 区块链游戏 web3游戏 Web3 游戏 BLCR

云小课|HSS对近期Cactus勒索病毒的分析

华为云开发者联盟

安全 华为云 华为云开发者联盟 华为云云小课

自动弹性,QPS线性提升|一文读懂云原生数仓AnalyticDB弹性技术原理

阿里云瑶池数据库

数据库 阿里云 数据结构 云原生

纽约时报:揭秘美国比特币矿场背后的中国主人

TechubNews

打破这四点,别再说敏捷无法落地了

敏捷开发

项目管理 Scrum 敏捷开发 敏捷团队 敏捷落地

美国现货比特币 ETF 在 3 天内突破 100 亿美元:这将如何影响加密市场

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

开发第一个Flutter App需要注意什么

FN0

flutter

​MES管理系统有哪些强大的功能?

万界星空科技

生产管理系统 mes 云mes 万界星空科技 智能制造业

DAPP节点矿池挖矿系统开发(源码搭建)

l8l259l3365

Agent应用如何撰写角色指令 ——【Agent】角色指令设计攻略

AI大咚咚

AI agent AI Agent AI原生应用 Agent构建

IoTeX 研究员:我对 DePIN 赛道发展的十项预测

TechubNews

#Web3 DePIN

交易员资管平台

区块链技术

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