Ubuntu下GitLab安全加固指南
使用ufw(Ubuntu默認防火墻工具)限制僅允許必要端口訪問,防止非法IP連接GitLab服務。執行以下命令:
sudo ufw allow http # 允許HTTP(80端口,若使用HTTPS可省略)
sudo ufw allow https # 允許HTTPS(443端口)
sudo ufw allow OpenSSH # 允許SSH(22端口,用于遠程管理)
sudo ufw enable # 啟用防火墻
若使用iptables,可添加規則允許GitLab端口并通過iptables-save保存規則,確保重啟后生效。
使用Let’s Encrypt免費證書或自有證書,配置GitLab的external_url為https://格式,并指定證書路徑。編輯/etc/gitlab/gitlab.rb文件:
external_url 'https://your-domain.com' # 替換為你的域名或IP
nginx['ssl_certificate'] = "/etc/letsencrypt/live/your-domain.com/fullchain.pem" # 證書路徑
nginx['ssl_certificate_key'] = "/etc/letsencrypt/live/your-domain.com/privkey.pem" # 私鑰路徑
執行sudo gitlab-ctl reconfigure使配置生效,重啟GitLab服務。
禁用密碼認證,強制使用SSH密鑰登錄,提升賬戶安全性。編輯/etc/ssh/sshd_config文件:
PubkeyAuthentication yes # 啟用公鑰認證
PasswordAuthentication no # 禁用密碼認證
Port 2222 # 可選:更改默認SSH端口(減少自動化攻擊)
重啟SSH服務:sudo systemctl restart ssh。
為用戶生成SSH密鑰對(若未生成):ssh-keygen -t rsa -b 4096 -C "your_email@example.com",將公鑰(id_rsa.pub)添加到GitLab賬戶的SSH密鑰設置中。
通過PAM模塊設置密碼復雜度要求(至少8位,包含大小寫字母、數字和特殊字符),并定期提醒用戶更改密碼。編輯/etc/pam.d/common-password文件,添加或修改以下行:
password requisite pam_pwquality.so retry=3 minlen=8 difok=3 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1
在GitLab管理后臺(Admin Area → Settings → Password Policy)啟用密碼策略,要求用戶定期更新密碼。
及時安裝GitLab安全補丁,修復已知漏洞。執行以下命令更新GitLab:
sudo apt update
sudo apt upgrade gitlab-ce # 升級GitLab社區版
sudo gitlab-ctl reconfigure # 重新配置
sudo gitlab-ctl restart # 重啟服務
同時,定期更新Ubuntu系統和依賴包(sudo apt update && sudo apt upgrade)。
為GitLab賬戶添加MFA,提升賬戶安全性。在GitLab管理后臺(Admin Area → Settings → Two-Factor Authentication)啟用MFA,選擇認證方式(如TOTP、短信或硬件令牌)。用戶登錄時需輸入驗證碼,防止賬戶被盜。
通過.gitignore文件忽略敏感文件(如*.pem、*.key、*.env),防止敏感信息上傳至倉庫。在項目根目錄創建或編輯.gitignore文件,添加以下內容:
*.pem
*.key
*.env
*.secret
在GitLab管理后臺(Admin Area → Settings → Repository)啟用“Scan for sensitive files”功能,自動檢測并阻止敏感文件上傳。
開啟GitLab日志記錄(默認開啟),定期檢查訪問日志和錯誤日志,及時發現異常行為。使用Logwatch或Fail2ban工具自動化監控:
sudo apt install logwatch fail2ban # 安裝工具
sudo systemctl enable logwatch # 啟用Logwatch
sudo systemctl start logwatch
配置Fail2ban監控SSH和GitLab登錄失敗次數,自動封禁惡意IP。
/etc/ssh/sshd_config文件,設置PermitRootLogin no,禁止root用戶直接SSH登錄,使用普通用戶+sudo管理服務器。/etc/apparmor.d/usr.sbin.gitlab-runsvdir文件,添加自定義規則限制GitLab進程權限,防止越權訪問。通過GitLab的用戶組、項目角色(Guest、Reporter、Developer、Maintainer、Owner)精細分配權限,避免過度授權。例如,限制Guest角色僅能查看項目,Developer角色可推送代碼,Maintainer角色可合并請求。
定期檢查GitLab用戶列表(Admin Area → Users),移除離職或不再需要的用戶,禁用閑置賬戶(超過90天未登錄)。通過“User Activity”功能查看用戶操作記錄,發現異常行為。