上一篇我們完成了Gitlab服務器的搭建以及簡單設置,在最后總結時有強調Gitlab常用安全設置很有必要。這一篇我將從以下幾點來完善Gitlab服務器的安全設置,歡迎共同探討。
十余年的應城網站建設經驗,針對設計、前端、開發、售后、文案、推廣等六對一服務,響應快,48小時及時工作處理。成都營銷網站建設的優勢是能夠根據用戶設備顯示端的尺寸不同,自動調整應城建站的顯示方式,使網站能夠適用不同顯示終端,在瀏覽器中調整網站的寬度,無論在任何一種瀏覽器上瀏覽網站,都能展現優雅布局與設計,從而大程度地提升瀏覽體驗。成都創新互聯公司從事“應城網站設計”,“應城網站推廣”以來,每個客戶項目都認真落實執行。
(1)、密碼長度以及允許密碼輸錯次數。
修改gitlab賬戶的密碼長度以及允許密碼輸錯次數,默認密碼長度限制是8-128位,且默認允許輸錯密碼次數為10次(10次鎖定),現將密碼長度修改為10-128位,允許輸錯次數為5次,鎖定時間30分鐘。
使用vi 編輯 /opt/gitlab/embedded/service/gitlab-rails/config/initializers/8_devise.rb
將位于116行的config.password_length = 8..128改為config.password_length = 10..128
將位于146行的config.maximum_attempts = 10改為config.maximum_attempts = 5
將位于149行的config.unlock_in = 10.minutes改為config.unlock_in = 30.minutes? ?#30分鐘后自動解鎖,默認是10分鐘
注意:修改密碼長度不影響已存在用戶,只影響后續新建用戶。
重啟gitlab
#?gitlab-ctl?reconfigure
此時再注冊或創建新賬戶時就要求密碼長度是10位了,如圖1所示。
圖1
密碼輸錯5次以上被鎖定,但并不會在登錄頁提示賬號被鎖定,即使后面用了正確的密碼,但會有郵件提醒。管理員可在Admin Area -->User具體要操作的用戶,進行Unlock操作,如下圖2所示。
圖2
也可以使用管理員身份進入Rails控制臺修改。
[root@mail?~]#?gitlab-rails?console?-e?production -------------------------------------------------------------------------------- ??GitLab:?12.5.2?(49482945d28) ??GitLab?Shell:?10.2.0 ??PostgreSQL:?10.9 -------------------------------------------------------------------------------- Loading?production?environment?(Rails?5.2.3) irb(main):001:0>? 等待控制臺加載成功后,使用以下命令查找 irb(main):015:0>?User.find_by(email:?'firefly@demo.com') =>?#<User?id:4?@firefly> irb(main):017:0>?User.unlock_keys?#之前版本可能用的是User.unlock_access =>?[:email]
用戶也可以在自己郵件中點擊解鎖,如圖3所示。
圖3
(2)、強制用戶選用哪種SSH密鑰技術以及最小密鑰位數。
Gitlab對于用戶選用哪種SSH密鑰技術以及最小密鑰位數是可配置的。ssh-keygen命令允許用戶創建只有768位的RSA密鑰(不指定位數創建默認為2048位),這遠遠低于某些標準組(如美國NIST)的建議。而部署GitLab的一些公司可能需要強制實施最小密鑰強度,以滿足內部安全策略或法規。
以管理員賬戶登錄,點擊"Admin Area" -->"Settings" -->"General" --> "Visibility and access controls",點右側的"Expand"展開,如圖4所示。
圖4
使用ssh-keygen默認創建的RSA長度為2048位,如若創建RSA的密鑰長度小于1024位就有被破解的風險,而DSA必須是1024位(DSA keys must be 1024 bits),按實際需求修改完成后,點“Save changes" 保存,如圖5所示。
圖5
(3)、對Gitlab的請求速率做限制。
速率限制是一種常用的技術,用于提高web應用程序的安全性和持久性。例如,一個簡單的腳本每秒就可以發出數千個web請求,導致應用出現訪問異常。Gitlab也可以作此限制來避免DOS***。
以管理員賬戶登錄,Admin Area > Settings > Network > User and IP rate limits
用于限制以下三種場景的請求。
1、Unauthenticated requests(未經驗證的請求)
2、Authenticated API requests(經過身份驗證的API請求)
3、Authenticated web requests(已驗證的web請求)
具體設置如圖6所示。
圖6
(4)、Gitlab訪問日志歸檔周期管理。
gitlab使用svlogd來生成日志數據,日志默認都放在/var/log/gitlab目錄,再使用內置的logrotate服務來滾動、壓縮并最終刪除runit未捕獲的日志數據。可通過/etc/gitlab/gitlab.rb來配置日志相關屬性。
[root@mail?~]#?vi?/etc/gitlab/gitlab.rb? logging['svlogd_size']?=?1024?*?1024?*?1024?#?單個日志達到1024?MB時就自動滾動到新的日志文件 logging['svlogd_num']?=?300?#?保留300個已滾動的日志文件,超過的將被logrotate刪除,保留久一點便于審計 logging['svlogd_timeout']?=?24?*?60?*?60?#?每24小時滾動一次 logging['svlogd_filter']?=?"gzip"?#?使用gzip壓縮 logging['logrotate_frequency']?=?"daily"?#?按天滾動 logging['logrotate_rotate']?=?300?#?保留300個日志,超過300以后的被刪除,保留久一點便于審計 logging['logrotate_compress']?=?"compress"?#?日志壓縮方式,see?'man?logrotate' logging['logrotate_method']?=?"copytruncate"?#日志滾動方式,?see?'man?logrotate' logging['logrotate_dateformat']?=?"-%Y-%m-%d-%H-%M"?#日志文件名格式,默認是數字,如access.log.1.gz,現在改為日期,如access.log-2019-12-03-16-30.gz
另外,我們還可以將Gitlab日志以及Gitlab服務器的系統日志全部收集到日志服務器上集中管理,具體配置將放在后續日志收集章節中講。
(5)、如何重置Gitlab賬戶的root密碼。能丟失root密碼的管理員肯定是不會炒菜的。
想要重置root密碼,第一步以root用戶登錄到系統,并運行一個Rails控制臺。
[root@mail?~]#?gitlab-rails?console?-e?production -------------------------------------------------------------------------------- ??GitLab:?12.5.2?(49482945d28) ??GitLab?Shell:?10.2.0 ??PostgreSQL:?10.9 -------------------------------------------------------------------------------- Loading?production?environment?(Rails?5.2.3) ?? irb(main):001:0>?user?=?User.where(id:?1).first =>?#<User?id:1?@root> 然后,使用以下命令重置root密碼 irb(main):006:0>?user.password?=?'root@12358' =>?"root@12358" irb(main):007:0>?user.password_confirmation?=?'root@12358' =>?"root@12358" 保存修改 irb(main):008:0>?user.save Enqueued?ActionMailer::DeliveryJob?(Job?ID:?35e1f3a6-7321-45bd-ba2e-60e4501a93c6)?to?Sidekiq(mailers)?with?arguments:?"DeviseMailer",?"password_change",?"deliver_now",?#<GlobalID:0x00007f40a408acc8?@uri=#<URI::GID?gid://gitlab/User/1>> =>?true
這時root用戶就可以使用剛設置的新密碼登錄了。
(6)、修改Gitlab服務器的ssh端口以及不允許root用戶直接登錄。
使用vi 編輯/etc/ssh/sshd_config
將17行的#Port 22 改為Port 6688
將38行的 PermitRootLogin yes 改為PermitRootLogin no
保存后,重啟sshd服務(注:禁止root用戶直接登錄的前提是系統上有除root以外的可登錄的普通用戶)
[root@mail?~]#?systemctl?restart?sshd
還有其他一些安全設置,如用戶使用雙因子身份驗證等,我一般在堡壘機上才用,在Gitlab上基本不用,所以在此不再做詳細說明,若大家還有其他常用安全設置 ,可告知一下,共同學習。
總結:安全無小事,一點都不能大意。但是,越想安全設置就越麻煩,一切要結合公司具體情況實施。
下一篇將分享Gitlab的權限管理、使用API Token創建組和倉庫、數據備份、恢復等。
網站題目:Gitlab使用第二篇(安全設置)
本文路徑:http://vcdvsql.cn/article24/gjecce.html
成都網站建設公司_創新互聯,為您提供服務器托管、商城網站、云服務器、小程序開發、App開發、網站策劃
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯