Memasang Fail2Ban pada SSH
Memasang Fail2Ban pada SSH di artikel ini menjelaskan cara Memasang Fail2Ban pada SSH serta penjelasan tentang Fail2Ban.
Intro
Salah satu metode yang sering digunakan oleh pihak yang melakukan penetrasi keamanan, disebut juga hacker, adalah teknik Brute Force. Teknik ini melibatkan serangkaian percobaan otentikasi dengan menggunakan daftar kata (wordlist) untuk mencocokkan kombinasi username dan password, menghasilkan sejumlah besar catatan kesalahan pada file log. Saat pelaksanaan Brute Force oleh hacker, terdapat potensi bahwa kinerja server atau layanan yang bersangkutan dapat melambat karena harus menanggapi banyak permintaan otentikasi.
Apabila hacker berhasil menemukan kombinasi username dan password yang tepat, mereka dapat mengakses server dan melancarkan serangan peretasan. Untuk mencegah potensi ini, digunakanlah layanan bernama Fail2Ban, yang berfungsi untuk memonitor log khususnya pada tingkat kesalahan. Dengan menganalisis log kesalahan, kita dapat menetapkan aturan, contohnya, jika suatu kesalahan terjadi sejumlah x kali dalam log, maka IP client terkait akan diblok atau dilarang akses.
Fail2Ban menjadi salah satu solusi untuk menangani permasalahan Brute Force dan menjaga keamanan server dengan mencegah hacker masuk ke dalamnya.
Install Package Fail2Ban
Pertama lakukan install package Fail2Ban dengan perintah berikut:
sudo apt install fail2ban
Cek Log SSH
Setelah Fail2Ban terinstall, lakukan pengecekan pada log SSH. Untuk pengecekan log, lakukan test gagal login SSH ke server untuk memastikan error terekam pada log.
Setelah melakukan test gagal login, cek log tersebut dengan perintah:
cat /var/log/auth.log
Berikut Output-nya:
Untuk log service SSH ditandai dengan nama sshd.
Catatan: Lokasi dan nama file log yang merekam log ssh bisa jadi berbeda, sehingga sesuaikan dengan kondisi yang ada pada server Anda. Contoh Centos 7 = /var/log/secure , Ubuntu = /var/log/auth.log.
Konfigurasi Fail2Ban
Kemudian buat file ssh.local pada directory konfigurasi fail2ban.
nano /etc/fail2ban/jail.d/ssh.local
Isikan didalam file tersebut dengan konfigurasi berikut:
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 3600
ignoreip = 127.0.0.1
Jika sudah simpan dengan menekan tombol CTRL+O lalu Enter.
Keterangan:
[sshd] | tag service yang dipasang fail2ban |
enabled | status rule |
port | port service yang digunakan (dapat diisi dengan angka) |
filter | filter keyword service yang ada di log |
logpath | lokasi log SSH |
maxretry | maksimal percobaan gagal |
bantime | durasi banned (satuan detik, jika 1 jam maka 3600, jika -1 maka permanent) |
ignore | whitelist ip |
Start Service
Setelah konfigurasi selesai, aktifkan service Fail2Ban dengan perintah:
systemctl start fail2ban
Lalu buat servis Fail2Ban otomatis berjalan saat startup, sehingga jika komputer mati atau di restart saat menyala servis Fail2Ban akan langsung dijalankan.
systemctl enable fail2ban
Kemudian cek status rule fail2ban untuk memastikan rule sudah berjalan.
sudo fail2ban-client status
Status
|- Number of jail: 1
`- Jail list: sshd
Output diatas Number of jail = 1 dan Jail list = sshd yang menandakan bahwa rule ssh sudah running.
Pengujian
Lakukan pengujian gagal login SSH pada server yang telah dipasangkan Fail2Ban.
Pada gambar diatas dilakukan pengujian sebanyak 2 kali dan setiap pengujian terdapat 3 kali request login. Pada pengujian pertama dilakukan test gagal login sebanyak 3 kali. Kemudian pada pengujian kedua test gagal login dilakukan hanya sebanyak 2 kali karena saat memproses request login yang ke 2 server tidak memberikan respon output gagal login.
Asumsi jika digabung pengujian 1 dan 2 hanya terdapat 4 kali proses login yang lengkap (request & respond). Kesimpulannya pada rule di set maxretry sebanyak 3 kali, jika dikali ke 4 masih gagal login maka client tersebut akan di ban/block.
Berikut kita coba pengujian ke 3 yaitu setelah client di ban/block, maka akan langsung tampil Connection refused.
Kemudian cek status total gagal login dan list IP client yang telah di ban/block dengan perintah:
sudo fail2ban-client status sshd
Status for the jail: sshd
|- Filter
| |- Currently failed: 1
| |- Total failed: 4
| `- File list: /var/log/auth.log
`- Actions
|- Currently banned: 1
|- Total banned: 1
`- Banned IP list: 192.168.0.27
Konklusi
Penerapan Brute Force oleh pihak tidak sah dapat menyebabkan masalah serius dalam keamanan sistem. Teknik ini mencoba otentikasi dengan mencocokkan username dan password, mencatat kesalahan pada file log, dan dapat memperlambat kinerja server. Fail2Ban menjadi solusi efektif dengan memonitor log kesalahan, memungkinkan pengaturan aturan, seperti pemblokiran otomatis jika kesalahan terjadi sejumlah x kali. Proses instalasi dan konfigurasi Fail2Ban melibatkan pengecekan log SSH dan penyesuaian aturan maksimum percobaan gagal, durasi pemblokiran, dan daftar IP yang diabaikan. Dengan implementasi yang baik, Fail2Ban memberikan perlindungan proaktif, efektif memblokir akses dari IP tertentu saat terdeteksi percobaan login yang melanggar aturan. Ini menjadi langkah penting dalam menjaga keamanan server dan mencegah akses tidak sah oleh pihak yang tidak diinginkan.