centos下tomcat安全配置有哪些
导读:CentOS下Tomcat安全配置清单 一 运行账户与最小权限 创建专用系统用户(示例:tomcat),禁止以root直接运行: 创建用户:useradd -m -d /opt/tomcat -s /sbin/nologin tomca...
CentOS下Tomcat安全配置清单
一 运行账户与最小权限
- 创建专用系统用户(示例:tomcat),禁止以root直接运行:
- 创建用户:
useradd -m -d /opt/tomcat -s /sbin/nologin tomcat - 变更目录属主:
chown -R tomcat:tomcat /opt/tomcat - 如服务由 systemd 托管,在单元文件或环境文件中设置运行用户:
User=tomcat、Group=tomcat
- 创建用户:
- 文件与目录权限最小化:
- 仅对 Tomcat 运行账户开放 logs、work、temp 等必要目录写权限;对 conf、bin、lib 设为只读。
- 分离应用与发布目录:例如应用目录属主为 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.xml 中 Server 的关闭端口与指令(默认端口 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/Apache 做 Basic 认证与 IP 白名单,再反向代理到 Tomcat。
- 通过 RemoteAddrValve 限制来源 IP(示例仅本地):
- 应用层安全约束(在应用的 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/manager、webapps/host-manager,或在 conf/Catalina/localhost/ 移除对应 context.xml,避免暴露管理面。
- 关闭热部署与自动加载:
- 在 server.xml 的 Host 元素中设置:
unpackWARs="false" autoDeploy="false" reloadable="false",降低被植入 WebShell 的风险。
- 在 server.xml 的 Host 元素中设置:
- 隐藏版本信息:
- 在 server.xml 的 Connector 添加
server="APP Srv 1.0"以隐藏 Server 头。 - 修改 lib/org/apache/catalina/util/ServerInfo.properties,自定义
server.info、server.number,避免泄露 Tomcat 版本与构建信息。
- 在 server.xml 的 Connector 添加
- 目录与部署隔离:
- 建议将应用发布目录与 Tomcat 安装目录分离,应用目录由独立系统用户拥有,Tomcat 仅具读取权限,减少被篡改的可能性。
五 日志监控与持续加固
- 日志与审计:
- 启用并集中采集 catalina.out、localhost_access_log 等日志;配置 logrotate 按日切割并保留足够历史。
- 对管理操作、部署行为、异常堆栈进行关键字告警(如 403/500、频繁失败登录)。
- 运行环境安全:
- 定期更新 Tomcat 与 JDK 安全补丁;使用工具(如 FindSecBugs)进行代码安全扫描,修复 SQL 注入、XSS 等常见漏洞。
- 变更与回滚:
- 管理面与配置文件变更纳入版本控制;变更前备份 conf/ 与关键应用目录,支持快速回滚。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: centos下tomcat安全配置有哪些
本文地址: https://pptw.com/jishu/756839.html
