在 Linux 上审计 GitLab(无论是自建 GitLab CE/EE 还是 GitLab Runner),一般可以从系统层、GitLab 自身、代码与操作、网络与合规几个层面来做。下面按“能落地的审计方案”来说明。
适用版本:
位置:
curl --header "PRIVATE-TOKEN: <token>" \
"https://gitlab.example.com/api/v4/audit_events"
可审计内容:
✅ 建议:管理员操作必须开启审计
日志目录(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
安装:
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
/var/log/secure 或 /var/log/auth.loggrep "Failed password" /var/log/secure
SSH 访问 GitLab 用户:
grep git /var/log/secure
工具:
示例:
gitleaks detect --source /var/opt/gitlab/git-data
# 管理员用户
gitlab-rails runner "User.admins.each { |u| puts u.username }"
检查:
gitlab-rails runner "PersonalAccessToken.all.each { |t| puts t.user.username, t.created_at }"
/var/log/gitlab/nginx/gitlab_access.log
分析异常 IP:
awk '{print $1}' gitlab_access.log | sort | uniq -c | sort -nr
ss -tunlp | grep gitlab
iptables -L -n
✅ 推荐组合:
示例 cron:
0 2 * * * /opt/audit/gitlab_audit.sh
✅ 必须看:
如果你愿意,我可以:
你用的是 GitLab CE 还是 EE?