CentOS Tomcat安全设置有哪些
小樊
32
2025-12-27 07:36:24
CentOS 下 Tomcat 安全设置清单
一 运行账户与最小权限
- 创建专用系统用户(禁止登录、无 sudo),并将安装目录属主设为该用户,遵循最小权限原则。示例:sudo useradd -r -M -s /sbin/nologin -g tomcat tomcat;sudo chown -R tomcat:tomcat /opt/tomcat。
- 通过 systemd 托管并降权运行,在 /etc/systemd/system/tomcat.service 的 [Service] 中明确:User=tomcat、Group=tomcat;必要时设置 UMask=0007 限制新文件权限;变更后执行 systemctl daemon-reload && systemctl enable --now tomcat。
- 若启用 SELinux,为目录设置合适上下文并持久化:sudo chcon -R -t httpd_sys_content_t /opt/tomcat;日志目录可设为 httpd_sys_rw_content_t;按需调整布尔值(如 tomcat_execmem)。
二 最小化攻击面
- 删除示例与默认应用:清理 webapps 下的 docs、examples、host-manager、manager、ROOT,仅保留业务 WAR。
- 关闭热部署与自动解包:在 server.xml 的 Host 中设置 autoDeploy=“false”、unpackWARs=“false”。
- 禁用 AJP(如无需与 Apache/mod_jk 联动):在 server.xml 中将 AJP Connector 端口设为 -1 或注释掉。
- 隐藏版本信息:在 server.xml 的 Connector 上设置 server=“YourApp/1.0”。
- 禁止目录浏览:在 conf/web.xml 的 default servlet 中设置 listings=“false”。
三 网络与端口加固
- 防火墙仅开放必要端口:生产建议仅开放 443/8443,将 8080 限制为内网访问或关闭。示例:sudo firewall-cmd --permanent --zone=public --add-port=8080/tcp && sudo firewall-cmd --reload;或直接放行 http/https 服务。
- 管理端访问控制:如需保留 manager/host-manager,编辑其 META-INF/context.xml,使用 RemoteAddrValve 仅允许内网或跳板机网段,例如 allow=“127.\d+.\d+.\d+|::1|192.168.\d+.\d+|10.\d+.\d+.\d+”。
- 禁用危险 HTTP 方法:在应用的 WEB-INF/web.xml 增加安全约束,限制 PUT、DELETE、TRACE、OPTIONS 等方法对外暴露。
四 加密通信与证书部署
- 证书准备:从可信 CA 获取证书;Tomcat 常用 PKCS12(PFX) 或 JKS。PFX 可直接使用;如为 JKS,可用 keytool -importkeystore 从 PFX 转换。
- 配置 HTTPS Connector(示例,使用 NIO 与 PKCS12):
- 如需同时保留 HTTP,将 8080 的 redirectPort 指向 443,或在应用层/前置反向代理做 80→443 跳转。
五 认证授权与持续运维
- 用户与角色:在 conf/tomcat-users.xml 中仅保留必要角色(如 manager-gui、admin-gui),设置强密码并限制来源 IP;生产环境建议禁用或删除管理应用,改用企业 SSO/LDAP 集中认证。
- 外部认证示例(JNDI Realm,置于 conf/context.xml 或应用 context.xml):
- 会话与 Cookie:在应用或全局 Context 中启用 sessionCookieHttpOnly=“true”、sessionCookieSecure=“true”,为关键路径设置会话超时与并发控制。
- 日志与审计:定期审计 logs/catalina.out、localhost_access_log.*,对异常 4xx/5xx、管理端访问、频繁失败登录进行告警;开启 GC/内存与线程监控。
- 补丁与基线:保持 CentOS、JDK、Tomcat 及时更新;按安全基线核查(禁用调试端口、限制类加载、清理临时文件等),并定期做配置与权限复核。