温馨提示×

centos下tomcat安全配置有哪些

小樊
33
2025-11-25 21:23:15
栏目: 智能运维

CentOS下Tomcat安全配置清单

一 运行账户与最小权限

  • 创建专用系统用户(示例:tomcat),禁止以root直接运行:
    • 创建用户:useradd -m -d /opt/tomcat -s /sbin/nologin tomcat
    • 变更目录属主:chown -R tomcat:tomcat /opt/tomcat
    • 如服务由 systemd 托管,在单元文件或环境文件中设置运行用户:User=tomcatGroup=tomcat
  • 文件与目录权限最小化:
    • 仅对 Tomcat 运行账户开放 logsworktemp 等必要目录写权限;对 confbinlib 设为只读。
    • 分离应用与发布目录:例如应用目录属主为 appuser:appgroup,Tomcat 运行账户仅有读/执行权限,降低 WebShell 横向写入风险。

二 网络与端口加固

  • 防火墙仅放行必要来源与端口(示例为 firewalld):
    • 放行业务端口:firewall-cmd --zone=public --add-port=8080/tcp --permanent
    • 仅内网管理访问:firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port port="8080" protocol="tcp" accept' --permanent
    • 重载规则:firewall-cmd --reload
  • 管理端口与关闭指令加固:
    • 修改 server.xmlServer 的关闭端口与指令(默认端口 8005,指令 SHUTDOWN),例如改为 8006 与复杂口令,或限制仅本地监听。
    • 生产环境建议关闭或限制访问 8005 管理端口,避免被滥用导致实例被关闭。

三 启用加密传输与访问控制

  • 配置 SSL/TLS(示例为 8443 连接器,使用系统证书):
    • 生成自签名证书(示例):
      • openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout /etc/pki/tls/private/tomcat.key -out /etc/pki/tls/certs/tomcat.crt
    • server.xml 配置连接器(示例):
      <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
                 maxThreads="150" SSLEnabled="true">
        <SSLHostConfig>
          <Certificate certificateKeystoreFile="/etc/pki/tls/certs/tomcat.crt"
                       type="RSA" certificateKeystorePassword="your_password"/>
        </SSLHostConfig>
      </Connector>
      
    • 强制 HTTPS:将 8080 的 Connector 仅做重定向到 8443,或在反向代理层终止 TLS。
  • 管理界面访问控制:
    • 通过 RemoteAddrValve 限制来源 IP(示例仅本地):
      <Context>
        <Valve className="org.apache.catalina.valves.RemoteAddrValve"
               allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1"/>
      </Context>
      
    • 如需远程管理,建议放在内网或在前置 Nginx/ApacheBasic 认证与 IP 白名单,再反向代理到 Tomcat。
  • 应用层安全约束(在应用的 WEB-INF/web.xml):
    <security-constraint>
      <web-resource-collection>
        <web-resource-name>Protected Area</web-resource-name>
        <url-pattern>/admin/*</url-pattern>
      </web-resource-collection>
      <auth-constraint>
        <role-name>admin</role-name>
      </auth-constraint>
    </security-constraint>
    <login-config>
      <auth-method>BASIC</auth-method>
      <realm-name>Protected Area</realm-name>
    </login-config>
    <security-role>
      <role-name>admin</role-name>
    </security-role>
    
    • 角色与用户通过 conf/tomcat-users.xml 配置,遵循最小权限原则,禁用默认弱口令。

四 服务与部署安全

  • 禁用或移除管理应用:
    • 生产环境建议删除 webapps/managerwebapps/host-manager,或在 conf/Catalina/localhost/ 移除对应 context.xml,避免暴露管理面。
  • 关闭热部署与自动加载:
    • server.xmlHost 元素中设置:unpackWARs="false" autoDeploy="false" reloadable="false",降低被植入 WebShell 的风险。
  • 隐藏版本信息:
    • server.xmlConnector 添加 server="APP Srv 1.0" 以隐藏 Server 头。
    • 修改 lib/org/apache/catalina/util/ServerInfo.properties,自定义 server.infoserver.number,避免泄露 Tomcat 版本与构建信息。
  • 目录与部署隔离:
    • 建议将应用发布目录与 Tomcat 安装目录分离,应用目录由独立系统用户拥有,Tomcat 仅具读取权限,减少被篡改的可能性。

五 日志监控与持续加固

  • 日志与审计:
    • 启用并集中采集 catalina.outlocalhost_access_log 等日志;配置 logrotate 按日切割并保留足够历史。
    • 对管理操作、部署行为、异常堆栈进行关键字告警(如 403/500、频繁失败登录)。
  • 运行环境安全:
    • 定期更新 TomcatJDK 安全补丁;使用工具(如 FindSecBugs)进行代码安全扫描,修复 SQL 注入XSS 等常见漏洞。
  • 变更与回滚:
    • 管理面与配置文件变更纳入版本控制;变更前备份 conf/ 与关键应用目录,支持快速回滚。

0