
Halo, kalau kamu merasa tulisan saya ngebantu, kamu bisa ucapkan terima kasih lewat saweria.
If you feel this website help you, you can donate at saweria.
Pengantar
Kenapa harus setup fail2ban buat login page? Kalau kamu punya aplikasi lama atau tidak ada security setup sama sekali, tidak ada ruginya buat setup fail2ban di halaman login.
Settingannya simpel, jika user salah login selama 3 kali, maka IP nya akan di block.
Fail2ban ini tidak hanya bisa digunakan untuk setup di login page, bisa juga digunakan sebagai tambahan dari botblocker, bila ada orang iseng hit non exist/forbidden endpoint selama beberapa kali, maka IP user iseng itu akan di block oleh fail2ban
Tools yang Digunakan
Ubuntu 22.04.2 LTS
Fail2ban v0.11.2
Nginx
Catatan lain
- Buat yang Cloudflare proxy, silakan ikuti post sebelumnya agar server bisa mendapatkan IP dari user (bukan IP Cloudflare)
How To
Buka server, gunakan
tail -f /var/log/nginx/access.log. Lalu masuk login page aplikasi kamu, perhatikan endpoint mana yang di akses
App Pertama, Proses Login di Halaman yang Sama dengan Login Page (/login)

App Kedua, Proses Login di Endpoint /validate
Bila diperhatikan app pertama memberi feedback error 401 (Unauthorized) dan yang kedua [302 (found but move temporary)]((https://en.wikipedia.org/wiki/List_of_HTTP_status_codes). Baiknya adalah meminta programmer untuk memberi error 401 semua di login page agar pesan lebih jelas/sama
Buat 1 file baru di
/etc/fail2ban/filter.d/login-page.conf, isi dengan[Definition] failregex = ^<HOST> .* "POST /login ^<HOST> .* "POST /validate ignoreregex =atau kamu bisa buat 2 file terpisah untuk 2 aplikasi, misal
/etc/fail2ban/filter.d/login-page-laravel.confdan/etc/fail2ban/filter.d/login-page-codeigniter.confBuka file
/etc/fail2ban/jail.local, tambahkan[login-page] enabled = true filter = login-page action = iptables-multiport[name=NoAuthFailures, port="http,https"] #to add new log, add new line # or you can use /var/log/nginx/access*.log logpath = /var/log/nginx/wordpress/access.log /var/log/nginx/access.log banTime = 3600 #error attempt at 180 second findtime = 180 maxRetry = 3Reload fail2ban service
service fail2ban reload. To make sure it work, usefail2ban-client status login-pageTest dengan cara mencoba login selama 3 kali, harusnya IP kamu akan kena block oleh fail2ban
Sumber:
