写点什么

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

评论

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

在IntelliJ IDEA中,开发一个摸鱼看书插件

小傅哥

Java 小傅哥 IDEA idea插件

爬虫120例之第17例,用Python面向对象的思路,采集各种精彩句子

梦想橡皮擦

11月日更

构筑“数据连接器”,腾讯云大数据推出“开源开放”战略

腾讯云大数据

大数据

如何成为一名合格的CRUD工程师?

博文视点Broadview

写入、读取均优于InfluxDB,TDengine在智慧水务系统中的应用

TDengine

数据库 tdengine 后端

ODC V3.2.0 新版本发布 | 着重用户体验,挑战权限管控业务场景

OceanBase 数据库

数据库 开发者 稳定性 应用场景 新功能

这场蝴蝶效应,从“丝滑”的双11开始

脑极体

Windoes下安装配置flutter环境

坚果

flutter windows 安装 11月日更

dart系列之:dart语言中的函数

程序那些事

flutter 后端 dart 程序那些事 11月日更

CSS页面设计稿构思与实现(一)

Augus

CSS 11月日更

你以为委派模式很神秘,其实你每天都在用

Tom弹架构

Java 架构 设计模式

正向代理和反向代理

liuzhen007

11月日更

Vue进阶(幺柒零):应用 rem/em 实现字体自适应

No Silver Bullet

Vue 自适应 11月日更

一文了解如何使用移动应用安全组件Soot和Flowdroid

华为云开发者联盟

移动应用 安全 Soot Flowdroid APK

深入剖析 RocketMQ 源码 - 消息存储模块

vivo互联网技术

RocketMQ 微服务 中间件 消息队列

Flink 实践教程-入门(4):读取 MySQL 数据写入到 ES

腾讯云大数据

流计算 Oceanus

TDSQL | 在整个技术解决方案中HTAP对应的混合交易以及分析系统应该如何实现?

腾讯云数据库

tdsql 国产数据库

MapReduce Service更换集群外部时钟源,仅需10步

华为云开发者联盟

大数据 FusionInsight ntp 时钟同步 MapReduce Service

Sentinel-Go 源码系列(二)|初始化流程和责任链设计模式

捉虫大师

sentinel Go 语言 sentinel-go

Flink 的状态管理实践

五分钟学大数据

flink 11月日更

【Flutter 专题】14 图解 ListView 不同样式 item 及 Widget 显隐性

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 11月日更

Hive SQL优化思路

大数据技术指南

11月日更

解放重复劳动丨华为云IoT API Explorer对接小程序实现系统化应用

华为云开发者联盟

小程序 App IoT 华为云 API Explorer

为何我中断执行的线程不起作用,Why

华为云开发者联盟

Java 线程 对象 中断

如何快速应对井喷下的OCR需求?

鲸品堂

OCR

Flink 实践教程-入门(5):写入 ClickHouse

腾讯云大数据

流计算 Oceanus

腾讯云发布容器安全白皮书

腾讯安全云鼎实验室

容器 云安全 白皮书

架构训练营毕业总结

SAKIN

【LeetCode】键盘行Java题解

Albert

算法 LeetCode 11月日更

OBCE首位认证 实力与颜值并存 | 90后技术宅郑皓嘉的通关之路

OceanBase 数据库

分布式数据库 认证 oceanbase OBCE

模块9 毕设

SAKIN

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