CentOS下Jenkins的安全设置有哪些
小樊
42
2025-12-31 10:28:29
CentOS 下 Jenkins 安全设置清单
一 身份与访问控制
- 启用安全:进入 Manage Jenkins → Configure Global Security,勾选 Enable security。
- 选择认证方式:优先使用 Jenkins 专有用户数据库 或对接 LDAP/AD 等集中认证。
- 选择授权策略:避免使用“任何用户可以做任何事”或“传统模式”,建议采用 安全矩阵 或 项目矩阵授权策略(Role-Based Strategy 插件),按用户/组与项目粒度精细授权。
- 禁用或收紧匿名:生产环境应禁用匿名访问;如必须只读,仅授予 Overall/Read 等最小权限。
- 安全域与授权要点:安全域解决“谁”,授权解决“能做什么”,两者配合实现最小权限原则。
二 通信与网络加固
- 反向代理与 HTTPS:使用 Nginx/Apache 终止 TLS,配置有效证书,避免在公网以 HTTP 暴露;Web 根路径仅暴露必要资源。
- 防火墙最小化:仅放行必要端口,例如 8080/TCP(HTTP)、50000/TCP(JNLP Agent 通信) 与 22/TCP(SSH)。示例:
- sudo firewall-cmd --permanent --add-port=8080/tcp
- sudo firewall-cmd --permanent --add-port=50000/tcp
- sudo firewall-cmd --reload
- 代理与 CSRF:启用 CSRF 保护(默认已开启);若通过反向代理访问,确保代理正确传递 CSRF 头,否则受保护操作会失败。
- JNLP 端口策略:如不使用基于 JNLP 的代理,保持 禁用;若启用,选择 固定端口 便于防火墙规则管理,避免随机端口带来的运维困难。
三 凭据、插件与系统加固
- 凭据集中与加密:使用 Credentials Binding 等插件以加密方式存储 用户名/密码、SSH 密钥、API Token 等敏感凭据,避免在 Job 配置中明文出现。
- 插件与核心更新:定期更新 Jenkins 核心与插件 以获取安全修复;避免使用存在已知漏洞的旧版本。
- 构建环境隔离:尽量在 Agent/容器 中执行构建与部署,避免控制器直接访问敏感系统资源。
- 系统账户与权限:不建议将 JENKINS_USER 改为 root;保持 jenkins 低权限运行,通过 sudo 精细化授权具体命令。
- 文件与目录保护:限制 /var/lib/jenkins 目录访问权限,仅 jenkins 用户可读写;谨慎对关键文件设置不可变属性(如 chattr +i)以免影响升级与备份。
- 会话与超时:为管理控制台与 SSH 会话设置 空闲超时(如 TMOUT),降低会话劫持风险。
四 审计、备份与恢复
- 日志与审计:定期查看 /var/log/jenkins/jenkins.log,关注登录、权限变更、插件安装与关键操作事件;必要时接入集中日志平台。
- 备份与恢复:定期备份 JENKINS_HOME(/var/lib/jenkins),采用离线或版本化方式保存;发生故障时可快速恢复。示例:
- 备份:tar -czvf jenkins_backup.tar.gz /var/lib/jenkins
- 恢复:解压至原路径并重启服务
- 持续监控:结合监控告警对异常登录、权限变更、构建失败率与插件更新状态进行持续观测。