fail2ban mengawasi sebuah berkas log untuk mencari pola, menghitung kecocokan per alamat, dan menambahkan aturan tembok api ketika hitungannya terlampaui. Cuma itu yang dilakukannya, dan mengetahui hal itu memberi tahu Anda persis di mana ia berguna dan di mana tidak.
Apa yang dihentikannya
- Percobaan kata sandi SSH yang berulang — meski kunci sudah menghentikannya lebih dulu.
- Kegagalan masuk yang berulang pada sebuah formulir, asalkan kegagalannya tercatat.
- Pemindai sederhana yang menyusuri daftar jalur yang sudah dikenal.
Apa yang tidak dihentikannya
Ia bersifat reaktif: bertindak setelah beberapa kegagalan, jadi satu tebakan yang langsung berhasil tak pernah terlihat. Ia juga tak berdaya terhadap percobaan yang disebar ke seribu alamat, masing-masing mencoba dua kali — dan begitulah rupa percobaan yang sungguh-sungguh.
Sebuah sel untuk log masuk web
# /etc/fail2ban/filter.d/mysite-login.conf
[Definition]
failregex = ^<HOST> .* "POST /login" 401
ignoreregex =
# /etc/fail2ban/jail.local
[mysite-login]
enabled = true
filter = mysite-login
logpath = /var/log/nginx/access.log
maxretry = 5
findtime = 600
bantime = 3600
Uji polanya sebelum menyalakan
fail2ban-regex /var/log/nginx/access.log /etc/fail2ban/filter.d/mysite-login.conf
Ia mencetak berapa baris yang cocok. Nol kecocokan berarti selnya tidak akan pernah menyala, dan Anda akan mengira diri Anda terlindungi.
Jangan memblokir diri sendiri
ignoreip = 127.0.0.1/8 ::1 YOUR.OFFICE.IP.HERE
Di balik jaringan pengiriman, setiap permintaan membawa alamat perantaranya, sehingga blokir pertama memblokir perantara itu berikut seluruh pengunjung Anda. Aturlah dulu alamat klien yang sebenarnya — lihat artikel tentang berada di balik jaringan pengiriman.
fail2ban-client status mysite-login
fail2ban-client set mysite-login unbanip 1.2.3.4
Mulailah dengan blokir satu jam, bukan blokir permanen. Daftar blokir permanen terus tumbuh, tak pernah ditinjau, dan pada akhirnya memuat seorang pelanggan.