Kunci akaun berbanding larangan alamat: di mana OpenVPN sebenarnya mengira
Larangan sumber dan kunci akaun mengira perkara yang berbeza. Cari storan yang memiliki pembilang kegagalan sebelum memilih ambang untuk VPN berasaskan PAM.
Menyekat alamat dan mengunci akaun ialah dua mekanisme berbeza, dan kedua-duanya gagal ke arah bertentangan. Larangan alamat menghentikan satu sumber dan akaun sasaran masih boleh dicapai dari tempat lain; kunci akaun menghentikan identiti itu di merata tempat, termasuk pada komputer riba pengguna sendiri.
Bagi VPN yang menyerahkan pengesahan kepada PAM, pembilang ialah apa yang dicapai tindanan PAM, bukan apa yang direkodkan pendengar.
Dua pembilang, dua mangsa berbeza
Pengehad kadar melihat satu sumber dan bertanya berapa banyak cubaan datang daripadanya baru-baru ini. Kunci melihat identiti dan bertanya berapa banyak kegagalan akaun itu kumpulkan. Yang pertama melindungi ketersediaan, yang kedua melindungi kelayakan; tiada satu menggantikan yang lain.
Sebab itu ayat kami menyekat IP selepas lima kegagalan bukan jawapan kepada laporan pengisian kelayakan. Penyerang menukar sumber, setiap satu mendapat sedikit cubaan, dan akaun tidak pernah dikira. Sebaliknya, kunci tanpa kawalan sumber membolehkan penyerang mengekalkan akaun terkunci tanpa had dengan sengaja gagal.
Kedua-dua kawalan juga mempunyai kisah pemulihan berbeza. Larangan alamat tamat pada pemasa yang tiada siapa perlu fikirkan; kunci akaun mungkin memerlukan pentadbir, tempoh menunggu yang didokumenkan atau set semula layan diri.
Cari storan yang sudah memiliki kiraan
Sebelum menambah apa-apa, ketahui sama ada storan kegagalan sudah wujud. Akaun Linux setempat, perkhidmatan direktori dan pembekal identiti luaran masing-masing menyimpan kiraan sendiri, dan modul PAM di hadapannya mencipta yang kedua dan bukannya melanjutkan yang pertama.
grep -rnE 'faillock|pam_tally|pam_unix' /etc/pam.d/
ls -l /etc/pam.d/ | head -20
Baca fail perkhidmatan yang benar-benar dinamakan VPN dan ikut baris kemasukannya. Dalam banyak pengedaran perkhidmatan VPN menyertakan fail kongsi, bermakna kiraan yang anda laraskan juga terpakai pada SSH dan log masuk setempat.
Jika direktori sudah menguatkuasakan kunci, soalan bergunanya ialah bagaimana perbualan PAM sampai kepada keputusan itu dan bagaimana VPN melaporkannya. Kiraan setempat di atasnya tidak menjadi pembilang direktori, dan kedua-dua dasar boleh berselisih tentang bila akaun dibuka.
pam_faillock mempunyai tiga kedudukan panggilan, bukan satu
Modul memisahkan tiga operasi yang biasanya dikaburkan oleh satu baris salinan: menyemak sama ada akaun sudah terkunci, merekod kegagalan dan membersihkan sejarah selepas berjaya.
Di sinilah penghijrahan daripada modul pengiraan lama biasanya tersilap. Menyalin baris daripada contoh pam_tally2 yang berfungsi ke dalam tindanan pam_faillock bukan penamaan semula; persediaan yang didokumenkan berbeza, dan panggilan di tempat salah boleh merekod kegagalan tanpa pernah menyemaknya.
faillock --user alice
faillock --user alice --reset
Alat pemeriksaan ialah cara terpantas untuk melihat sama ada pembilang itu nyata: ia memaparkan kegagalan yang direkodkan bagi sesuatu akaun dan boleh memadamkannya. Jika kegagalan terkawal tidak mengubah keluaran itu, kedudukan panggilan itu salah.
Nama perkhidmatan khusus bukan pengasingan
Memberi VPN fail perkhidmatan PAM sendiri menjadikan dasar yang dimaksudkan kelihatan, tetapi tidak mengehadkan kesannya. Sebarang kemasukan fail kongsi membawa masuk apa yang fail itu lakukan, termasuk kiraan untuk seluruh sistem.
Putuskan dengan jelas sama ada kunci hanya meliputi akses VPN atau setiap perkhidmatan yang mengesahkan akaun yang sama. Kedua-dua jawapan boleh dipertahankan; kegagalannya ialah percaya anda memilih satu sedangkan tindanan melaksanakan yang lain.
Kemudian ambil kira kos. Penyerang boleh mencetuskan kunci, dan pengguna yang menderita ialah pemilik akaun itu. Ambang, tempoh menunggu dan laluan pemulihan pentadbiran semuanya sebahagian daripada dasar, dan pemulihan tidak boleh bergantung pada pengkonfigurasian semula VPN semasa insiden.
Terima urutan, bukan satu penolakan
Uji dengan identiti yang ditetapkan di bawah pelan yang diluluskan, dan uji rantaian dan bukan satu peristiwa: akaun sah mengesahkan, kata laluan salah yang disengajakan menggerakkan pembilang, kunci yang dikonfigurasikan berkuat kuasa, dan pemulihan yang didokumenkan memulangkan akses.
faillock --user test-vpn-01
journalctl -u openvpn-server@lab -n 30 --no-pager | grep -i 'auth\|pam'
Periksa tingkah laku kejayaan sama teliti seperti tingkah laku kegagalan. Jika log masuk berjaya tidak membersihkan sejarah, akaun akan terkunci selepas pengumpulan perlahan kesilapan biasa. Jika ia membersihkan segala-galanya daripada setiap perkhidmatan, pembilang itu lebih lemah daripada yang didakwa oleh dasar.
Akhirnya, hentikan klien tanpa pengawasan sebelum mengisytiharkan kemenangan. Kelayakan tersimpan yang mencuba semula di latar belakang akan mencipta semula kegagalan beberapa minit selepas pemulihan dan mengunci akaun itu semula. Pengehadan kadar berasaskan sumber boleh kekal sebagai kawalan tambahan, tetapi ia bukan dasar akaun.