温馨提示×

centos下tomcat如何进行安全管理

小樊
41
2025-11-21 22:05:11
栏目: 智能运维

CentOS下Tomcat安全管理清单

一 运行账户与最小权限

  • 创建专用系统用户(禁止登录、无 sudo):sudo useradd -s /bin/false -M -g tomcat tomcat
  • 调整目录属主属组:sudo chown -R tomcat:tomcat /opt/tomcat
  • 以 systemd 托管并降权运行,在 /etc/systemd/system/tomcat.service[Service] 中设置:
    • User=tomcatGroup=tomcat
    • ExecStart=/opt/tomcat/bin/startup.shExecStop=/opt/tomcat/bin/shutdown.sh
    • Restart=on-failure
  • 重新加载并启用:sudo systemctl daemon-reload && sudo 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.xmlHost 中设置 autoDeploy="false"unpackWARs="false"
  • 禁用 AJP(如无需与 Apache/mod_jk 联动):在 server.xml 中将 AJP Connector 端口设为 -1 或注释掉。
  • 隐藏版本信息:在 server.xmlConnector 上设置 server="YourApp/1.0";必要时进一步处理 ServerInfo.properties 以彻底隐藏版本。
  • 禁止目录浏览:在 conf/web.xmldefault servlet 中设置 <init-param><param-name>listings</param-name><param-value>false</param-value></init-param>

三 网络与端口加固

  • 防火墙仅开放必要端口(示例):sudo firewall-cmd --permanent --zone=public --add-port=8080/tcp && sudo firewall-cmd --reload;生产建议仅开放 443/8443,将 8080 限制为内网访问或关闭。
  • 管理端访问控制:如需保留 manager/host-manager,编辑其 META-INF/context.xml,使用 RemoteAddrValve 仅允许内网或跳板机网段,例如:
    • <Valve className="org.apache.catalina.valves.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):
    <Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol"
               maxThreads="150" SSLEnabled="true">
      <SSLHostConfig>
        <Certificate certificateKeystoreFile="/opt/tomcat/conf/yourdomain.pfx"
                     certificateKeystorePassword="YourPassword"
                     certificateKeystoreType="PKCS12" />
      </SSLHostConfig>
    </Connector>
    
    如需同时保留 HTTP,将 8080redirectPort 指向 443,或在应用层做跳转。
  • 可选:HTTP 自动跳转 HTTPS(在应用的 web.xml 最底部加入标准约束与 <security-constraint> 配置,或使用前置反向代理/负载均衡做 80→443 跳转)。

五 认证授权与持续运维

  • 用户与角色:在 conf/tomcat-users.xml 中仅保留必要角色(如 manager-guiadmin-gui),设置强密码并限制来源 IP;生产环境建议禁用或删除管理应用,改用企业 SSO/LDAP 集中认证。
  • 外部认证示例(JNDI Realm,置于 conf/context.xml 或应用 context.xml):
    <Realm className="org.apache.catalina.realm.JNDIRealm"
           connectionURL="ldap://ldap.example.com:389"
           userBase="ou=users,dc=example,dc=com"
           userSearch="(uid={0})"
           userSubtree="true"
           roleBase="ou=roles,dc=example,dc=com"
           roleName="cn"/>
    
  • 会话与 Cookie:在应用或全局 Context 中启用 sessionCookieHttpOnly="true"sessionCookieSecure="true",为关键路径设置会话超时与并发控制。
  • 日志与审计:定期审计 logs/catalina.outlocalhost_access_log.*,对异常 4xx/5xx、管理端访问、频繁失败登录进行告警;开启 GC/内存与线程监控。
  • 补丁与基线:保持 CentOSJDK/Tomcat 及时更新;按安全基线核查(禁用调试端口、限制类加载、清理临时文件等),并定期做配置与权限复核。

0