温馨提示×

linux gitlab怎么审计

小樊
42
2026-09-04 14:51:39
栏目: 智能运维

在 Linux 上审计 GitLab(无论是自建 GitLab CE/EE 还是 GitLab Runner),一般可以从系统层、GitLab 自身、代码与操作、网络与合规几个层面来做。下面按“能落地的审计方案”来说明。


一、GitLab 自带审计能力(最优先)

1. GitLab 审计日志(Audit Events)

适用版本:

  • GitLab EE(企业版):完整审计
  • GitLab CE:部分审计(有限)

位置:

  • 网页端:Admin → Monitoring → Audit Events
  • API:
curl --header "PRIVATE-TOKEN: <token>" \
  "https://gitlab.example.com/api/v4/audit_events"

可审计内容:

  • 用户登录 / 登出
  • 权限变更
  • 项目 / 组创建删除
  • Token 创建 / 撤销
  • 分支保护变更

✅ 建议:管理员操作必须开启审计


2. GitLab 系统日志(非常重要)

日志目录(Omnibus 安装):

/var/log/gitlab/

重点日志:

/var/log/gitlab/gitlab-rails/
  production.log
  audit_json.log   # 审计日志(JSON)
  api.log

/var/log/gitlab/nginx/
  access.log
  error.log

/var/log/gitlab/gitaly/
/var/log/gitlab/sidekiki/

查看审计日志示例:

tail -f /var/log/gitlab/gitlab-rails/audit_json.log

二、Linux 系统层审计(不可忽视)

3. 使用 auditd(强烈推荐)

安装:

yum install audit -y    # CentOS/RHEL
apt install auditd     # Ubuntu/Debian

监控 GitLab 关键目录:

auditctl -w /var/opt/gitlab -p wa -k gitlab_data
auditctl -w /etc/gitlab -p wa -k gitlab_config
auditctl -w /var/log/gitlab -p wa -k gitlab_log

查看审计:

ausearch -k gitlab_data
aureport -f

4. 用户与 SSH 审计

  • /var/log/secure/var/log/auth.log
  • 检查异常登录:
grep "Failed password" /var/log/secure

SSH 访问 GitLab 用户:

grep git /var/log/secure

三、代码与仓库审计

5. 仓库操作审计

  • Push / Merge 记录:
    • 项目 → Repository → Activity
  • 强制推送、删除分支:
    • 开启分支保护
    • 禁止 force push

6. 敏感信息审计(代码泄露)

工具:

  • gitleaks
  • trufflehog

示例:

gitleaks detect --source /var/opt/gitlab/git-data

四、权限与合规审计

7. 用户与权限审计

# 管理员用户
gitlab-rails runner "User.admins.each { |u| puts u.username }"

检查:

  • 是否存在多余 admin
  • 是否存在长期未登录账号

8. Token 与密钥审计

  • Personal Access Token
  • Deploy Token
  • Runner Token
gitlab-rails runner "PersonalAccessToken.all.each { |t| puts t.user.username, t.created_at }"

五、网络与访问审计

9. Nginx 访问审计

/var/log/gitlab/nginx/gitlab_access.log

分析异常 IP:

awk '{print $1}' gitlab_access.log | sort | uniq -c | sort -nr

10. 防火墙 & 端口

ss -tunlp | grep gitlab
iptables -L -n

六、自动化与持续审计建议

✅ 推荐组合:

  • auditd(系统)
  • GitLab Audit Log(业务)
  • ELK / Grafana Loki(日志集中)
  • 定时脚本(权限 / Token 检查)

示例 cron:

0 2 * * * /opt/audit/gitlab_audit.sh

七、最小审计清单(实用)

✅ 必须看:

  • [ ] audit_json.log
  • [ ] nginx access.log
  • [ ] admin audit events
  • [ ] admin 用户列表
  • [ ] Token 列表
  • [ ] /etc/gitlab 变更

如果你愿意,我可以:

  • 给你一套 GitLab 审计脚本
  • 帮你区分 CE / EE 审计差异
  • 设计 等保 / ISO 合规审计方案

你用的是 GitLab CE 还是 EE

0