Linux环境下GitLab的安全设置如何做
小樊
39
2025-12-14 14:14:31
Linux环境下GitLab安全设置实操指南
一 基础网络与传输安全
- 防火墙仅放行必要端口:建议仅开放 HTTP 80/HTTPS 443 与 SSH 22,并限制管理来源;示例(UFW):
sudo ufw default deny → sudo ufw allow http → sudo ufw allow https → sudo ufw limit ssh/tcp → sudo ufw enable。如使用云环境,同步在 安全组 做同样限制。
- 全站启用 HTTPS:优先使用 Let’s Encrypt 自动证书(Certbot + Nginx 插件)或企业 CA;证书路径示例:
/etc/letsencrypt/live/yourdomain.com/fullchain.pem 与 privkey.pem。
- Omnibus 包内置 Nginx 的证书配置示例(/etc/gitlab/gitlab.rb):
external_url ‘https://your.domain.com’
nginx[‘redirect_http_to_https’] = true
nginx[‘ssl_certificate’] = “/etc/letsencrypt/live/your.domain.com/fullchain.pem”
nginx[‘ssl_certificate_key’] = “/etc/letsencrypt/live/your.domain.com/privkey.pem”
nginx[‘ssl_dhparam’] = “/etc/gitlab/ssl/dhparams.pem”
修改后执行:sudo gitlab-ctl reconfigure 使配置生效。
二 身份与访问控制
- 强制 SSH 密钥登录,禁用密码登录(在 /etc/ssh/sshd_config):
PubkeyAuthentication yes、PasswordAuthentication no,重启 SSH:sudo systemctl restart ssh。
- 管理员后台启用 双因素认证 2FA,并开启 邮箱验证(Admin Area → Settings → General → Sign-in restrictions)。
- 基于 RBAC 的细粒度授权:项目角色 Guest/Reporter/Developer/Maintainer/Owner;项目可见性设为 私有 为默认安全基线;按 最小权限原则 分配成员权限,并定期审计组成员与权限分配。
三 系统与平台加固
- 系统与 SSH 加固:清理无用账户、限制 root 远程登录、使用 密钥登录、为 SSH 设置协议、加密套件与密钥交换算法白名单;示例(/etc/ssh/sshd_config):
Protocol 2、Ciphers aes128-ctr,aes192-ctr,aes256-ctr、KexAlgorithms ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521、Macs hmac-sha2-256,hmac-sha2-512。
- 内核与网络参数(/etc/sysctl.d/99-gitlab-hardening.conf):启用 SYN 洪水防护、禁用 ICMP 重定向、限制 核心转储、开启 BPF JIT 硬化 等,示例:
net.ipv4.tcp_syncookies=1、net.ipv4.conf.all.rp_filter=1、net.ipv4.conf.all.accept_redirects=0、net.core.bpf_jit_harden=2、vm.unprivileged_userfaultfd=0;应用:sudo sysctl --system。
- 文件与进程最小权限:严格控制 /etc/gitlab/gitlab.rb 等配置权限,必要时用
chattr 保护关键文件;仅运行必要服务,关闭不必要端口与进程。
四 数据安全 备份与更新
- 定期备份与演练恢复:使用
gitlab-backup create 进行全量备份(含仓库、数据库、上传文件、CI 工件等),并将备份 异地/离线 保存;定期做 恢复演练 验证可用性。
- 安全更新与变更管理:遵循 升级路径 及时更新 GitLab 与系统补丁;升级前先 备份,升级后执行
sudo gitlab-ctl reconfigure 并检查服务状态。
- 日志与审计:集中收集与长期保留 GitLab 日志 与系统审计日志(如 auditd),对异常登录、权限变更、CI 运行等进行告警与追溯。
五 应用层防护与合规要点
- 代码与仓库安全:在仓库层面启用 分支保护、合并请求(MR)审批、安全扫描(SAST/Secret Detection/Dependency Scanning 等),并落实 代码审查 流程。
- 凭证与密钥治理:禁止在代码与 .gitignore 未覆盖的路径提交 密钥/证书/配置文件;对必须上传的敏感文件进行 加密 后再入库。
- 合规与持续监控:结合 安全编程实践 与 漏洞修复流程,建立 应急响应预案,对高危漏洞(如历史上的 CVE-2023-7028、CVE-2022-2992)保持关注并按官方通告及时修补。