Paskyros užraktas prieš adreso draudimą: kur OpenVPN iš tikrųjų skaičiuoja
Šaltinio draudimas ir paskyros užraktas skaičiuoja skirtingus dalykus. Raskite saugyklą, kuri turi nepavykimų skaitiklį, prieš pasirinkdami slenkstį PAM pagrįstai VPN.
Blokuoti adresą ir užrakinti paskyrą yra du skirtingi mechanizmai, ir jie nepavyksta priešingomis kryptimis. Adreso draudimas sustabdo vieną šaltinį, o tikslinė paskyra lieka pasiekiama iš kitur; paskyros užraktas sustabdo šią tapatybę visur, net vartotojo pačio nešiojamajame kompiuteryje.
VPN, kuris autentifikavimą perduoda PAM, skaitiklis yra tai, ką pasiekia PAM stekas, o ne tai, ką užrašė klausytojas.
Du skaitikliai, dvi skirtingos aukos
Greičio ribotuvas žiūri į šaltinį ir klausia, kiek bandymų neseniai iš jo atėjo. Užraktas žiūri į tapatybę ir klausia, kiek nepavykimų paskyra sukaupė. Pirmasis saugo prieinamumą, antrasis – prisijungimo duomenis; nė vienas nepakeičia kito.
Todėl sakinys blokuojame IP po penkių nepavykimų nėra atsakymas į pranešimą apie prisijungimo duomenų užpildymą. Užpuolikas keičia šaltinius, kiekvienas gauna mažai bandymų, o paskyra niekada neskaičiuojama. Atvirkščiai, užraktas be šaltinio kontrolės leidžia užpuolikui tyčia nepavykstant laikyti paskyrą užrakintą neribotai.
Abi kontrolės turi skirtingas atkūrimo istorijas. Adreso draudimas baigiasi laikmačiu, apie kurį niekam nereikia galvoti; paskyros užraktui gali prireikti administratoriaus, dokumentuoto laukimo laikotarpio ar savitarnos atkūrimo.
Raskite saugyklą, kuri jau turi skaičių
Prieš ką nors pridėdami, išsiaiškinkite, ar nepavykimų saugykla jau yra. Vietinė Linux paskyra, katalogo tarnyba ir išorinis tapatybės teikėjas kiekvienas turi savo skaičių, o prieš juos įdėtas PAM modulis sukuria antrą, o ne išplečia pirmą.
grep -rnE 'faillock|pam_tally|pam_unix' /etc/pam.d/
ls -l /etc/pam.d/ | head -20
Perskaitykite paslaugos failą, kurį VPN tikrai nurodo, ir sekite jo įtraukimo eilutes. Daugelyje distribucijų VPN paslauga įtraukia bendrą failą, o tai reiškia, kad derinamas skaičius galioja ir SSH, ir vietiniams prisijungimams.
Jei katalogas jau taiko užraktą, naudingas klausimas yra kaip PAM pokalbis pasiekia tą sprendimą ir kaip VPN apie jį praneša. Viršuje pridėtas vietinis skaičius netampa katalogo skaitikliu, ir dvi politikos gali nesutarti, kada paskyra atsirakina.
pam_faillock turi tris kvietimo vietas, ne vieną
Modulis atskiria tris operacijas, kurias viena nukopijuota eilutė paprastai sulieja: patikrinti, ar paskyra jau užrakinta, įrašyti nepavykimą ir išvalyti istoriją po sėkmės.
Čia migracija iš senesnio skaičiavimo modulio paprastai suklysta. Eilutės kopijavimas iš veikiančio pam_tally2 pavyzdžio į pam_faillock steką nėra pervadinimas; dokumentuota sąranka skiriasi, o netinkamoje vietoje esantis kvietimas gali įrašyti nepavykimus jų niekada netikrindamas.
faillock --user alice
faillock --user alice --reset
Patikros įrankis yra greičiausias būdas pamatyti, ar skaitiklis tikras: jis rodo įrašytus paskyros nepavykimus ir gali juos išvalyti. Jei kontroliuojamas nepavykimas nekeičia šios išvesties, kvietimo vieta neteisinga.
Atskiras paslaugos pavadinimas nėra izoliacija
Suteikti VPN savo PAM paslaugos failą padaro numatytą politiką matomą, bet neapriboja poveikio. Bet koks bendro failo įtraukimas atsineša tai, ką tas failas daro, įskaitant visos sistemos skaičius.
Aiškiai nuspręskite, ar užraktas turi apimti tik VPN prieigą, ar kiekvieną paslaugą, kuri autentifikuoja tą pačią paskyrą. Abu atsakymai apginami; klaida yra tikėti, kad pasirinkote vieną, kai stekas įgyvendina kitą.
Tada įvertinkite kainą. Užraktą gali sukelti užpuolikas, o kenčia paskyros savininkas. Slenkstis, laukimo laikotarpis ir administracinis atkūrimo kelias yra politikos dalis, o atkūrimas neturi priklausyti nuo VPN perkonfigūravimo incidento metu.
Priimkite seką, o ne vieną atmetimą
Testuokite paskirtomis tapatybėmis pagal patvirtintą planą ir testuokite grandinę, o ne vieną įvykį: galiojanti paskyra autentifikuojasi, tyčia neteisingas slaptažodis pajudina skaitiklį, sukonfigūruotas užraktas įsigalioja, o dokumentuotas atkūrimas grąžina prieigą.
faillock --user test-vpn-01
journalctl -u openvpn-server@lab -n 30 --no-pager | grep -i 'auth\|pam'
Sėkmės elgseną stebėkite taip pat atidžiai kaip nepavykimo. Jei sėkmingas prisijungimas neišvalo istorijos, paskyra užsirakins po lėto įprastų klaidų kaupimo. Jei jis išvalo viską iš visų paslaugų, skaitiklis silpnesnis, nei teigia politika.
Galiausiai sustabdykite nepriežiūrimus klientus prieš skelbdami pergalę. Išsaugoti prisijungimo duomenys, kurie fone bando iš naujo, atkurs nepavykimus praėjus kelioms minutėms po atkūrimo ir vėl užrakina paskyrą. Šaltiniu pagrįstas greičio ribojimas gali likti kaip papildoma kontrolė, bet tai nėra paskyros politika.