Na strežniku je bil dodan uporabnik, geslo je bilo vneseno pravilno, povezava pa se vseeno konča z AUTH_FAILED. Vrstica vtičnika običajno pojasni, zakaj: beseda za potjo vtičnika je ime storitve PAM in odloča, kateri sklad modulov odgovori na vprašanje. To ni uporabniško ime in ni kazalec na datoteko z gesli, ki jo OpenVPN prebere sam.

Kaj izbere druga beseda

Konfiguracijska vrstica vzame pot vtičnika in en argument:

plugin /usr/lib/openvpn/plugins/openvpn-plugin-auth-pam.so openvpn

Ta argument se knjižnici PAM preda kot ime storitve, zato se zažene sklad v /etc/pam.d/openvpn. Če tja napišete login, namesto tega dobite interaktivno politiko prijave, z moduli, ki jih ta politika vključuje v vaši distribuciji.

Uporabite pot vtičnika, ki jo zagotavlja nameščeni paket, ne poti, kopirane z drugega gostitelja. Ime datoteke in imenik se med distribucijami razlikujeta, napačna pot pa spodleti že ob zagonu z napako nalaganja vtičnika, ne pri preverjanju pristnosti.

Kje sklad dejansko bere račune

PAM je razpošiljatelj. Datoteka storitve našteva module po vrsti, in prvi, ki lahko odgovori, odloči o izidu. Sklad, ki kliče pam_unix, bere lokalne račune; sklad, ki kliče modul LDAP ali RADIUS, pošlje poverilnice povsem drugam.

Preberite datoteko, v katero se razreši ime storitve, vključno z vsem, kar vsebuje:

cat /etc/pam.d/openvpn
grep -H pam_ /etc/pam.d/openvpn /etc/pam.d/common-auth

Če sklad delegira na imenik, dodajanje lokalnega računa ne spremeni ničesar. Če bere lokalne račune, tudi ustvarjanje uporabnika v imeniku ne spremeni ničesar. Račun mora obstajati tam, kamor sklad gleda, in to je celotna diagnoza v večini teh poročil.

En poskus, dva dnevnika

Povežite eno neuspešno povezavo na obeh straneh. Dnevnik OpenVPN prikazuje izid vtičnika in zavrnitev odjemalca; sistemski dnevnik preverjanja pristnosti prikazuje, kateri modul se je izvedel in kaj je odločil. Branje obeh v istem časovnem oknu je tisto, kar loči manjkajočo datoteko storitve od časovne omejitve zaledja. Vrzel v dnevniku preverjanja pristnosti pomeni, da sklad ni bil nikoli dosežen.

journalctl -u openvpn-server@server --since "-2 min"
journalctl -t sshd -t sudo --since "-2 min"

Preizkusite storitev neposredno z orodjem, ki govori PAM, da ne bi hkrati odpravljali napak v VPN in skladu. Uspešen neposreden preizkus z istim imenom storitve in računom zoži težavo na to, kako demonski proces posreduje poverilnice, ne na račun sam.

pamtester openvpn alice authenticate

Če neposredni preizkus spodleti z istimi poverilnicami, ki delujejo v konzoli, sklad ne bere vira računov, ki ste ga predpostavili. Če uspe, poglejte pogovor, ki ga izvaja vtičnik, in kaj je odjemalec dejansko poslal. Zaženite ga tudi enkrat z namenoma napačnim geslom, da vidite razliko med zavrnitvijo in napako modula. Ta dva izida sta v dnevniku VPN videti enaka, tukaj pa povsem različna.

Namenska storitev je boljša od urejanja prijave

Dajte VPN lastno datoteko storitve, ko se njegove zahteve razlikujejo od interaktivne prijave, kar se običajno zgodi. Urejanje login ali common-auth spremeni politiko za vsak program, ki ju vključuje, in naslednja oseba, ki bo odpravljala nepovezano težavo s prijavo, bo podedovala vašo spremembo.

Kopirajte potrebne module v majhno datoteko storitve, ohranite vrstni red izrecen in zabeležite, kdo je lastnik. Ta datoteka je tisto, kar je treba preveriti, ko se zdi, da ponastavitev gesla nima učinka.

Kaj odjemalec pošlje in kaj ne

Odjemalec priskrbi uporabniško ime in geslo prek podprtega poziva ali datoteke. Vtičnik strežnika te vrednosti posreduje v pogovor PAM; ne bere jih iz konfiguracije strežnika. Vrstica na strani strežnika, ki je videti, kot da določa geslo, tega ne počne, in nobeno urejanje profila ne bo ustvarilo računa.

Uporabniško ime in geslo lahko obstajata ob odjemalskih potrdilih, in omogočanje PAM ni razlog, da bi prenehali preverjati potrdila. Ohranite plasti, ki jih je načrtovala namestitev, in popravite le vir računov.

Sprejem je dvosmeren: predvideni račun uspe, račun, ki bi mu bilo treba zavrniti, pa še vedno spodleti. Datoteka README vtičnika auth-pam dokumentira argument storitve in zaledne sisteme, ki jih lahko pokriva, in tam je mesto za potrditev ureditve, ki jo poskušate zgraditi.

Sorodni članki