OpenVPN PAM: argument za prijavu je servis, a ne korisnik
Riječ nakon putanje auth-pam dodatka odabire PAM stog. Pročitajte taj stog, pronađite njegov izvor računa, pa ga testirajte s pamtester prije uređivanja profila.
Korisnik je dodat na server, lozinka je ispravno otkucana, a veza se i dalje završava s AUTH_FAILED. Linija dodatka obično objašnjava zašto: riječ nakon putanje dodatka je naziv PAM servisa i ona odlučuje koji stog modula odgovara na pitanje. To nije korisničko ime i nije pokazivač na datoteku s lozinkama koju OpenVPN sam čita.
Šta odabire druga riječ
Konfiguracijska linija prima putanju dodatka i jedan argument:
plugin /usr/lib/openvpn/plugins/openvpn-plugin-auth-pam.so openvpnTaj se argument prosljeđuje PAM biblioteci kao naziv servisa, zbog čega se pokreće stog na /etc/pam.d/openvpn. Ako tamo upišete login, dobivate interaktivnu politiku prijave, sa svim modulima koje ta politika uključuje na vašoj distribuciji.
Koristite putanju dodatka koju pruža instalirani paket, a ne putanju kopiranu s drugog hosta. Naziv datoteke i direktorij razlikuju se među distribucijama, a pogrešna putanja pada pri pokretanju s greškom učitavanja dodatka, a ne pri autentifikaciji.
Gdje stog zapravo čita račune
PAM je dispečer. Servisna datoteka redom navodi module, a prvi koji može odgovoriti odlučuje o ishodu. Stog koji poziva pam_unix čita lokalne račune; stog koji poziva LDAP ili RADIUS modul šalje vjerodajnice sasvim drugdje.
Pročitajte datoteku na koju naziv servisa upućuje, uključujući sve što ona uključuje:
cat /etc/pam.d/openvpn
grep -H pam_ /etc/pam.d/openvpn /etc/pam.d/common-authAko stog delegira na direktorij, dodavanje lokalnog računa ne mijenja ništa. Ako čita lokalne račune, stvaranje korisnika u direktoriju također ne mijenja ništa. Račun mora postojati tamo gdje stog gleda, i to je cijela dijagnoza u većini ovih izvještaja.
Jedan pokušaj, dva zapisa
Povežite jednu neuspjelu vezu na obje strane. OpenVPN zapis pokazuje rezultat dodatka i odbijanje klijenta; sistemski zapis autentifikacije pokazuje koji je modul radio i šta je odlučio. Čitanje oba u istom vremenskom okviru razdvaja nedostajuću servisnu datoteku od pozadinskog vremenskog prekida. Praznina u zapisu autentifikacije znači da stog uopće nije dosegnut.
journalctl -u openvpn-server@server --since "-2 min"
journalctl -t sshd -t sudo --since "-2 min"Testirajte servis izravno alatom koji govori PAM, da ne otklanjate greške istovremeno na VPN-u i na stogu. Uspješan izravni test s istim nazivom servisa i računom svodi problem na to kako daemon prosljeđuje vjerodajnice, a ne na sam račun.
pamtester openvpn alice authenticateAko izravni test padne s istim vjerodajnicama koje rade na konzoli, stog ne čita izvor računa koji ste pretpostavili. Ako uspije, pogledajte razgovor koji dodatak vodi i ono što je klijent stvarno poslao. Pokrenite ga jednom i s namjerno pogrešnom lozinkom, da vidite razliku između odbijanja i greške modula. Ta dva ishoda izgledaju identično u VPN zapisu, a ovdje potpuno različito.
Namjenski servis je bolji od uređivanja datoteke za prijavu
Dajte VPN-u vlastitu servisnu datoteku kada se njegovi zahtjevi razlikuju od interaktivne prijave, što je obično slučaj. Uređivanje login ili common-auth mijenja politiku za svaki program koji ih uključuje, a sljedeća osoba koja otklanja greške u nepovezanom problemu prijave nasljeđuje vašu izmjenu.
Kopirajte module koji su vam potrebni u malu servisnu datoteku, držite redoslijed eksplicitnim i zabilježite ko je vlasnik. Ta datoteka je ono što treba provjeriti kada se čini da poništavanje lozinke nema efekta.
Šta klijent šalje, a šta ne
Klijent daje korisničko ime i lozinku kroz podržani upit ili datoteku. Serverski dodatak prosljeđuje te vrijednosti u PAM razgovor; ne čita ih iz serverske konfiguracije. Serverska linija koja izgleda kao da definira lozinku to ne čini, i nikakvo uređivanje profila neće stvoriti račun.
Korisničko ime i lozinka mogu postojati uz klijentske certifikate, a omogućavanje PAM-a nije razlog da prestanete provjeravati certifikate. Zadržite slojeve koje je raspoređivanje namjeravalo i popravite samo izvor računa.
Prihvat je dvosmjeran: predviđeni račun uspijeva, a račun koji treba odbiti i dalje pada. Datoteka README dodatka auth-pam dokumentuje argument servisa i pozadinske sisteme koje može pokrivati; to je mjesto gdje se potvrđuje rješenje koje pokušavate izgraditi.