上一篇我們完成了Gitlab服務(wù)器的搭建以及簡(jiǎn)單設(shè)置,在最后總結(jié)時(shí)有強(qiáng)調(diào)Gitlab常用安全設(shè)置很有必要。這一篇我將從以下幾點(diǎn)來完善Gitlab服務(wù)器的安全設(shè)置,歡迎共同探討。
十余年的應(yīng)城網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。成都營(yíng)銷網(wǎng)站建設(shè)的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整應(yīng)城建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。成都創(chuàng)新互聯(lián)公司從事“應(yīng)城網(wǎng)站設(shè)計(jì)”,“應(yīng)城網(wǎng)站推廣”以來,每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。
(1)、密碼長(zhǎng)度以及允許密碼輸錯(cuò)次數(shù)。
修改gitlab賬戶的密碼長(zhǎng)度以及允許密碼輸錯(cuò)次數(shù),默認(rèn)密碼長(zhǎng)度限制是8-128位,且默認(rèn)允許輸錯(cuò)密碼次數(shù)為10次(10次鎖定),現(xiàn)將密碼長(zhǎng)度修改為10-128位,允許輸錯(cuò)次數(shù)為5次,鎖定時(shí)間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分鐘后自動(dòng)解鎖,默認(rèn)是10分鐘
注意:修改密碼長(zhǎng)度不影響已存在用戶,只影響后續(xù)新建用戶。
重啟gitlab
#?gitlab-ctl?reconfigure
此時(shí)再注冊(cè)或創(chuàng)建新賬戶時(shí)就要求密碼長(zhǎng)度是10位了,如圖1所示。
圖1
密碼輸錯(cuò)5次以上被鎖定,但并不會(huì)在登錄頁提示賬號(hào)被鎖定,即使后面用了正確的密碼,但會(huì)有郵件提醒。管理員可在Admin Area -->User具體要操作的用戶,進(jìn)行Unlock操作,如下圖2所示。
圖2
也可以使用管理員身份進(jìn)入Rails控制臺(tái)修改。
[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>? 等待控制臺(tái)加載成功后,使用以下命令查找 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]
用戶也可以在自己郵件中點(diǎn)擊解鎖,如圖3所示。
圖3
(2)、強(qiáng)制用戶選用哪種SSH密鑰技術(shù)以及最小密鑰位數(shù)。
Gitlab對(duì)于用戶選用哪種SSH密鑰技術(shù)以及最小密鑰位數(shù)是可配置的。ssh-keygen命令允許用戶創(chuàng)建只有768位的RSA密鑰(不指定位數(shù)創(chuàng)建默認(rèn)為2048位),這遠(yuǎn)遠(yuǎn)低于某些標(biāo)準(zhǔn)組(如美國(guó)NIST)的建議。而部署GitLab的一些公司可能需要強(qiáng)制實(shí)施最小密鑰強(qiáng)度,以滿足內(nèi)部安全策略或法規(guī)。
以管理員賬戶登錄,點(diǎn)擊"Admin Area" -->"Settings" -->"General" --> "Visibility and access controls",點(diǎn)右側(cè)的"Expand"展開,如圖4所示。
圖4
使用ssh-keygen默認(rèn)創(chuàng)建的RSA長(zhǎng)度為2048位,如若創(chuàng)建RSA的密鑰長(zhǎng)度小于1024位就有被破解的風(fēng)險(xiǎn),而DSA必須是1024位(DSA keys must be 1024 bits),按實(shí)際需求修改完成后,點(diǎn)“Save changes" 保存,如圖5所示。
圖5
(3)、對(duì)Gitlab的請(qǐng)求速率做限制。
速率限制是一種常用的技術(shù),用于提高web應(yīng)用程序的安全性和持久性。例如,一個(gè)簡(jiǎn)單的腳本每秒就可以發(fā)出數(shù)千個(gè)web請(qǐng)求,導(dǎo)致應(yīng)用出現(xiàn)訪問異常。Gitlab也可以作此限制來避免DOS***。
以管理員賬戶登錄,Admin Area > Settings > Network > User and IP rate limits
用于限制以下三種場(chǎng)景的請(qǐng)求。
1、Unauthenticated requests(未經(jīng)驗(yàn)證的請(qǐng)求)
2、Authenticated API requests(經(jīng)過身份驗(yàn)證的API請(qǐng)求)
3、Authenticated web requests(已驗(yàn)證的web請(qǐng)求)
具體設(shè)置如圖6所示。
圖6
(4)、Gitlab訪問日志歸檔周期管理。
gitlab使用svlogd來生成日志數(shù)據(jù),日志默認(rèn)都放在/var/log/gitlab目錄,再使用內(nèi)置的logrotate服務(wù)來滾動(dòng)、壓縮并最終刪除runit未捕獲的日志數(shù)據(jù)。可通過/etc/gitlab/gitlab.rb來配置日志相關(guān)屬性。
[root@mail?~]#?vi?/etc/gitlab/gitlab.rb? logging['svlogd_size']?=?1024?*?1024?*?1024?#?單個(gè)日志達(dá)到1024?MB時(shí)就自動(dòng)滾動(dòng)到新的日志文件 logging['svlogd_num']?=?300?#?保留300個(gè)已滾動(dòng)的日志文件,超過的將被logrotate刪除,保留久一點(diǎn)便于審計(jì) logging['svlogd_timeout']?=?24?*?60?*?60?#?每24小時(shí)滾動(dòng)一次 logging['svlogd_filter']?=?"gzip"?#?使用gzip壓縮 logging['logrotate_frequency']?=?"daily"?#?按天滾動(dòng) logging['logrotate_rotate']?=?300?#?保留300個(gè)日志,超過300以后的被刪除,保留久一點(diǎn)便于審計(jì) logging['logrotate_compress']?=?"compress"?#?日志壓縮方式,see?'man?logrotate' logging['logrotate_method']?=?"copytruncate"?#日志滾動(dòng)方式,?see?'man?logrotate' logging['logrotate_dateformat']?=?"-%Y-%m-%d-%H-%M"?#日志文件名格式,默認(rèn)是數(shù)字,如access.log.1.gz,現(xiàn)在改為日期,如access.log-2019-12-03-16-30.gz
另外,我們還可以將Gitlab日志以及Gitlab服務(wù)器的系統(tǒng)日志全部收集到日志服務(wù)器上集中管理,具體配置將放在后續(xù)日志收集章節(jié)中講。
(5)、如何重置Gitlab賬戶的root密碼。能丟失root密碼的管理員肯定是不會(huì)炒菜的。
想要重置root密碼,第一步以root用戶登錄到系統(tǒng),并運(yùn)行一個(gè)Rails控制臺(tái)。
[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
這時(shí)root用戶就可以使用剛設(shè)置的新密碼登錄了。
(6)、修改Gitlab服務(wù)器的ssh端口以及不允許root用戶直接登錄。
使用vi 編輯/etc/ssh/sshd_config
將17行的#Port 22 改為Port 6688
將38行的 PermitRootLogin yes 改為PermitRootLogin no
保存后,重啟sshd服務(wù)(注:禁止root用戶直接登錄的前提是系統(tǒng)上有除root以外的可登錄的普通用戶)
[root@mail?~]#?systemctl?restart?sshd
還有其他一些安全設(shè)置,如用戶使用雙因子身份驗(yàn)證等,我一般在堡壘機(jī)上才用,在Gitlab上基本不用,所以在此不再做詳細(xì)說明,若大家還有其他常用安全設(shè)置 ,可告知一下,共同學(xué)習(xí)。
總結(jié):安全無小事,一點(diǎn)都不能大意。但是,越想安全設(shè)置就越麻煩,一切要結(jié)合公司具體情況實(shí)施。
下一篇將分享Gitlab的權(quán)限管理、使用API Token創(chuàng)建組和倉(cāng)庫(kù)、數(shù)據(jù)備份、恢復(fù)等。
網(wǎng)站題目:Gitlab使用第二篇(安全設(shè)置)
本文路徑:http://chinadenli.net/article24/gjecce.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供服務(wù)器托管、商城網(wǎng)站、云服務(wù)器、小程序開發(fā)、App開發(fā)、網(wǎng)站策劃
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)