Tuesday, August 28, 2018

Menghapus IP yang di Blok Gitlab & Menambah IP ke Daftar White List

Blocked IP
Dan terjadi lagi... kisah lama yang terulang kembali... 
kau terblokir lagi...  IP publik kantor ke blokir Gitlab lagi.... 

lalalalalala... :D

Yak, sebelumnya hal ini sudah pernah terjadi. dan akuh gak mau terulang ketiga kalinya. :v

Jadi ceritanya somehow IP publik punya kantor di blokir si sama Gitlab. Gimana ceritanya sih developer justru di blokir sendiri sama yang lagi di develop, udah gitu selfhost lagi. Moga-moga bukan karena para programmer android rajin nge-commit codingannya ye. :P
Oke, jadi di gitlab ada middleware yang namanya Rack Attack atau  Rack::Attack  yang merupakan library package dari pemrograman Ruby (RubyGem). Berdasarkan repository resmi Rack Attack,
Rack middleware for blocking & throttling abusive requests Protect your Rails and Rack apps from bad clients. Rack::Attack lets you easily decide when to allow, block and throttle based on properties of the request.
Ya intinya Rack Attack itu bakalan nglindungi app rails/ruby on rails yang kamu kembangkan. Entah dari request yang aneh-aneh (flooding), brute force dan semacamnya. Karena Gitlab dikembangkan juga dengan rails, maka package inilah yang melindungi gitlab dari hal-hal yang "berbahaya".

Ciri-ciri kalo IP kita terblokir tuh kayak gimana sih? Kayak gini nihh... nih...

Saat IP di Block Gitlab
Masi belum yakin kamu beneran ke blokir? Oke, kita cek langsung di backend log nya. Kita bisa eksekusi command berikut :
cat /var/log/gitlab/gitlab-rails/production.log | grep Rack_Attack
Atau bagi anda yang running gitlab diatas docker, bisa menggunakan perintah :
docker exec -it [nama_container]cat /var/log/gitlab/gitlab-rails/production.log | grep Rack_Attack
List yang Diblokir
Sorry ya di sensor, di production si, jadi let's keep them classified. ;)
Jadi, terkonfirmasi sudah IP kantor (yang depannya 158 ituh) memang kena block si Rack Attack. Lalu gimana caranya ng-unblock ip yang sudah terlanjur cinta terblokir? Sebelum itu, seperti biasa, berikut adalah environment atau lingkungan kerja yang saya gunakan :
Operating System : Ubuntu Server 14.04.5 LTS
Docker version : 18.03
Gitlab Version : 10.x keatas
Pertama kita masuk ke console redis yang digunakan si gitlab dengan perintah berikut :
/opt/gitlab/embedded/bin/redis-cli -s /var/opt/gitlab/redis/redis.socket
bagi yang menggunakan docker :
docker exec -it [nama_container] /opt/gitlab/embedded/bin/redis-cli -s /var/opt/gitlab/redis/redis.socket
Jika perintah diatas berhasil, beginilah tampilan console/terminal anda seharusnya
Redis-CLI

Selanjutnya, kita hapus IP publik kita yang terblokir dari daftar si Rack Attack dengan perintah berikut :
del cache:gitlab:rack::attack:allow2ban:ban:[IP_Publik]
Kemudian, konfirmasi apakah IP publik kita sudah benar-benar terhapus dari daftar Rack Attack dengan perintah berikut :
keys *rack::attack*
karena IP yang terblokir baru hanya milik kantor, maka output perintah diatas di gitlab saya cuma empty

Daftar Blacklist IP 
Dan pastikan output terakhir dari perintah diatas seperti gambar berikut :
Gitlab Reconfigured

Setelah itu coba kembali akses gitlab anda.

Menambahkan IP ke Daftar White List
Nah, supaya hal diatas tidak terulang lagi, ada baiknya kita segera menambahkan IP publik kita kedalam daftar white list milik Gitlab. Kita bisa menggunakan nano, pico, vi atau vim untuk mengedit file konfigurasi gitlab. kali ini saya menggunakan nano :
nano /etc/gitlab/gitlab.rb
atau bagi yang menggunakan docker (pastikan nano sudah terinstall pada container gitlab)
docker exec -it [nama_container] nano /etc/gitlab/gitlab.rb
kemudian dengan fiture search temukan line rack_attack_git_basic_auth, kemudian hapus komentar pada block tersebut
Default Konfigurasi rack_attack_git_basic_auth

selanjutnya masukkan IP publik yang kita inginkan.
gitlab_rails['rack_attack_git_basic_auth'] = {
  'enabled' = true,
  'ip_whitelist' = ["127.0.0.1","10.20.30.40","50.60.70.80"],
  'maxretry' = 10,
  'findtime' = 60,
  'bantime' = 3600
}
konfigurasi yang tersedia pada  rack_attack_git_basic_auth beserta penjelasannya :
  • enabled: secara bawaan, fungsi ini memang tidak dinyalakan,  isi value ini dengan true jika ingin Rack Attack aktif
  • ip_whitelist: whitelist dari proses pemblokiran. Kumpulan IP ini harus berbentuk format array string ruby. Contoh, ["127.0.0.1", "127.0.0.2", "127.0.0.3"].
  • maxretry: jumlah spesifik maksimum brapa kali request yang diijinkan dalam jumlah satuan waktu tertentu
  • findtime: jumlah satuan waktu tertentu untuk melakukan request sebelum IP tersebut terblokir.
  • bantime: berapa lama IP akan diblokir dalam satuan detik

Setelah semua sudah terkonfigurasi, terakhir kita reconfigure gitlab service kita dengan perintah berikut :
sudo gitlab-ctl reconfigure
Dan pastikan output yang dihasilkan sesuai dengan gambar sebelumnya. Semoga bermanfaat. :)


Referensi :

No comments:

Post a Comment