目標gitlab是使用源碼安裝的10.5中文版
大綱:
gitlab rack-attack 機制的作用
如何啓用和禁用gitlab的rack-attack機制,以及如何配置白名單
如果一個ip被錯誤地攔截,導致了不能訪問,如何快速地恢復
如果gitlab工作在一個反向代理(或者是負載均衡器)的後邊,會導致的問題和解決的方法
如何寫出一個可以觸發攔截機制的測試用例
正文:
1.gitlab rack-attack 機制的作用
gitlab的rack-attack機制是爲了限制某個ip對gitlab進行基本認證請求的次數,杜絕惡意的攻擊和密碼破解等行爲,通過限制每個ip每分鐘內嘗試的基本認證的次數來實現,如果某個ip進行的基本認證請求的次數超過這個限制,則這個ip的其他的所有的請求都會返回403
2.如何啓用和禁用gitlab的rack-attack機制,以及如何配置白名單
我們使用的是從源碼安裝的gitlab,rack-attack機制默認是啓用的,如果想要禁用掉這個機制,只需要修改 /home/git/gitlab/config/gitlab.yml
將下圖中的enabled改爲false,然後取消註釋即可:
如果想要配置不攔截某個IP地址,則將上邊的ip_whitelist配置取消註釋,將不攔截的ip地址配置進去即可,如果有多個地址的話,中間用逗號進行分隔.
3.如果一個ip被錯誤地攔截,導致了不能訪問,如何快速地恢復
如果一個地址被攔截,則gitlab會將這個攔截的地址寫入redis裏邊,如果想要迅速地恢復這個地址的請求,則將這條攔截的記錄從redis裏邊刪除即可
具體的操作的方法如下:
查看日誌,找到被攔截的IP地址是什麼:
grep "Rack Attach" /日誌目錄/production.log
進入redis :
redis-cli -s /var/run/redis/redis.sock
查看相關的cache key:
keys *rack::attack*
刪除掉該key對應的值:
del cache:gitlab:rack::attack:allow2ban:ban:
4.如果gitlab工作在一個反向代理或者是負載均衡後邊,導致gitlab拿到的請求地址都是反向代理(或者負載均衡器)的IP地址,而不是用戶真實的IP地址,會導致rack-attack起不到我們想要的作用,這時候該如何配置讓gitlab讀取到用戶真實的ip地址來選擇禁用,而不是禁用掉反向代理的地址呢?
補充.....
5.如何寫出一個可以觸發攔截機制的測試用例
補充......
11.x版本開始,rack-attack功能默認都是禁用的了,如果需要這個功能,需要手動修改配置文件來開啓
官方文檔的位置:
https://docs.gitlab.com/ee/security/rack_attack.html