在CentOS系统中部署Tomcat服务时,安全防护是不可忽视的关键环节。本文将详细介绍从运行环境到运维坚控的全方位加固方案。

一 基础运行环境与权限
- 推荐使用JDK 11/17等长期支持版本,通过系统包管理器安装后需执行java -version验证,杜绝来源不明的JDK或Tomcat安装包。
- 建立专用系统账户运行Tomcat服务,例如执行useradd -m -s /sbin/nologin tomcat_user创建账户,严禁直接使用root权限启动。
- 严格控制目录访问权限:建议安装至/srv/tomcat目录;目录权限设为750,文件权限设为640;关键脚本如bin/*.sh应设置为700;webapps目录权限建议750。
- 采用Systemd服务管理并实施权限降级,关键配置包括:User=tomcat_user、Group=tomcat_group、UMask=0007、Restart=always;JAVA_OPTS参数建议配置堆内存与GC策略(如-Xms512m -Xmx1024m -XX:+UseG1GC,需根据实际硬件调整)。
- 务必从Apache官网获取二进制包,下载后使用sha512sum校验文件完整性,防止使用被篡改的安装包。
二 网络与访问控制
- 最小化网络暴露面:仅开放必要服务端口(如8080/8443/8005);生产环境应当全站启用HTTPS(443端口),HTTP请求强制跳转。
- 配置firewalld示例:执行firewall-cmd --permanent --zone=public --add-service=http --add-service=https && firewall-cmd --reload。
- 限制单IP并发连接数防范DoS攻击:通过firewall-cmd --permanent --zone=public --add-rich-rule=‘rule family="ipv4" source address="1.2.3.4" reject’实现;也可按端口限制并发连接数。
- 建议将Tomcat部署在内网环境,仅允许Nginx或负载均衡设备访问。具体实现方式:修改Tomcat Connector配置address="127.0.0.1"仅本地;或通过firewalld仅放行代哩服务務器IP段。
三 应用与接口安全
- 加强管理接口防护:生产环境建议移除manager/host-manager应用;如必须保留,需在conf/tomcat-users.xml配置高强度密码与最小权限,并通过RemoteAddrValve限制访问IP。
- 禁用热部署功能降低安全风险:在Host配置中设置unpackWARs="false"、autoDeploy="false"、reloadable="false"。
- 隐藏服务版本信息:在server.xml的Connector配置中添加server="APP Srv1.0"参数;必要时修改lib/catalina.jar中的版本信息文件。
- 修改默认关闭端口与指令:调整server.xml中Server port(默认8005)与shutdown指令,防止服务被非法关闭。
- 实施应用层安全控制:在WEB-INF/web.xml配置与认证方式,通过tomcat-users.xml分配角色权限。
四 加密传输与证书管理
- 全站启用TLS加密:使用Let's Encrypt获取证书,转换为PKCS12格式后在server.xml配置8443端口的SSL连接器。
- 建立证书自动更新机制:结合certbot与系统定时任务,确保证书到期前自动续期并重载Tomcat服务。
五 抗DoS与坚控运维
- 优化连接线程配置:在server.xml中合理设置maxThreads、acceptCount等参数,根据业务压力测试调整最佳值。
- 部署多层级防御:配置WAF过滤恶意请求,启用CDN进行流量清洗,通过负载均衡分散压力,建立恶意IP黑名单机制。
- 完善坚控日志体系:启用访问日志与JMX坚控,配置logrotate定期轮转日志文件,建立基于Prometheus的异常告警系统。
通过以上五个维度的系统化加固,可显著提升CentOS环境下Tomcat服务的安全防护能力,为业务系统提供可靠保障。