Skip to content
VDS · Keamanan

Fail2ban melawan brute force kata sandi

Cara memasang dan mengonfigurasi Fail2ban: memblokir brute force SSH dan formulir web, memasukkan alamat Anda sendiri ke whitelist, memeriksa bahwa itu berfungsi, dan membuka blokir diri sendiri.

Diperbarui 23 Agustus 2026

Fail2ban membaca log, menghitung percobaan login yang gagal dari satu alamat, lalu memblokirnya sementara dengan aturan firewall. Ini tidak menggantikan login berbasis kunci, tetapi menghilangkan sebagian besar lalu lintas brute-force di latar belakang dan mengurangi beban pada log Anda.

Instalasi dan konfigurasi dasar

apt install -y fail2ban

Gunakan file Anda sendiri, /etc/fail2ban/jail.local — perubahan pada jail.conf akan ditimpa oleh pembaruan:

[DEFAULT]
bantime = 1h
findtime = 10m
maxretry = 5
ignoreip = 127.0.0.1/8 203.0.113.5
banaction = ufw

[sshd]
enabled = true
port = 22
maxretry = 3
bantime = 24h
systemctl enable --now fail2ban
fail2ban-client status
fail2ban-client status sshd

Masukkan alamat rumah atau kantor Anda ke ignoreip — ini adalah jaminan Anda agar tidak memblokir diri sendiri. Jika alamat Anda berubah, konsol di panel pada /hosting/vds/m/<id> tetap menjadi jaring pengaman Anda: konsol ini berfungsi terlepas dari jaringan dan aturan.

banaction harus sesuai dengan firewall Anda: ufw untuk ufw, nftables-multiport untuk nftables.

Di mana memeriksa hasilnya

fail2ban-client status sshd
tail -f /var/log/fail2ban.log
journalctl -u fail2ban -n 50

Status menampilkan jumlah percobaan yang gagal dan daftar alamat yang diblokir. Pada alamat publik, jumlah harian dalam ratusan adalah hal normal, bukan tanda serangan yang tertarget.

Buka blokir sebuah alamat (termasuk milik Anda sendiri):

fail2ban-client set sshd unbanip 203.0.113.5

Perlindungan di luar SSH

Fail2ban dapat bekerja dengan log apa pun yang menampilkan percobaan yang gagal.

[nginx-http-auth]
enabled = true

[nginx-limit-req]
enabled = true
logpath = /var/log/nginx/error.log

[postfix-sasl]
enabled = true

Untuk aplikasi Anda sendiri, Anda memerlukan filter — sebuah file di /etc/fail2ban/filter.d/ dengan ekspresi reguler yang alamatnya ditandai sebagai <HOST>:

[Definition]
failregex = ^.*login failed.*ip=<HOST>.*$
ignoreregex =

Uji ekspresi tersebut terhadap log yang nyata:

fail2ban-regex /var/log/myapp.log /etc/fail2ban/filter.d/myapp.conf

Perintah ini menunjukkan berapa banyak baris yang cocok. Nol kecocokan berarti aturannya salah — dan perlindungan yang gagal secara diam-diam lebih buruk daripada tidak ada perlindungan sama sekali.

Kesalahan umum

KesalahanAkibatSolusi
Mengubah jail.confHilang saat pembaruanTulis ke jail.local
Alamat Anda tidak ada di ignoreipSuatu hari Anda akan memblokir diri sendiriTambahkan, atau sambungkan melalui konsol panel
banaction tidak sesuai dengan firewall AndaBlokir tidak diterapkanSesuaikan dengan ufw atau nftables
Filter tidak cocok dengan format logDiam alih-alih perlindunganPeriksa dengan fail2ban-regex
Layanan tidak dapat membaca log systemdStatus kosongSetel backend = systemd

Uji secara nyata: sengaja masukkan kata sandi yang salah sebanyak jumlah yang diperlukan dari alamat luar dan pastikan alamat itu masuk ke daftar yang diblokir. Fail2ban yang tidak dikonfigurasi menciptakan rasa aman yang palsu.

Lengkapi dengan pembatasan laju koneksi di firewall itu sendiri — ufw limit 22/tcp.