在 CentOS 环境下部署 Tomcat 时,安全防护是极易被忽视却至关重要的环节。很多人仅仅追求让 Tomcat 快速跑起来,结果在安全层面留下大量隐患。实际上,要想真正守住这台服务器,有几个关键步骤必须严格执行。
先从最容易忽视的地方说起——账号权限
创建非 root 的专用系统用户来启动 Tomcat,这是最基本的安全防线。该用户仅被授予必要目录的访问权限,操作路径必须严格收窄。Tomcat 自带的 tomcat-users.xml 也需要主动清理——删除默认用户,只保留具备最小权限的角色配置。千万别小看这一点,很多管理员恰恰因为图省事没有删除默认账户,给攻击者留下了可乘之机。
版本信息不能明着暴露
Tomcat 默认的版本标识过于明显,攻击者一眼就能判断你使用的具体版本,从而快速锁定已知漏洞。通过修改 server.xml 或 ServerInfo.properties,将默认版本标识替换为自定义内容。这项操作虽然简单,却能有效抵御大量基于“扫版本号”的批量扫描攻击。
不用的服务和端口尽量关掉
自动部署功能在大多数线上生产环境中并不需要。建议将 unpackWARs 和 autoDeploy 都设置为 false。同时,将默认的 8080 端口更换为非标准端口,并配合防火墙只允许特定 IP 地址访问。端口配置这件事千万别嫌麻烦——你这边多添加一条规则,攻击者那边就要多耗费大量精力。
通信加密是底线
这一点无需过多解释,如今仍使用 HTTP 明文传输基本上等于裸奔。配置 SSL/TLS 证书并启用 HTTPS,是保护数据传输安全的最低要求。即使是内部系统,也不建议跳过这一加密步骤。
目录和文件安全要“做减法”
Tomcat 安装后,webapps 目录下自带的默认应用——例如 docs、manager 等——应果断删除,一个不留。目录列表功能也必须关闭,在 web.xml 中将 listings 设为 false。说实话,很多安全问题的根源正是“多一事不如少一事”的反面教材——留下的东西越多,攻击面就越大。
日志和监控不能省
开启详细的访问日志,并定期检查,异常请求往往会留下蛛丝马迹。在防火墙层面,选择 firewalld 或 iptables 其中一种进行配置,收紧端口访问规则,只放行可信 IP。不要总想着出了事再去排查,前置防御永远比事后补救要划算得多。
系统层面的加固也得跟上
Tomcat 本身及其依赖组件需要定期更新,一旦发现已知的安全漏洞就应立即修复。此外,安全管理器也是重要一环——在 catalina.sh 中加入 -Dja va.security.manager 参数,可以限制应用权限。虽然配置起来需要多花些心思,但这项措施能有效防止应用越权操作。
完成以上所有配置后,记得重启 Tomcat,改动才会生效。另外,如果有多台服务器需要统一配置,建议借助 Ansible 等自动化工具进行批量部署。当然,安全策略做得再好,定期开展一次渗透测试仍然十分必要——很多漏洞往往是“以为自己堵住了,其实还有别的路”。
