centos jenkins怎样进行安全设置
小樊
32
2025-12-21 16:49:56
CentOS 上 Jenkins 安全设置清单
一 系统与网络加固
- 更新系统与依赖:执行 sudo yum update -y,并安装受支持的 Java 11(如:sudo yum install java-11-openjdk-devel -y),保持系统与运行时的安全补丁为最新。
- 最小权限运行:确认 Jenkins 以 jenkins 用户运行(而非 root),仅授予必要权限,降低被攻破后的横向风险。
- 防火墙最小化放行:仅开放必要端口,例如 8080/TCP(HTTP) 与 50000/TCP(Agent 通信);如对外提供 Web 服务,优先放通 80/443 并在反向代理终止 TLS。示例:sudo firewall-cmd --permanent --add-port=8080/tcp;sudo firewall-cmd --permanent --add-port=50000/tcp;sudo firewall-cmd --reload。
- 端口与监听:如需变更默认端口,编辑 /etc/sysconfig/jenkins 中的 JENKINS_PORT;对外服务建议通过 Nginx/Apache 反向代理统一暴露 80/443,避免在公网直曝 8080/50000。
- 禁止在控制器上构建:在 Manage Jenkins → Manage Nodes and Clouds → 内置节点 将“执行器数量”设为 0,或“用途”设为“仅构建标签表达式与此节点匹配的作业”,把构建放到代理节点,缩小攻击面。
二 Jenkins 应用层安全配置
- 启用全局安全:进入 Manage Jenkins → Configure Global Security,勾选 Enable security;安全域选择 Jenkins’ own user database(或对接 LDAP 等外部 IdP);授权策略优先使用 Matrix Authorization Strategy 或 Project-based Matrix Authorization Strategy,为不同用户/组分配最小化权限,并禁用或严格限制 匿名访问。
- 开启 CSRF 保护:在“CSRF Protection”中保持启用(现代版本默认已开启),防止跨站请求伪造导致的安全风险。
- 代理与端口:如不使用 JNLP 代理,在“代理 → TCP port for JNLP agents”选择 禁用,减少暴露面;需要代理通信时,仅开放 50000/TCP 并配合防火墙白名单。
- 凭据与密钥治理:安装并使用 Credentials Binding 插件 安全存储 用户名/密码、SSH 私钥、Secret 文件、证书 等敏感凭据,避免在 Job 配置或代码库中明文存放。
三 传输加密与访问控制
- 全站 HTTPS:为 Jenkins Web 配置 TLS/HTTPS(可使用 Let’s Encrypt 免费证书或企业 CA),通过 Nginx/Apache 终止 TLS 并反向代理到本地 8080;对外仅开放 443,将 8080/50000 限制为回环或内网访问。
- 反向代理与头部:在代理上设置 X-Forwarded-Proto: https、X-Forwarded-Port: 443,并在 Jenkins “配置全局安全”中勾选 Enable proxy compatibility,确保登录/重定向与 CSRF 校验正常工作。
- 网络分区与白名单:将 Jenkins 控制器与 构建代理置于受控网络,限制管理口与 JNLP 50000 端口仅对受信网段开放;公网仅暴露 443。
四 更新、备份与审计
- 持续更新:在 Manage Jenkins 首页检查 Jenkins 与插件更新,及时修复已知漏洞;变更前在测试环境验证,按维护窗口滚动升级,保留回滚方案。
- 备份策略:定期备份 JENKINS_HOME(作业配置、凭据、插件与构建历史等)。可使用 ThinBackup 或 定期备份插件配置自动备份与保留策略,定期演练恢复流程,确保可用性与完整性。
- 日志与审计:启用并定期检查 系统日志、构建日志与操作审计,对关键操作(创建/删除任务、凭据变更、插件安装/卸载、权限变更)建立告警与留痕,便于溯源与合规。