温馨提示×

怎样在CentOS上安全配置Tomcat

小樊
50
2025-10-21 22:45:16
栏目: 智能运维

一、初始化配置:消除默认风险

  • 删除默认Web应用:首次安装后,执行rm -rf /opt/tomcat/webapps/*清除webapps目录下的所有默认应用(如ROOT、docs、examples),避免恶意代码通过默认路径部署。
  • 清理默认用户:注释或删除conf/tomcat-users.xml中的所有<user><role>配置(如manager-guiadmin-gui角色),防止未授权访问管理界面。
  • 隐藏版本信息:修改conf/server.xml中的<Connector>标签,添加server="CustomServer/1.0"属性(如<Connector port="8080" protocol="HTTP/1.1" server="MyAppServer/1.0">),避免泄露Tomcat版本,降低针对性攻击风险。

二、用户与端口管理:降低攻击面

  • 使用非root用户启动:创建专用用户(如tomcat)并赋予权限:useradd -r -m -d /opt/tomcat -s /sbin/nologin tomcat,然后修改Tomcat目录所有权:chown -R tomcat:tomcat /opt/tomcat,最后通过sudo -u tomcat ./startup.sh启动,避免以root权限运行。
  • 配置防火墙规则:使用firewalld限制访问,仅允许必要端口(如8080、8443):
    sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent # HTTP sudo firewall-cmd --zone=public --add-port=8443/tcp --permanent # HTTPS sudo firewall-cmd --reload 
    如需更严格限制,可使用iptables仅允许可信IP访问:
    sudo iptables -A INPUT -p tcp --dport 8080 -s 192.168.1.0/24 -j ACCEPT sudo iptables -A INPUT -p tcp --dport 8080 -j DROP 

三、应用程序安全:防范恶意部署

  • 关闭自动部署:修改server.xml中的<Host>标签,设置autoDeploy="false"unpackWARs="false",防止恶意WAR文件自动解压和部署:
    <Host name="localhost" appBase="webapps" unpackWARs="false" autoDeploy="false"> 
  • 移除不必要的组件:删除webapps目录下的docsexampleshost-managermanager等默认应用(可通过rm -rf /opt/tomcat/webapps/{docs,examples,host-manager,manager}命令),减少潜在攻击入口。

四、SSL/TLS配置:加密数据传输

  • 生成SSL证书:使用OpenSSL生成自签名证书(生产环境建议使用CA证书):
    openssl req -newkey rsa:2048 -nodes -keyout /etc/pki/tls/private/tomcat.key -x509 -days 365 -out /etc/pki/tls/certs/tomcat.crt 
  • 配置HTTPS连接器:修改server.xml,添加以下<Connector>(替换证书路径和密码):
    <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" SSLEnabled="true" scheme="https" secure="true" keystoreFile="/etc/pki/tls/certs/tomcat.crt" keystorePass="your_password" clientAuth="false" sslProtocol="TLS"/> 
    此配置启用HTTPS,强制数据加密传输。

五、会话安全:防范会话劫持

  • 修改JSESSIONID属性:在context.xml(全局)或应用级META-INF/context.xml中,添加以下配置:
    <Context sessionCookieHttpOnly="true" sessionCookieSecure="true" sessionCookiePath="/yourapp"> 
    HttpOnly防止XSS攻击窃取Cookie,Secure确保Cookie仅通过HTTPS传输。

六、权限与目录管理:限制非法访问

  • 设置正确目录权限:确保Tomcat目录权限合理,避免未授权修改:
    chown -R tomcat:tomcat /opt/tomcat # 所有文件属主为tomcat chmod -R 755 /opt/tomcat/bin/*.sh # 限制脚本执行权限 chmod -R 750 /opt/tomcat/webapps # 限制Web应用目录访问 
  • 禁用目录列表:修改conf/web.xml,找到<servlet>标签(名称为default),添加listings="false"
    <servlet> <servlet-name>default</servlet-name> <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class> <init-param> <param-name>listings</param-name> <param-value>false</param-value> </init-param> </servlet> 
    防止Tomcat列出目录内容,避免敏感文件泄露。

七、访问控制:精细化权限管理

  • 限制管理界面访问:修改webapps/manager/META-INF/context.xml(或host-manager),添加RemoteAddrValve限制IP访问(如仅允许本地或内网IP):
    <Context antiResourceLocking="false" privileged="true"> <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127\.\d+\.\d+\.\d+|192\.168\.\d+\.\d+" /> </Context> 
    生产环境中,建议将allow设置为可信IP段。
  • 配置安全约束:在应用的WEB-INF/web.xml中,添加安全约束保护敏感资源(如/admin/*路径):
    <security-constraint> <web-resource-collection> <web-resource-name>Admin 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> 
    此配置要求访问/admin/*路径的用户必须具备admin角色。

八、日志与更新:持续监控与修复

  • 启用详细日志:修改conf/logging.properties,调整日志级别(如org.apache.catalina.level=FINE),记录详细访问和操作日志,便于后续审计。
  • 定期更新与补丁:定期检查Tomcat官网(apache.org)发布的安全补丁,升级至最新稳定版本(如Tomcat 9.0.x或10.0.x),修复已知漏洞。

0