Tomcat 安全加固实战指南
在生产环境中,Tomcat 的默认配置往往存在诸多安全隐患。作为运维或开发人员,我们需要从端口、权限、信息泄露及访问控制等多个维度进行加固,构建纵深防御体系。
1. 端口暴露面收敛
关闭或修改管理端口 8005 端口是 TCP 的管理端口,用于接收关闭指令。默认端口容易被扫描到,建议修改为不易猜测的高位端口(大于 1024)。
<Server port="8527" shutdown="SHUTDOWN">
AJP 协议保护 8009 端口用于 AJP 协议连接,若未受控可能引发远程代码执行漏洞。优化策略包括修改默认端口并结合防火墙限制访问来源。
<Connector port="8528" protocol="AJP/1.3" redirectPort="8443" secretRequired="true" />
注意:生产环境务必设置
secret属性,防止未授权访问。
2. 管理端与权限控制
清理默认应用与用户
默认安装会包含示例应用和测试账户,应予以移除。删除 conf/tomcat-users.xml 后重启,Tomcat 会生成空配置文件,需手动添加必要的管理员账号并设置强密码。
同时,清理 webapps 目录下所有非必要的目录和文件,减少攻击面。
最小化启动权限 Tomcat 绝不应以 root 用户启动。请创建专用普通用户运行服务,并严格限制该用户对系统目录的读写权限。一旦服务被攻破,可避免黑客直接获取服务器最高权限。
<!-- server.xml 中 Context 配置示例 -->
<Context path="" docBase="/usr/local/tomcat_webapps" debug="0" reloadable="false" crossContext="false"/>
3. 信息泄露防护
禁用目录列表功能
在 conf/web.xml 中,DefaultServlet 的 listings 参数默认为 true,这会导致目录结构暴露。必须将其设置为 false。

