Memblokir alamat dan mengunci akun adalah dua mekanisme berbeda, dan keduanya gagal ke arah berlawanan. Larangan alamat menghentikan satu sumber dan akun target tetap dapat dijangkau dari tempat lain; kunci akun menghentikan identitas itu di mana-mana, termasuk di laptop pengguna sendiri.

Untuk VPN yang menyerahkan autentikasi ke PAM, penghitungnya adalah apa yang dijangkau tumpukan PAM, bukan apa yang dicatat pendengar.

Dua penghitung, dua korban berbeda

Pembatas laju melihat sumber dan bertanya berapa percobaan yang datang darinya belakangan ini. Kunci melihat identitas dan bertanya berapa kegagalan yang dikumpulkan akun itu. Yang pertama melindungi ketersediaan, yang kedua melindungi kredensial; keduanya tidak saling menggantikan.

Karena itu kalimat kami memblokir IP setelah lima kegagalan bukan jawaban atas laporan pengisian kredensial. Penyerang berganti sumber, masing-masing mendapat sedikit percobaan, dan akun tidak pernah dihitung. Sebaliknya, kunci tanpa kendali sumber memungkinkan penyerang menjaga akun tetap terkunci tanpa batas dengan sengaja gagal.

Kedua kendali juga punya kisah pemulihan berbeda. Larangan alamat berakhir pada pengatur waktu yang tak perlu dipikirkan siapa pun; kunci akun mungkin memerlukan administrator, masa tunggu terdokumentasi, atau reset mandiri.

Temukan penyimpanan yang sudah memiliki hitungan

Sebelum menambahkan apa pun, ketahui apakah penyimpanan kegagalan sudah ada. Akun Linux lokal, layanan direktori, dan penyedia identitas eksternal masing-masing menyimpan hitungannya sendiri, dan modul PAM di depannya membuat yang kedua alih-alih memperluas yang pertama.

grep -rnE 'faillock|pam_tally|pam_unix' /etc/pam.d/
ls -l /etc/pam.d/ | head -20

Baca berkas layanan yang benar-benar disebut VPN dan ikuti baris penyertaannya. Di banyak distribusi layanan VPN menyertakan berkas bersama, artinya hitungan yang Anda setel juga berlaku untuk SSH dan login lokal.

Jika direktori sudah memberlakukan kunci, pertanyaan bergunanya adalah bagaimana percakapan PAM mencapai keputusan itu dan bagaimana VPN melaporkannya. Hitungan lokal di atasnya tidak menjadi penghitung direktori, dan kedua kebijakan bisa berbeda soal kapan akun terbuka.

pam_faillock punya tiga posisi panggilan, bukan satu

Modul memisahkan tiga operasi yang biasanya dikaburkan satu baris salinan: memeriksa apakah akun sudah terkunci, mencatat kegagalan, dan membersihkan riwayat setelah berhasil.

Di sinilah migrasi dari modul penghitung lama biasanya keliru. Menyalin baris dari contoh pam_tally2 yang berfungsi ke tumpukan pam_faillock bukan penggantian nama; penyiapan terdokumentasi berbeda, dan panggilan di tempat salah dapat mencatat kegagalan tanpa pernah memeriksanya.

faillock --user alice
faillock --user alice --reset

Alat inspeksi adalah cara tercepat melihat apakah penghitungnya nyata: ia menampilkan kegagalan tercatat untuk sebuah akun dan dapat menghapusnya. Jika kegagalan terkendali tidak mengubah keluaran itu, posisi panggilannya salah.

Nama layanan khusus bukan isolasi

Memberi VPN berkas layanan PAM sendiri membuat kebijakan yang dimaksud terlihat, tetapi tidak membatasi efeknya. Penyertaan berkas bersama menarik apa pun yang dilakukan berkas itu, termasuk hitungan untuk seluruh sistem.

Putuskan secara tegas apakah kunci hanya mencakup akses VPN atau setiap layanan yang mengautentikasi akun yang sama. Kedua jawaban dapat dipertahankan; kegagalannya adalah percaya Anda memilih satu sementara tumpukan menerapkan yang lain.

Lalu hitung biayanya. Penyerang dapat memicu kunci, dan pengguna yang menderita adalah pemilik akun. Ambang, masa tunggu, dan jalur pemulihan administratif adalah bagian kebijakan, dan pemulihan tidak boleh bergantung pada konfigurasi ulang VPN saat insiden.

Terima urutannya, bukan satu penolakan

Uji dengan identitas khusus di bawah rencana yang disetujui, dan uji rantai alih-alih satu peristiwa: akun sah terautentikasi, kata sandi salah yang disengaja menggeser penghitung, kunci yang dikonfigurasi berlaku, dan pemulihan terdokumentasi mengembalikan akses.

faillock --user test-vpn-01
journalctl -u openvpn-server@lab -n 30 --no-pager | grep -i 'auth\|pam'

Periksa perilaku berhasil sama telitinya dengan perilaku gagal. Jika login berhasil tidak membersihkan riwayat, akun akan terkunci setelah penumpukan lambat kesalahan biasa. Jika ia membersihkan semua dari setiap layanan, penghitungnya lebih lemah daripada klaim kebijakan.

Akhirnya, hentikan klien tanpa pengawasan sebelum menyatakan menang. Kredensial tersimpan yang mencoba ulang di latar belakang akan membuat kegagalan lagi beberapa menit setelah pemulihan dan mengunci akun kembali. Pembatasan laju berbasis sumber bisa tetap sebagai kendali tambahan, tetapi itu bukan kebijakan akun.

Artikel terkait