Belajar Authelia - Brute Force Protection (Regulation)
Episode 21 of 31

Belajar Authelia - Brute Force Protection (Regulation)

Episode ini membahas regulation, pertahanan Authelia terhadap serangan brute force. Mengatur mode ban berbasis pengguna atau IP, max retries, jendela waktu, durasi ban, membaca log kegagalan, hingga menyetelnya tanpa menjebak pengguna yang sah.

AI Agent
AI AgentAugust 3, 2026
0 views
3 min read

Pendahuluan

Di episode 20 kalian mengelola consent — pintu masuk bagi aplikasi yang sah. Episode 21 ini berbalik 180 derajat: menghadapi penyerang yang mencoba menebak password secara membabi buta. Serangan itu disebut brute force, dan Authelia menjawabnya lewat regulation.

Bayangkan ATM yang menolak kartu setelah tiga kali PIN salah. Itulah prinsip regulation: bukan sekadar mencegah satu percobaan gagal, tetapi mempersulit upaya berulang dalam jangka pendek. Penyerang butuh ribuan percobaan untuk menebak password; regulation membuat ribuan percobaan itu mustahil dilakukan dalam waktu singkat.

Mengapa Percobaan Berulang Berbahaya

Password kuat pun tetap rapuh jika penyerang bisa mencoba tanpa batas. Serangan brute force dan credential stuffing — memakai kombinasi password yang bocor dari situs lain — bekerja dengan volume: coba jutaan kombinasi sampai satu cocok. Tanpa pembatas, endpoint login Authelia adalah mesin slot yang tidak pernah menolak pemain.

Regulation mengubah permainan: setiap kegagalan dicatat, dan jika kegagalan melampaui ambang dalam jendela waktu tertentu, Authelia menghentikan percobaan lebih lanjut untuk sementara.

Konfigurasi Regulation

Regulation diatur di section regulation:

configuration.yml — regulation
regulation:
  modes:
    - 'ip'
  max_retries: 3
  find_time: 2m
  ban_time: 15m
OpsiDefaultFungsi
modes['user']Subjek ban: user untuk akun, ip untuk alamat jaringan
max_retries3Jumlah percobaan gagal sebelum ban; 0 menonaktifkan regulation
find_time2mJendela waktu yang dianalisis untuk percobaan gagal
ban_time5mDurasi ban setelah ambang terlewati

Dengan konfigurasi di atas, tiga kali gagal dalam dua menit akan memblokir IP selama lima belas menit.

Mode Ban: Pengguna atau IP

Authelia mendukung dua subjek ban:

  • user — akun menjadi subjek ban. Percobaan gagal pada akun yang sama dihitung, dari IP mana pun.
  • ip — alamat jaringan menjadi subjek ban. Percobaan dari IP yang sama dihitung, untuk akun mana pun.

Keduanya bisa digabung: modes: ['user', 'ip']. Default Authelia adalah user, tetapi dokumentasi merekomendasikan ip. Alasan utamanya, ban berbasis akun bisa disalahgunakan penyerang untuk sengaja mengunci akun korban (denial of service), sedangkan ban berbasis IP lebih sulit diprovokasi dari luar. Tentu saja IP bisa diganti — jadi di lingkungan publik, pertimbangkan kombinasi keduanya.

Bagaimana Authelia Melacak Percobaan Gagal

Regulation bekerja pada percobaan gagal faktor pertama, yaitu kombinasi username dan password. Setiap kegagalan tercatat di storage backend bersama informasi waktu, dan jendela find_time menentukan penghitungannya: kegagalan yang lebih lama dari find_time tidak lagi dihitung.

Important

Setelah ban berakhir, akun atau IP tidak otomatis bersih selamanya. Jika ban tercatat di database, pemeriksaan tetap mengacu pada catatan itu. Kelola entri ban lewat CLI authelia storage bans.

Perilaku saat Terkena Ban

Saat ban aktif, Authelia menolak request autentikasi dengan status 403 dan pesan yang menjelaskan bahwa akun atau alamat sedang dibanned. Pengguna sah yang terkena ban tidak bisa login sampai ban_time berlalu atau ban dihapus manual — ini efek yang menyakitkan tetapi memang disengaja.

Menganalisis Log

Untuk memantau percobaan gagal dan kejadian ban, periksa log Authelia:

Menelusuri log autentikasi dan ban
authelia storage bans list
docker logs authelia 2>&1 | grep -iE "authentication attempt|banned"

authelia storage bans list menampilkan entri ban yang tersimpan di database. Baris log mencantumkan pengguna, IP asal, dan alasan kegagalan. Pola yang mencurigakan — banyak kegagalan dari satu IP atau satu akun — adalah tanda awal serangan.

Contoh Skenario Ban

Bayangkan konfigurasi max_retries: 3, find_time: 2m, dan ban_time: 15m. Seorang penyerang mencoba menebak password akun root tiga kali dalam satu menit. Authelia mencatat tiga kegagalan dalam jendela dua menit, lalu memblokir IP penyerang selama lima belas menit. Potongan log yang terlihat kira-kira seperti ini:

Potongan log saat ban terjadi
level=info msg="Authentication attempt for user 'root' failed"
level=info msg="Authentication attempt for user 'root' failed"
level=warning msg="Authentication ban applied to IP 203.0.113.5"

Perhatikan levelnya: kegagalan biasa dicatat di level info, sedangkan ban dinaikkan ke level warning. Memfilter log pada level warning di sistem alerting menjadi alarm sederhana yang memberitahu kalian bahwa penyerang sedang mencoba masuk.

Menyetel Regulation Tanpa Menjebak Pengguna

Regulation adalah keseimbangan antara keamanan dan kenyamanan. Beberapa pedoman:

  • Perhatikan asal pengguna. Jika pengguna sah datang dari satu IP NAT besar, misalnya kantor, ban berbasis IP bisa menjebak banyak orang sekaligus.
  • Bot dan scanner terus mencoba login dan menghabiskan kuota ban IP. Pertimbangkan max_retries sedikit lebih tinggi atau find_time lebih pendek untuk mengurangi ban palsu.
  • Gunakan ban berbasis user untuk akun admin yang paling berisiko, dan ban berbasis IP untuk lapisan umum.
  • Jangan menonaktifkan regulation; jika perlu longgar, naikkan max_retries dan ban_time, bukan menurunkannya ke nol.

Tip

Kalau pengguna sah sering terban dengan modes: ['ip'], ingat bahwa IP itu dipakai bersama banyak orang. Naikkan max_retries atau persempit find_time, lalu amati selama beberapa hari sebelum menarik kesimpulan.

Menangani Ban Manual

Kadang ban perlu dicabut atau dipasang secara manual — misalnya saat penyerang jelas menargetkan sebuah akun. CLI authelia storage bans memungkinkan hal ini:

Mengelola ban via CLI
authelia storage bans list
authelia storage bans delete --id 1

Dengan perintah di atas kalian bisa melihat siapa yang sedang diblokir, mencabut ban yang salah sasaran, dan mencatat ban yang dipasang otomatis oleh regulation.

Penutup

Di episode ini kalian memahami:

  • Regulation mencatat percobaan login gagal dan memblokir ketika ambang terlewati.
  • max_retries, find_time, dan ban_time mengendalikan kapan dan berapa lama ban terjadi.
  • Mode user dan ip menentukan subjek ban; keduanya bisa digabung.
  • Log dan CLI authelia storage bans menjadi alat monitoring serta pengelolaan.
  • Menyetel regulation adalah keseimbangan antara keamanan dan kenyamanan pengguna sah.

Regulation melindungi dari sisi aplikasi, tetapi lapisan berikutnya melindungi seluruh koneksi. Di episode 22, kita membahas Security Headers & HTTPS — HSTS, CSP, dan kebijakan TLS yang membuat browser dan pengguna tetap aman. Sampai jumpa!

Belajar Authelia - Brute Force Protection (Regulation) | Belajar Authelia