温馨提示×

centos jenkins部署如何进行安全加固

小樊
34
2025-12-13 19:08:16
栏目: 智能运维

CentOS 上 Jenkins 安全加固清单

一 系统与网络加固

  • 账户与口令
    • 清理无用/默认账户,仅保留必要账户;通过 PAM 强化口令复杂度(如安装并配置 pam_pwquality),要求长度≥10位,包含大小写字母、数字与特殊字符;限制 root 直接登录,使用 sudo 授权最小权限;设置会话超时(如 TMOUT=300 秒);必要时对关键文件(如 /etc/passwd、/etc/shadow、/etc/group、/etc/gshadow)设置不可变属性(chattr +i),变更前评估维护影响。
  • 防火墙与端口
    • 仅开放必要端口:Jenkins Web 默认 8080/TCP,Agent 通信 50000/TCP;使用 firewalld 白名单控制来源 IP,示例:firewall-cmd --permanent --zone=public --add-rich-rule=‘rule family=“ipv4” source address=“10.0.0.0/8” port port=“8080” protocol=“tcp” accept’;定期用 ss/ netstat 排查并关闭无用端口与服务。
  • SSH 访问
    • 禁用密码登录,启用 SSH 密钥(推荐 ed25519);在 /etc/ssh/sshd_config 中设置 PasswordAuthentication no、PermitRootLogin no,重启 sshd 生效。
  • 服务与运行账户
    • 非 root 专用系统用户运行 Jenkins(如 jenkins),通过 systemd 服务文件或 sudo 精细授权;禁止以 root 直接启动 Jenkins 进程。

二 Jenkins 核心安全配置

  • 启用安全与 CSRF
    • Manage Jenkins → Configure Global Security 勾选 Enable securityCSRF Protection;禁用或限制 匿名访问,强制登录后操作。
  • 认证与授权
    • 小规模可先用内置账户;企业环境建议对接 LDAP/GitHub SSO 集中认证;授权推荐安装 Role-based Authorization StrategyMatrix Authorization Strategy,按“全局角色/项目角色→用户/组”实施最小权限,示例:全局仅管理员拥有 Overall/Administer,普通用户仅 Overall/Read;项目角色用正则匹配项目前缀(如 team-a-*)分配 Job/Build、Job/Read、Job/Cancel 等,避免越权。
  • 代理与节点
    • 仅允许受控节点注册为 Agent,在“节点配置”中限制 标签(label) 与执行者数量;对不可信作业使用专用“受限节点”。
  • 凭据与 Pipeline
    • 统一使用 Credentials 存储密钥/令牌,禁止硬编码;在 Jenkinsfile 中通过 withCredentials 使用;启用 Script SecurityPipeline: Groovy Sandbox 降低脚本风险。
  • 插件与 API
    • 仅安装必要插件,定期审查并移除未使用/有漏洞插件;通过 Jenkins CLI/REST API 操作时使用短期 API Token,避免长期口令;必要时可禁用 /cli 路径降低攻击面。

三 加密通信与端口管理

  • 启用 HTTPS
    • 使用 Let’s Encrypt 或企业 CA 证书,在反向代理(如 Nginx/Apache)或 Tomcat 连接器上终止 TLS,强制 HTTP→HTTPS 跳转;设置 HSTS,仅开放 443/TCP
  • 端口与暴露面
    • 如无需直接暴露 8080,将其仅绑定 127.0.0.1 并通过反向代理对外;变更 JENKINS_PORT(如 /etc/sysconfig/jenkins)后重启服务;保留 50000/TCP 仅对受控网段开放,避免全网可达。

四 日志审计与备份恢复

  • 日志与监控
    • 提升 Jenkins 日志级别并集中到 rsyslog/ELK;关注 FailedLogin、UnauthorizedAccess、ConfigurationChange 等事件;为关键操作配置 邮件/Slack 告警。
  • 备份与恢复
    • 定期备份 $JENKINS_HOME(含 config.xml、jobs/、users/、secrets/ 等),示例:0 2 * * * tar -czf /backup/jenkins_$(date +%Y%m%d).tar.gz /var/lib/jenkins;验证备份可用性与恢复演练。
  • 升级与漏洞响应
    • 及时升级 Jenkins 核心与插件,关注官方安全公告;对高危漏洞制定应急修补与回滚预案。

五 快速检查清单

检查项 期望状态/做法
登录认证 已启用安全;匿名访问关闭;SSO/LDAP 或强口令策略生效
授权模型 采用 RBAC/矩阵;全局仅管理员拥有 Administer;项目按团队/前缀最小权限
凭据管理 全部凭证入库;Pipeline 使用 withCredentials;无硬编码
通信加密 全站 HTTPS;仅 443/TCP 对外;8080 仅本地/代理
端口与访问 50000/TCP 白名单;firewalld 限制来源 IP;无暴露无用端口
节点与代理 仅受控节点可注册;使用标签隔离;不可信作业走受限节点
插件与 API 仅装必要插件并定期更新;API 使用短期 Token;/cli 已禁用
日志与告警 登录/权限/配置变更全量日志;集中存储与告警已配置
备份与恢复 每日备份 $JENKINS_HOME;定期恢复演练与校验
系统与 SSH 非 root 运行;SSH 密钥登录;PasswordAuthentication no;TMOUT=300

0