Cara Mengamankan SSH VPS dengan Fail2ban, Lengkap untuk Pemula
SSH (Secure Shell) merupakan salah satu protokol yang paling sering digunakan untuk mengelola VPS dari jarak jauh. Melalui SSH, administrator dapat masuk ke server menggunakan command line untuk menjalankan berbagai perintah, memasang aplikasi, mengelola file, hingga melakukan konfigurasi sistem.
Meskipun komunikasi SSH telah dienkripsi, bukan berarti akses tersebut sepenuhnya bebas dari ancaman. Salah satu serangan yang umum ditujukan ke SSH adalah brute force, yaitu percobaan login berulang-ulang menggunakan kombinasi username dan password sampai penyerang menemukan kredensial yang benar.
Salah satu cara untuk memberikan perlindungan tambahan adalah menggunakan Fail2ban. Tool ini dapat memantau log autentikasi dan secara otomatis memblokir alamat IP yang menunjukkan pola percobaan login mencurigakan.
Dalam tutorial ini, kita akan membahas cara memasang dan mengonfigurasi Fail2ban untuk melindungi layanan SSH pada VPS berbasis Ubuntu atau Debian.
Catatan penting: Fail2ban adalah lapisan perlindungan tambahan, bukan pengganti password yang kuat, SSH key, firewall, atau pembaruan sistem. Sebelum mengubah konfigurasi SSH atau firewall, pastikan kamu memiliki akses alternatif ke VPS agar tidak terkunci dari server sendiri.
Apa Itu Fail2ban?
Fail2ban merupakan aplikasi yang dirancang untuk mendeteksi aktivitas mencurigakan berdasarkan log sistem. Ketika jumlah percobaan yang dianggap gagal melewati batas tertentu, Fail2ban dapat menjalankan tindakan otomatis, misalnya memblokir alamat IP tersebut menggunakan mekanisme firewall yang tersedia.
Dalam kasus SSH, alurnya cukup sederhana.
Misalnya, seseorang mencoba login ke VPS menggunakan password yang salah berkali-kali. Percobaan tersebut akan tercatat dalam log autentikasi. Fail2ban kemudian membaca log tersebut menggunakan filter yang sesuai.
Jika jumlah kegagalan mencapai batas maxretry, Fail2ban menjalankan tindakan pemblokiran terhadap IP sumber. Setelah waktu yang ditentukan dalam bantime berakhir, pemblokiran dapat dilepas secara otomatis.
Dengan mekanisme tersebut, administrator tidak perlu memblokir IP penyerang satu per satu secara manual.
Step 1: Update Sistem dan Install Fail2ban
Langkah pertama adalah memperbarui informasi paket pada VPS. Jalankan perintah berikut:
sudo apt update
Perintah tersebut akan memperbarui daftar paket yang tersedia dari repository sistem.
Setelah selesai, instal Fail2ban menggunakan:
sudo apt install fail2ban
Sistem mungkin akan meminta konfirmasi sebelum proses instalasi dilanjutkan. Ikuti instruksi yang muncul pada terminal.
Setelah instalasi selesai, Fail2ban sudah tersedia di VPS, tetapi kita masih perlu membuat konfigurasi agar perlindungan terhadap SSH dapat digunakan.
Step 2: Membuat Konfigurasi jail.local
Fail2ban memiliki file konfigurasi utama bernama jail.conf. Namun, sebaiknya administrator tidak langsung mengedit file tersebut karena konfigurasi bawaan dapat berubah ketika paket Fail2ban diperbarui.
Sebagai gantinya, konfigurasi lokal dapat ditempatkan pada:
/etc/fail2ban/jail.local
Ada dua pendekatan yang dapat digunakan.
Cara pertama adalah menyalin konfigurasi bawaan:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Setelah itu, file jail.local dapat diedit sesuai kebutuhan.
Cara kedua adalah membuat file jail.local baru. Pendekatan ini lebih sederhana jika hanya membutuhkan konfigurasi tertentu.
Sebelum membuatnya, kamu bisa mengecek isi direktori Fail2ban:
ls -al /etc/fail2ban/
Langkah ini bersifat opsional. Tujuannya hanya untuk memastikan file jail.local belum tersedia.
Selanjutnya, buat file baru menggunakan Nano:
sudo nano /etc/fail2ban/jail.local
Masukkan konfigurasi dasar untuk melindungi SSH berikut:
[sshd]
enabled = yes
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 3600
ignoreip = 103.56.148.73
Jangan menyalin alamat IP contoh 103.56.148.73 begitu saja. Ganti dengan IP yang memang ingin kamu masukkan ke daftar pengecualian, jika diperlukan.
Setelah selesai mengedit file, simpan dengan menekan Ctrl+X, kemudian tekan Y, lalu Enter.
Memahami Konfigurasi Fail2ban
Supaya tidak sekadar copy-paste, penting untuk memahami fungsi setiap parameter.
[sshd]
Bagian ini merupakan nama jail yang digunakan untuk layanan SSH. Fail2ban menggunakan konsep jail untuk menentukan layanan apa yang dipantau dan tindakan apa yang dilakukan ketika terjadi pelanggaran aturan.
enabled = yes
Parameter ini mengaktifkan jail SSH.
Jika nilainya no, Fail2ban tidak akan menjalankan perlindungan untuk bagian tersebut.
port = ssh
Parameter ini menentukan port yang digunakan layanan SSH.
Nilai ssh biasanya mengacu pada port standar SSH, yaitu 22, melalui konfigurasi layanan sistem. Jika SSH pada VPS menggunakan port berbeda, parameter ini harus disesuaikan dengan konfigurasi server.
filter = sshd
Filter menentukan pola log yang akan dikenali sebagai aktivitas SSH mencurigakan.
Filter sshd merupakan filter yang disediakan Fail2ban untuk mendeteksi kegagalan autentikasi SSH.
logpath = /var/log/auth.log
Parameter ini menentukan lokasi file log yang dipantau.
Pada sistem Debian atau Ubuntu tertentu, aktivitas autentikasi SSH dapat tercatat di /var/log/auth.log. Namun, lokasi log dapat berbeda bergantung pada distribusi dan konfigurasi sistem.
Karena itu, jika Fail2ban tidak mendeteksi percobaan login, salah satu hal pertama yang perlu diperiksa adalah apakah lokasi log yang digunakan memang benar.
maxretry = 3
Parameter ini menentukan jumlah percobaan gagal yang diperbolehkan sebelum IP dikenai tindakan.
Dengan nilai 3, tiga kegagalan yang memenuhi aturan filter dapat menyebabkan IP diblokir.
bantime = 3600
Nilai ini dihitung dalam detik.
3600 detik sama dengan 1 jam. Artinya, IP yang dikenai ban akan diblokir selama periode tersebut sebelum masa ban berakhir.
Durasi ini dapat disesuaikan dengan kebutuhan keamanan server.
ignoreip
Parameter ini digunakan untuk memberikan pengecualian terhadap alamat IP tertentu.
IP yang tercantum pada ignoreip tidak akan dikenai ban oleh jail tersebut. Fitur ini dapat berguna untuk jaringan atau alamat IP administrator yang memang dipercaya.
Namun, gunakan parameter ini dengan hati-hati. Jangan memasukkan IP secara sembarangan karena alamat yang salah dapat menyebabkan pengecualian terhadap sumber yang seharusnya tidak dipercaya.
Step 3: Restart Fail2ban
Setelah konfigurasi selesai dibuat, restart layanan Fail2ban agar perubahan diterapkan:
sudo systemctl restart fail2ban
Kemudian periksa statusnya:
sudo systemctl status fail2ban
Jika layanan berjalan normal, statusnya akan menunjukkan bahwa Fail2ban sedang aktif.
Jika muncul status active (running), berarti service utama Fail2ban telah berjalan.
Namun, service yang aktif belum otomatis berarti konfigurasi SSH sudah benar. Karena itu, kita juga perlu memeriksa jail SSH secara langsung.
Gunakan:
sudo fail2ban-client status sshd
Perintah tersebut akan memberikan informasi mengenai jail sshd, termasuk jumlah IP yang sedang diblokir.
Cara Menguji Apakah Fail2ban Berfungsi
Setelah konfigurasi diterapkan, jangan langsung menganggap Fail2ban bekerja hanya karena servicenya berstatus running. Pengujian sebaiknya dilakukan secara hati-hati.
Kamu dapat melakukan simulasi dari IP lain yang bukan IP administrator yang dimasukkan ke ignoreip. Coba melakukan autentikasi SSH dengan kredensial yang salah hingga melewati nilai maxretry.
Dengan konfigurasi contoh di atas, kegagalan login yang terdeteksi dapat menyebabkan alamat IP tersebut dikenai ban.
Untuk melihat apakah IP telah diblokir, jalankan:
sudo fail2ban-client status sshd
Perhatikan bagian yang menunjukkan IP yang sedang diblokir.
Kamu juga dapat memantau log autentikasi secara langsung:
sudo tail -f /var/log/auth.log
Perintah tersebut berguna untuk melihat aktivitas autentikasi SSH secara real-time.
Sementara itu, log Fail2ban dapat dipantau dengan:
sudo tail -f /var/log/fail2ban.log
Dari sini, administrator dapat melihat aktivitas Fail2ban, termasuk ketika sebuah alamat IP terdeteksi dan dikenai tindakan.
Hindari melakukan pengujian brute force secara agresif. Untuk sekadar memastikan konfigurasi bekerja, pengujian terkontrol dengan jumlah percobaan minimal sudah cukup.
Baca juga : 5 Rekomendasi Game One Piece Non-Fighting, Ada yang Bisa Dimainkan di HP
Cara Membuka Blokir IP Secara Manual
Ada kalanya Fail2ban memblokir IP yang sebenarnya terpercaya. Misalnya, administrator salah memasukkan password beberapa kali dan alamat IP-nya terkena ban.
Dalam kondisi tersebut, IP dapat dilepas secara manual menggunakan:
sudo fail2ban-client set sshd unbanip <IP>
Ganti <IP> dengan alamat IP yang ingin dilepas dari daftar ban.
Sebaliknya, jika administrator memang ingin memblokir IP tertentu secara manual, gunakan:
sudo fail2ban-client set sshd banip <IP>
Setelah itu, status jail dapat diperiksa kembali:
sudo fail2ban-client status sshd
Cara ini membuat administrator dapat mengelola daftar pemblokiran tanpa harus mengedit file konfigurasi setiap kali.
Fail2ban Bukan Satu-Satunya Perlindungan SSH
Memasang Fail2ban merupakan langkah yang bagus, tetapi jangan menganggapnya sebagai solusi keamanan tunggal.
Perlindungan SSH sebaiknya menggunakan beberapa lapisan. Salah satunya adalah SSH key authentication sehingga administrator tidak bergantung sepenuhnya pada password.
Selain itu, pastikan sistem operasi dan paket yang digunakan selalu diperbarui. Firewall juga dapat digunakan untuk membatasi akses ke port yang tidak diperlukan.
Jika memungkinkan, administrator juga dapat mempertimbangkan pembatasan akses SSH hanya dari jaringan atau alamat IP tertentu. Semakin kecil permukaan serangan yang terbuka ke internet, semakin sedikit peluang bagi penyerang untuk mencoba masuk.
Penggunaan password yang kuat juga tetap penting, terutama untuk akun yang masih mengizinkan autentikasi berbasis password.
Hal yang tidak kalah penting adalah jangan sampai konfigurasi keamanan membuat administrator kehilangan akses ke server sendiri. Sebelum mengubah SSH atau firewall, pastikan kamu memiliki akses console atau metode pemulihan lain jika terjadi kesalahan konfigurasi.
Kesimpulan
Fail2ban dapat menjadi lapisan perlindungan praktis untuk mengurangi risiko serangan brute force terhadap SSH VPS. Cara kerjanya cukup sederhana: Fail2ban memantau log, mendeteksi pola kegagalan autentikasi, kemudian memberikan tindakan terhadap IP yang dianggap mencurigakan.
Konfigurasi dasarnya juga tidak terlalu rumit. Setelah memasang paket, administrator cukup membuat jail.local, mengaktifkan jail sshd, menentukan lokasi log, mengatur jumlah percobaan melalui maxretry, serta menentukan durasi pemblokiran menggunakan bantime.
Namun, keamanan VPS tidak berhenti pada pemasangan Fail2ban. Gunakan SSH key, firewall, pembaruan sistem, kredensial yang kuat, dan pembatasan akses sebagai bagian dari strategi keamanan berlapis.
Dengan kombinasi tersebut, VPS akan memiliki perlindungan yang jauh lebih baik dibandingkan hanya mengandalkan username dan password untuk menghadapi percobaan login otomatis dari internet.