OpenVPN PAM: d’Login-Argument ass en Déngscht, keen Benotzer
D’Wuert no dem Pad vum auth-pam-Plugin wielt e PAM-Stapel. Liest dee Stapel, fënns seng Kontquell, a test dee mat pamtester ier s du Profiler änderst.
E Benotzer gouf um Server ugeluecht, d’Passwuert gouf richteg agetippt, an d’Verbindung endt awer mat AUTH_FAILED. D’Plugin-Zeil erkläert meeschtens firwat: d’Wuert no dem Plugin-Pad ass en Numm vun engem PAM-Déngscht, an et entscheet, wéi engem Stapel vu Modulen d’Fro beäntwert. Et ass keen Benotzernumm an och kee Verweis op eng Passwuertdatei, déi OpenVPN selwer liest.
Wat dat zweet Wuert wielt
D’Konfiguratiounszeil hëlt en Plugin-Pad an een Argument:
plugin /usr/lib/openvpn/plugins/openvpn-plugin-auth-pam.so openvpnDat Argument gëtt der PAM-Bibliothéik als Déngschtnumm iwwerginn, wat de Stapel ënnert /etc/pam.d/openvpn deen ausféiert. Schrei login dohinner an du kriss amplaz d’interaktiv Loginpolitik, mat de Modulen, déi déi Politik op ärer Distributioun enthält.
Benotz de Plugin-Pad, deen den installéierte Paket ubitt, an net ee Pad, deen vun engem aneren Host kopéiert gouf. Den Dateinumm an den Dossier ënnerscheede sech tëscht Distributiounen, an e falschen Pad schléit beim Start mat engem Plugin-Ladefehler fehl, net bei der Authentifikatioun.
Wou de Stapel d’Konten tatsächlech liest
PAM ass en Dispatcher. D’Déngschtdatei zielt d’Modulen an der Rei op, an deen éischten, deen äntwere kann, entscheet d’Resultat. E Stapel, deen pam_unix oprufft, liest lokal Konten; e Stapel, deen en LDAP- oder RADIUS-Modul oprufft, schéckt d’Zougangsdaten komplett soss anzwousch.
Liest d’Datei, op déi den Déngschtnumm sech opléist, och alles abegraff, wat se enthält:
cat /etc/pam.d/openvpn
grep -H pam_ /etc/pam.d/openvpn /etc/pam.d/common-authWann de Stapel un en Dossier delegéiert, ännert en lokal Kont ze addéieren näischt. Wann en lokal Konten liest, ännert de Benotzer am Dossier ze schafen och näischt. De Kont muss do existéieren, wou de Stapel kuckt, an dat ass déi ganz Diagnos an de meeschten vun dëse Berichter.
Een Versuch, zwee Logbicher
Korreléier eng eenzeg fehlgeschloen Verbindung op béide Säiten. Den OpenVPN-Log weist d’Resultat vum Plugin an d’Refus vum Client; den Authentifikatiounslog vum System weist, wéi ee Modul gelaf ass a wat en decidéiert huet. Se an der selwechter Zäitfenster ze liesen ass dat, wat eng fehlend Déngschtdatei vun engem Backend-Timeout trennt. E Lach am Authentifikatiounslog bedeit, datt de Stapel guer net erreecht gouf.
journalctl -u openvpn-server@server --since "-2 min"
journalctl -t sshd -t sudo --since "-2 min"Test den Déngscht direkt mat engem Instrument, dat PAM schwätzt, sou datt s du net d’VPN an de Stapel gläichzäiteg debuggst. En erfollegräichen direkten Test mam selwechten Déngschtnumm a Kont beschränkt de Problem drop, wéi den Daemon Zougangsdaten weidergëtt, net op de Kont selwer.
pamtester openvpn alice authenticateWann den direkten Test mat deene selwechten Zougangsdaten fehlschléit, déi an enger Konsole funktionéieren, da liest de Stapel net d’Kontquell, déi s du ugeholl hues. Wann en erfollegräich ass, kuck d’Gespréich, dat de Plugin féiert, an dat, wat de Client tatsächlech geschéckt huet. Féier en och eng Kéier mat engem bewosst falsche Passwuert aus, sou datt s du den Ënnerscheed tëscht enger Refus an engem Modulfehler gesäis. Déi zwou Resultater gesinn am VPN-Log identesch aus an hei komplett anescht.
En eegene Déngscht ass besser wéi de Login ze änneren
Gëff der VPN hir eege Déngschtdatei, wann hir Ufuerderungen sech vum interaktive Login ënnerscheeden, wat se normalerweis maachen. D’Ännere vun login oder common-auth ännert d’Politik fir all Programm, dat se enthält, an déi nächst Persoun, déi en onverwännt Loginproblem debuggt, ierft däi Changement.
Kopéier d’Modulen, déi s du brauchs, an eng kleng Déngschtdatei, hal d’Reiefolleg explizit, a notéier, wiem se gehéiert. Déi Datei ass dat, wat een nokuckt, wann eng Passwuert-Zerécksetzung schéngt keng Wierkung ze hunn.
Wat de Client schéckt, a wat net
De Client liwwert e Benotzernumm a Passwuert iwwer seng ënnerstëtzten Uffro oder Datei. De Server-Plugin gëtt déi Wäerter an d’PAM-Gespréich weider; en liest se net aus der Serverkonfiguratioun. Eng Zeil op der Serversäit, déi ausgesäit wéi wann se e Passwuert definéiert, mécht dat net, an keng Profilännerung wäert e Kont schafen.
Benotzernumm a Passwuert kënnen niewent Clientzertifikater bestoen, an d’PAM aktivéieren ass kee Grond, d’Zertifikater net méi ze verificéieren. Hal d’Schichten, déi d’Deployment virgesinn huet, a reparéier just d’Kontquell.
D’Acceptatioun ass zweiseiteg: de virgesinnene Kont geléngt, an e Kont, deen u refuséiert soll ginn, schléit nach ëmmer fehl. D’Datei README vum auth-pam-Plugin dokumentéiert d’Déngschtargument an d’Backenden, déi se ka servéieren, an dat ass d’Plaz, fir d’Arrangement ze confirméieren, dat s du versuchs opzebauen.