Ein brukar vart lagd til på serveren, passordet vart skrive rett, og tilknytinga endar framleis med AUTH_FAILED. Plugin-linja forklarer vanlegvis kvifor: ordet etter plugin-stien er eit PAM-tenestenamn, og det avgjer kva stakk av modular som svarar på spørsmålet. Det er ikkje eit brukarnamn, og det er ikkje ein peikar til ei passordfil som OpenVPN les sjølv.

Kva det andre ordet vel

Konfigurasjonslinja tek ein plugin-sti og eitt argument:

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

Det argumentet vert sendt til PAM-biblioteket som tenestenamn, noko som gjer stakken i /etc/pam.d/openvpn til den som køyrer. Skriv login der, og du får i staden den interaktive innloggingspolicyen, med dei modulane den policyen tilfeldigvis inneheld på distribusjonen din.

Bruk plugin-stien den installerte pakken tilbyr, ikkje ein sti kopiert frå ein annan vert. Filnamnet og katalogen varierer mellom distribusjonar, og ein feil sti feilar ved oppstart med ein plugin-lastefeil, ikkje ved autentisering.

Kvar stakken faktisk les kontoar

PAM er ein distributør. Tenestefila listar opp modular i rekkjefølgje, og den første som kan svare avgjer resultatet. Ein stakk som kallar pam_unix, les lokale kontoar; ein stakk som kallar ein LDAP- eller RADIUS-modul, sender legitimasjonen heilt andre stader.

Les fila tenestenamnet løyser til, inkludert alt ho inkluderer:

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

Viss stakken delegerer til ein katalog, endrar det ingenting å leggje til ein lokal konto. Viss han les lokale kontoar, endrar det heller ingenting å opprette brukaren i katalogen. Kontoen må finnast der stakken ser, og det er heile diagnosen i dei fleste av desse rapportane.

Eitt forsøk, to loggar

Korreler éi mislukka tilknyting på begge sider. OpenVPN-loggen viser plugin-resultatet og avvisinga frå klienten; systemet sin autentiseringslogg viser kva modul som køyrde og kva han avgjorde. Å lese dei i same tidsvindauge er det som skil ei manglande tenestefil frå ein backend-timeout. Eit hol i autentiseringsloggen tyder på at stakken aldri vart nådd.

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

Test tenesta direkte med eit verktøy som snakkar PAM, så du ikkje feilsøkjer VPN-en og stakken samstundes. Ein vellukka direkte test med same tenestenamn og konto snevrar problemet inn til korleis daemonen sender legitimasjon, ikkje til kontoen sjølv.

pamtester openvpn alice authenticate

Viss den direkte testen feilar med dei same legitimasjonane som fungerer i ein konsoll, les ikkje stakken kontokjelda du antok. Viss han lukkast, sjå på samtalen plugin-modulen køyrer, og på det klienten faktisk sende. Køyr han også éin gong med eit medvite feil passord, så du ser skillnaden mellom ei avvising og ein modulfeil. Dei to utfalla ser identiske ut i VPN-loggen og heilt forskjellige her.

Ei eiga teneste slår å redigere innlogginga

Gi VPN-en si eiga tenestefil når krava avvik frå interaktiv innlogging, noko dei vanlegvis gjer. Redigering av login eller common-auth endrar policyen for kvart program som inkluderer dei, og den neste som feilsøkjer eit urelatert innloggingsproblem, arvar endringa di.

Kopier modulane du treng inn i ei lita tenestefil, hald rekkjefølgja eksplisitt, og noter kven som eig ho. Den fila er det ein sjekkar når ei passordtilbakestilling ser ut til å ikkje ha nokon effekt.

Kva klienten sender, og kva han ikkje sender

Klienten leverer eit brukarnamn og eit passord via den støtta førespurnaden eller fila si. Server-plugin-modulen sender desse verdiane inn i PAM-samtalen; han les dei ikkje frå konfigurasjonen til serveren. Ei linje på serversida som ser ut som ho definerer eit passord, gjer ikkje det, og inga profilredigering opprettar ein konto.

Brukarnamn og passord kan eksistere saman med klient sertifikat, og å slå på PAM er ikkje ein grunn til å slutte å verifisere sertifikat. Hald på laga utrullinga hadde tenkt, og reparer berre kontokjelda.

Godtaking er tosidig: den tiltenkte kontoen lukkast, og ein konto som bør avvisast, feilar framleis. Fila README for auth-pam-plugin-modulen dokumenterer tenesteargumentet og back-endane han kan stå framfor, og det er staden å stadfeste ordninga du prøver å byggje.

Relaterte artiklar