温馨提示×

centos下tomcat如何防止攻击

小樊
38
2026-01-10 07:38:02
栏目: 网络安全

CentOS 下 Tomcat 的安全加固与防攻击清单


一 基础运行环境与权限

  • 使用 JDK 11/17(LTS),通过包管理器安装并验证:java -version。避免使用未知来源的 JDK/Tomcat。
  • 创建专用系统用户运行 Tomcat(禁止 root):例如 useradd -m -s /sbin/nologin tomcat_user,后续以该用户启动服务。
  • 目录与权限最小化:建议安装在 /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’;或按端口限制并发:firewall-cmd --permanent --zone=public --add-rich-rule=‘rule family=“ipv4” source address=“1.2.3.4” port port=“8080” protocol=“tcp” accept’ 后再对其它来源 drop/reject(按实际网络拓扑细化)。
  • 架构侧防护:将 Tomcat 置于内网,仅允许 Nginx/负载均衡 访问。做法一:Tomcat Connector 改为 address=“127.0.0.1” 仅监听本机;做法二:firewalld 仅放行代理网段/IP 到 8080。Nginx 侧配置 proxy_pass 与 X-Real-IP/X-Forwarded-For 等头;Tomcat 侧可用 RemoteAddrValve 仅允许代理 IP 访问管理/业务路径。

三 应用与接口安全

  • 管理接口保护:生产环境建议删除或禁用 manager/host-manager;如确需保留,务必在 conf/tomcat-users.xml 使用强口令与最小角色,并在 webapps/manager/META-INF/context.xml 用 RemoteAddrValve 限制仅内网/跳板机 IP 访问。
  • 关闭或收紧热部署以降低被植入风险:Host 配置 unpackWARs=“false”、autoDeploy=“false”、reloadable=“false”。
  • 隐藏版本信息:在 server.xml Connector 增加 server=“APP Srv1.0” 隐藏 Server 头;必要时修改 lib/catalina.jarorg/apache/catalina/util/ServerInfo.properties(server.info/server.number)以去除或伪装版本号。
  • 关闭或更改关闭端口与指令:修改 server.xml 的 Server port(默认 8005)与 shutdown 指令,避免被轻易关停。
  • 应用层认证与授权:在 WEB-INF/web.xml 配置 + (BASIC/FORM),在 tomcat-users.xml 分配角色;对管理路径实施强认证与最小权限。

四 加密传输与证书管理

  • 全站启用 TLS:使用 Let’s Encrypt 获取证书,转换为 PKCS12 并在 server.xml 配置 指定 keystoreFile/type/password。
  • 证书更新自动化:结合 certbot 与系统定时任务,确保证书到期前自动续期并热重载 Tomcat(或平滑重启)。

五 抗 DoS 与监控运维

  • 连接与线程控制:在 server.xml 设置 Connector 的 maxThreads(如 150/200)、acceptCount(如 50/100)、合理 connectionTimeout,防止线程/连接耗尽;结合业务压测调优。
  • 纵深防御:部署 WAF(如 ModSecurity) 过滤恶意请求;使用 CDN 做流量清洗与缓存;通过 负载均衡 分摊压力;对已知恶意 IP 实施黑名单。
  • 监控与日志:启用访问日志与 JMX 监控(生产环境务必开启鉴权与加密);配置 logrotate 轮转 catalina.out 等日志(如 daily、rotate 7、compress、size 50M);定期审计异常流量与错误率,结合 Prometheus/Grafana 做容量与异常告警。

0