Melindungi akses server dengan Fail2ban

By | September 6, 2020

Namanya server yang online jelas bisa diakses dari seluruh dunia dan ini membuat celah keamanan dimana ada yang berusaha masuk lewat SSH dengan cara brute force password root atau akun lainnya yang ada. Berbahaya bukan? Walau kita sudah menggunakan password yang kuat tapi kalau tidak dicegah ya ada resiko jebol juga, dan proses brute force ini sendiri akan menggunakan resource VPSnya untuk validasi login. Jelas banyak ruginya. Karena itu jangan dibiarkan saja, dan cegah sebelum terlanjur menjadi musibah.

Nah… di Linux anda bisa memanfaatkan paket aplikasi fail2ban untuk otomatis melakukan blokir sementara kalau ada usaha login yang gagal berulang kali atau sekalian saja permanen. Fail2ban sendiri memanfaatkan IPTables untuk melakukan filter atau blokir akses, dan ini biasanya sudah terinstall secara default. Yang dilakukan sebenarnya menambahkan aturan baru sesuai kasus anda.

Ya seperti biasa langkah pertama jelas menginstallnya:

Debian/Ubuntu

apt-get install fail2ban

RHEL/CentOS/Fedora

yum install fail2ban

Setelah ini kita atur konfigurasi fail2ban, dan ini agak berbeda karena yang kita edit bukanlah file aslinya (jail.conf) melainkan khusus untuk server tersebut (jail.local). Tapi masih mirip dengan sumbernya, jadi mari dicopy dulu:

cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Kemudian didalamnya langsung cari bagian yang bernama Jail:

nano /etc/fail2ban/jail.local

Minimal pastikan SSH terproteksi, dan secara default memang aktif tapi siapa tahu saja:

Debian/Ubuntu

[ssh]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 6

RHEL/CentOS/Fedora

[ssh-iptables]
enabled = true
filter = sshd
action = iptables[name=SSH, port=ssh, protocol=tcp]
sendmail-whois[name=SSH, dest=root, sender=fail2ban@contoh.local]
logpath = /var/log/secure
maxretry = 5

Untuk memahaminya dan supaya bisa membuat aturan baru saya jelaskan:

  • [] – Yang didalam kurung kotak itu nama atau label aturannya.
  • enabled – Nilainya bisa true untuk aktif atau false untuk mati.
  • port – Port dimana aturan tersebut aktif dan bisa mereferensikan nama proses/protokol yang sudah dikenal.
  • filter – Akan melakukan filter menggunakan aturan yang sudah ditetapkan, lokasinya ada di /etc/fail2ban/filter.d/ dan cukup menggunakan nama filenya tanpa perlu ekstensinya (misal: sshd.conf).
  • action – Aksi apa yang perlu dilakukan saat ada kondisi yang memicu filternya. Bisa dicek di /etc/fail2ban/action.d/.
  • logpath – Disimpan dimana catatan (log) aktivitas fail2ban, terutama kalau ada yang gagal.

  • maxretry – Diberi kesempatan berapa kali mencoba sebelum diblokir.

Setiap kali anda memodifikasi konfigurasi fail2ban maka perlu direstart prosesnya:

service fail2ban restart

Anda bisa melihat sendiri ada aturan fail2ban di IPTables, eksekusi saja perintah:

iptables -L

Akan muncul informasi seperti berikut:

Chain INPUT (policy DROP)
target prot opt source destination
fail2ban-ssh tcp -- anywhere anywhere multiport dports ssh
fail2ban-SSH tcp -- anywhere anywhere tcp dpt:ssh
ACCEPT tcp -- anywhere anywhere tcp dpt:27868
DROP tcp -- anywhere anywhere tcp dpt:ssh
ACCEPT tcp -- anywhere anywhere multiport dports http,https
ACCEPT tcp -- anywhere anywhere multiport dports ftp,12000:12100
ACCEPT udp -- anywhere anywhere udp dpt:domain
ACCEPT tcp -- anywhere anywhere multiport dports smtp,ssmtp,submission,2525
ACCEPT tcp -- anywhere anywhere multiport dports pop3,pop3s
ACCEPT tcp -- anywhere anywhere multiport dports imap2,imaps
ACCEPT tcp -- anywhere anywhere multiport dports mysql,postgresql
ACCEPT tcp -- anywhere anywhere tcp dpt:8083
ACCEPT icmp -- anywhere anywhere
ACCEPT all -- servernesia anywhere
ACCEPT all -- localhost.localdomain anywhere

Saya potong karena panjang, tapi saya yakin anda paham maksudnya. 🙂

Sudah, itu saja untuk dasar – dasarnya. 🙂 Tinggal belajar saja menerapkan aturan baru untuk kasus – kasus spesifik.


Sumber https://servernesia.com