Ubuntu GitLab安全设置技巧
小樊
38
2025-12-12 20:33:11
Ubuntu 上 GitLab 的安全设置要点
一 基础网络与传输安全
- 仅开放必要端口:使用 UFW 仅放行 80/443/22,并默认拒绝其他入站;云厂商安全组同样只放行这三类端口。示例:
sudo ufw allow http && sudo ufw allow https && sudo ufw allow OpenSSH && sudo ufw enable。
- 强制 HTTPS:将
external_url 设为 https://域名;在 /etc/gitlab/gitlab.rb 中启用 nginx['redirect_http_to_https'] = true,并配置证书路径(推荐使用 Let’s Encrypt)。示例:
external_url “https://git.example.com”
nginx[‘redirect_http_to_https’] = true
nginx[‘ssl_certificate’] = “/etc/letsencrypt/live/git.example.com/fullchain.pem”
nginx[‘ssl_certificate_key’] = “/etc/letsencrypt/live/git.example.com/privkey.pem”
修改后执行 sudo gitlab-ctl reconfigure 使配置生效。
- SSH 访问:优先使用 SSH 密钥(禁用密码登录),并确保本地私钥权限为 600(
chmod 600 ~/.ssh/id_rsa)。如使用非默认 SSH 端口,需在 gitlab.rb 中设置 gitlab_rails['gitlab_shell_ssh_port'] 并同步更新防火墙放行对应端口。
二 身份与访问控制
- 账户安全:启用 双因素认证(2FA),在管理员后台 Admin Area → Settings → General 开启;结合强密码策略与定期更换,降低账户被攻破风险。
- 最小权限与项目可见性:按“最小权限原则”分配角色,项目默认设为 Private,按需开放为 Internal/Public;通过 Groups/Members 精细控制成员权限与访问范围。
- 系统与文件权限:确保 GitLab 运行在专用 git:git 用户/组下;数据目录(如 /var/opt/gitlab)属主与权限正确(
sudo chown -R git:git /var/opt/gitlab),避免因权限不当导致信息泄露或提权。
三 数据安全与备份恢复
- 定期备份:在
/etc/gitlab/gitlab.rb 中配置备份目录与保留时间,例如:
gitlab_rails[‘backup_path’] = “/var/opt/gitlab/backups”
gitlab_rails[‘backup_keep_time’] = 604800 # 保留 7 天
使用系统计划任务定时执行备份:0 2 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create。
- 异地与快照:将备份定期 rsync 到异地存储;如有条件,结合 LVM/ZFS 快照实现快速回滚与多副本保护。
- 恢复要点:准备好备份包后,按官方流程停机、恢复、校验;恢复完成后执行
gitlab-ctl reconfigure 与必要重启。
四 系统与运行时加固
- 及时更新:保持 Ubuntu 系统与 GitLab 版本为最新,及时修补安全漏洞(如执行
sudo apt update && sudo apt upgrade -y 后 sudo gitlab-ctl reconfigure)。
- 主机加固:启用 UFW/firewalld 做最小端口放行;按需启用 AppArmor/SELinux 并为其配置合规策略,避免直接禁用;使用 auditd 做关键文件与命令审计。
- 日志与监控:集中收集与监控 GitLab 日志(如
sudo gitlab-ctl tail 系列命令),结合 Prometheus/Grafana 建立告警,及时发现异常访问与暴力尝试。
五 代码与仓库安全实践
- 防止敏感信息泄露:通过 .gitignore 忽略密钥、证书、配置文件与环境变量等;在提交前使用扫描工具检查历史与暂存区,必要时对必须上传的敏感文件进行加密。
- 安全开发流程:实施 代码审查(Code Review) 与 安全基线检查,将安全左移到开发阶段;结合 GitLab Flow 与受保护分支策略,规范合并与发布流程。