CentOS环境下GitLab安全保障
一 基础防护与网络边界
firewall-cmd --permanent --add-service={http,https,ssh} && firewall-cmd --reload。如需自定义 SSH 端口,务必同步在防火墙放行对应端口。external_url 'https://your_domain_or_ip';配置 HTTP→HTTPS 跳转 与证书路径:nginx['redirect_http_to_https'] = true、nginx['ssl_certificate']、nginx['ssl_certificate_key']、nginx['ssl_dhparam'],随后执行 gitlab-ctl reconfigure 生效。certbot --nginx -d yourdomain.com),证书路径通常为 /etc/letsencrypt/live/yourdomain.com/fullchain.pem 与 privkey.pem;或采用自签名证书并妥善管控私钥权限。二 身份与访问控制
sshd_config 与防火墙。PermitRootLogin no)、配置 登录失败锁定(如 pam_tally2.so deny=5 unlock_time=300)、设置 TMOUT 自动注销、限制 su 使用组,降低提权与暴力破解风险。三 系统与运行时加固
chattr +i /etc/passwd /etc/shadow /etc/group /etc/gshadow);按需优化 内核参数 与 日志审计。gitlab.rb 中仅启用必需组件;对外仅暴露 Nginx/Registry 等必要入口;定期执行 gitlab-ctl reconfigure 应用变更;对备份目录与配置目录设置 严格权限 与 隔离。四 数据安全与持续运营
auditd),对异常登录、权限变更、暴力访问与大规模导出等行为设置 告警;定期 漏洞扫描 与 配置基线检查。五 快速检查清单
| 检查项 | 期望状态/要点 |
|---|---|
| 防火墙 | 仅放行 80/443/22;变更后 firewall-cmd --reload |
| HTTPS | external_url 为 HTTPS;启用 HTTP→HTTPS;证书路径正确且权限为 600 |
| SSH | 使用 密钥登录;如需改端口,同步放行新端口与 sshd_config |
| 账户安全 | 2FA 开启;强密码策略;清理 闲置/共享账号 |
| 系统与SELinux | 系统补丁 最新;SELinux enforcing;关键文件 chattr +i |
| 备份与演练 | 定期全量备份;定期 恢复演练 与 时效验证 |
| 日志与告警 | 集中日志;对异常行为配置 告警;保留周期满足合规 |
| CI/CD 与Runner | 隔离网络/权限;镜像与依赖 漏洞扫描 |
| 端口与服务 | 未使用端口与服务 关闭/禁用;对外仅暴露必要入口 |