Ograničite prijave na OpenVPN na jednu grupu PAM politikom
Namjenska PAM usluga može primati samo članove VPN grupe, bez diranja sistemskih pravila prijave. Usmjerite auth-pam dodatak na nju i testirajte ishode.
Neka svaki račun može normalno da se prijavi, ali dopustite samo jednoj grupi da koristi VPN. PAM može izraziti tu razliku bez drugog spremišta lozinki, a OpenVPN dodatak može se usmjeriti na uslugu koja sadrži samo provjere koje namjeravate. Trik je izgraditi tu uslugu bez slučajnog nasljeđivanja sistemskog steka.
Ovo uputstvo počinje od naziva usluge dodatka, gradi politiku i zatim testira tri ishoda koja su važna: člana, autsajdera s ispravnom lozinkom i loše vjerodajnice.
Zašto zasebna PAM usluga
Dodatak auth-pam uzima naziv usluge kao svoj argument. Taj naziv odabire datoteku pod /etc/pam.d, a stek u toj datoteci je ono što se izvršava tijekom prijave na VPN. Ako proslijedite isti naziv koji koristi sistemska prijava, nasljeđujete svaku odluku u tom steku, uključujući one dodane kasnije iz nepovezanih razloga.
Umjesto toga stvorite zasebnu uslugu. Pođite od radnog steka koji se već autentificira prema namjeravanom backendu, poput lokalne datoteke lozinki, SSSD-a ili imeničke usluge, pa dodajte pravilo podobnosti. Kopiranje dva retka u praznu datoteku česta je pogreška: istek lozinke, zaključavanje računa i druge provjere mogu živjeti u steku koji niste kopirali.
Odvajanje usluge također ograničava domet štete. Pravilo samo za VPN u zajedničkom steku može svima uskratiti SSH ili konzolni pristup, što promjenu pristupa pretvara u ispad.
Pisanje pravila za grupu
Provjera podobnosti pripada fazi računa, nakon što su vjerodajnice provjerene. Pravilo poput account required pam_succeed_if.so user ingroup vpnusers dopušta nastavak obrade samo kad je autentificirani korisnik član te grupe.
Taj je redak fragment, a ne potpuna usluga. Ugradite ga tamo gdje do njega dolazi svaki prihvaćeni put i provjerite kontrolne zastavice oko njega. Kontrola sufficient ili skok ranije u steku može završiti obradu prije nego što se vaše pravilo izvrši, što ograničenje pretvara u prijedlog.
Ne dodajte use_uid iz navike. Bez njega modul procjenjuje korisnika koji se autentificira; s njim modul procjenjuje račun pod kojim radi proces OpenVPN, a to je obično root ili servisni račun i stoga nije osoba koja se prijavljuje.
Članstvo u grupi dolazi iz sistemskog razrješavanja identiteta, a ne iz imena koje prepoznajete. Za korisnike iz imenika potvrdite da isti backend odgovara na grupne upite za tog korisnika, jer je lokalna grupa s poznatim imenom drugi objekt od imeničke grupe istog imena.
Zamke reda i identiteta
Smjestite pravilo za grupu nakon steka autentifikacije i nakon svake provjere koja mora ostati na snazi, ali prije ili uz provjere računa koje zadržavate. PAM procjenjuje module redoslijedom datoteke, a kontrolna vrijednost u svakom retku odlučuje je li neuspjeh konačan.
Pazite na dvostruke stekove. Čest obrazac je uključivanje koje već sadrži pravilo za račun, a zatim vaše vlastito pravilo za grupu, što daje dvije odluke gdje ste očekivali jednu. Pročitajte uključenu datoteku, ne samo onu koju ste uredili. Brz način da vidite stvarni redoslijed jest čitati datoteku odozgo prema dolje i bilježiti svaku kontrolnu vrijednost.
Ostavite ostale uvjete za prijem netaknutima. Uspješna lozinka ne zamjenjuje provjere certifikata, drugi faktor ili autorizaciju nakon veze, i ova politika nije zamjena ni za jedno od toga. Ona samo odlučuje je li račun podoban da se razmotri za VPN pristup.
Testiranje članova, autsajdera i loših lozinki
Testirajte tri slučaja prije nego što politiku smatrate gotovom. Član se uspješno povezuje. Valjani račun izvan grupe autentificira svoju lozinku, ali mu se uskraćuje VPN pristup. Pogrešna lozinka za bilo koji račun odbija se u fazi autentifikacije, a ne pravilom za grupu.
Promatrajte pogrešku vidljivu klijentu i poslužiteljski dnevnik zajedno, jer oba neuspjeha osobi koja se povezuje mogu izgledati slično. Razlika je važna za podršku: autsajderu s ispravnom lozinkom potrebna je promjena grupe, dok pogrešna lozinka zahtijeva ponovno postavljanje vjerodajnica.
Držite drugu sesiju otvorenom dok uređujete PAM i provjerite i običnu SSH prijavu nakon promjene. Smisao zasebne usluge je da sistemska prijava ostane netaknuta, a jedini način da to znate jest testirati je.
Ako se nešto pokvari, vratite prethodnu datoteku usluge iz kopije. Pravilo koje želite jednostavno je izreći: članstvo čini račun podobnim za VPN pristup i svaka druga obavezna provjera i dalje vrijedi.