Debian系統下GitLab安全防護實施指南
保持Debian系統及所有依賴包為最新版本,及時修復已知安全漏洞。執行以下命令更新系統:
sudo apt update && sudo apt upgrade -y
使用ufw
(簡單易用)或iptables
(更靈活)配置防火墻,僅允許必要端口通過:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 22/tcp
sudo ufw enable
sudo ufw status # 確認規則生效
若使用iptables
,需保存規則(sudo iptables-save > /etc/iptables.rules
)以確保重啟后生效。
編輯/etc/ssh/sshd_config
文件,調整以下參數以降低SSH攻擊風險:
Port 2222
(自定義端口,如2222)PermitRootLogin no
PubkeyAuthentication yes
PasswordAuthentication no
sudo systemctl restart ssh
注意:修改端口后,需在GitLab配置中同步更新SSH端口(見“GitLab特定配置”部分)。
使用Let’s Encrypt免費獲取SSL證書(推薦),步驟如下:
sudo apt install certbot python3-certbot-nginx
yourdomain.com
為實際域名):sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com
Certbot會自動配置Nginx并安裝證書(默認路徑:/etc/letsencrypt/live/yourdomain.com/
)。/etc/gitlab/gitlab.rb
文件,設置以下參數:external_url 'https://yourdomain.com' # 強制使用HTTPS
nginx['ssl_certificate'] = "/etc/letsencrypt/live/yourdomain.com/fullchain.pem"
nginx['ssl_certificate_key'] = "/etc/letsencrypt/live/yourdomain.com/privkey.pem"
nginx['ssl_protocols'] = "TLSv1.2 TLSv1.3" # 僅使用安全協議版本
nginx['ssl_ciphers'] = "ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256" # 強加密套件
保存后重新配置GitLab:sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart
sudo certbot renew --dry-run
Guest
(僅查看)、Reporter
(查看+提交)、Developer
(開發+推送)、Maintainer
(維護+合并)等角色,避免過度授權。Account
→Two-factor authentication
中開啟,提升賬戶安全性(即使密碼泄露,仍需手機驗證碼登錄)。sudo gitlab-rails console
)執行以下命令,強制密碼復雜度(至少8位,包含大小寫字母、數字、特殊字符):Gitlab::CurrentSettings.update!(password_authentication_enabled_for_web: true, password_complexity_requirement: 'medium')
root
用戶登錄GitLab,所有管理員通過普通用戶+sudo
執行管理操作。.gitignore
文件,忽略敏感文件(如*.key
、*.pem
、config/database.yml
、*.env
)。git-crypt
工具對包含敏感信息的文件(如API密鑰、數據庫密碼)進行加密,確保提交到GitLab的代碼不包含明文敏感信息。sudo apt install fail2ban
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local # 備份默認配置
編輯/etc/fail2ban/jail.local
,啟用SSH防護:[sshd]
enabled = true
maxretry = 3 # 允許的最大失敗次數
bantime = 600 # 封禁時間(秒)
重啟Fail2ban:sudo systemctl restart fail2ban
。sudo journalctl -u gitlab
查看GitLab服務日志,或通過Web界面(Admin Area
→Monitoring
→Logs
)監控系統活動,及時發現異常(如大量失敗登錄、未授權訪問)。/etc/gitlab/gitlab.rb
設置備份路徑和頻率:gitlab_rails['backup_keep_time'] = 604800 # 保留7天備份(單位:秒)
gitlab_rails['backup_schedule'] = "0 2 * * *" # 每天凌晨2點備份
手動觸發備份:sudo gitlab-backup create
,備份文件默認存儲在/var/opt/gitlab/backups/
。sudo gitlab-backup restore BACKUP=timestamp
),確保備份有效性,避免數據丟失。關注GitLab官方安全公告,及時升級到最新穩定版本(小版本升級可直接sudo apt upgrade gitlab-ce
,大版本升級需參考官方升級指南),修復已知漏洞,提升系統安全性。