OpenVPN PAM: argument prihlásenia je služba, nie používateľ
Slovo za cestou k modulu auth-pam vyberá zásobník PAM. Prečítajte si tento zásobník, nájdite jeho zdroj účtov a pred úpravou profilov ho otestujte nástrojom pamtester.
Používateľ bol pridaný na server, heslo bolo zadané správne a pripojenie sa napriek tomu končí na AUTH_FAILED. Riadok modulu zvyčajne vysvetľuje prečo: slovo za cestou k modulu je názov služby PAM a rozhoduje o tom, ktorý zásobník modulov odpovedá na otázku. Nie je to používateľské meno a nie je to ukazovateľ na súbor hesiel, ktorý OpenVPN číta sám.
Čo vyberá druhé slovo
Konfiguračný riadok berie cestu k modulu a jeden argument:
plugin /usr/lib/openvpn/plugins/openvpn-plugin-auth-pam.so openvpnTento argument sa knižnici PAM odovzdá ako názov služby, takže sa spustí zásobník v /etc/pam.d/openvpn. Ak tam napíšete login, namiesto toho dostanete interaktívnu politiku prihlásenia, presne s tými modulmi, ktoré táto politika na vašej distribúcii obsahuje.
Použite cestu k modulu, ktorú poskytuje nainštalovaný balík, nie cestu skopírovanú z iného hostiteľa. Názov súboru aj adresár sa medzi distribúciami líšia a nesprávna cesta zlyhá už pri štarte chybou načítania modulu, nie pri autentifikácii.
Odkiaľ zásobník účty skutočne číta
PAM je dispečer. Súbor služby vypisuje moduly v poradí a prvý, ktorý dokáže odpovedať, rozhoduje o výsledku. Zásobník, ktorý volá pam_unix, číta miestne účty; zásobník, ktorý volá modul LDAP alebo RADIUS, posiela prihlasovacie údaje úplne inam.
Prečítajte si súbor, na ktorý sa názov služby prekladá, vrátane všetkého, čo obsahuje:
cat /etc/pam.d/openvpn
grep -H pam_ /etc/pam.d/openvpn /etc/pam.d/common-authAk zásobník deleguje na adresár, pridanie miestneho účtu nič nezmení. Ak číta miestne účty, založenie používateľa v adresári tiež nič nezmení. Účet musí existovať tam, kam sa zásobník pozerá, a v tom spočíva celá diagnóza vo väčšine týchto hlásení.
Jeden pokus, dva záznamy
Spojte jedno neúspešné pripojenie na oboch stranách. Protokol OpenVPN ukazuje výsledok modulu a odmietnutie klienta; systémový protokol autentifikácie ukazuje, ktorý modul bežal a čo rozhodol. Čítanie oboch v rovnakom časovom okne je to, čo oddeľuje chýbajúci súbor služby od časového limitu backendu. Medzera v protokole autentifikácie znamená, že zásobník nebol vôbec zasiahnutý.
journalctl -u openvpn-server@server --since "-2 min"
journalctl -t sshd -t sudo --since "-2 min"Otestujte službu priamo nástrojom, ktorý hovorí s PAM, aby ste neladili VPN a zásobník zároveň. Úspešný priamy test s rovnakým názvom služby a účtom zúži problém na to, ako démon odovzdáva prihlasovacie údaje, nie na účet samotný.
pamtester openvpn alice authenticateAk priamy test zlyhá s rovnakými údajmi, ktoré fungujú na konzole, zásobník nečíta vami predpokladaný zdroj účtov. Ak uspeje, pozrite sa na konverzáciu, ktorú modul vedie, a na to, čo klient skutočne poslal. Spustite ho aj raz so zámerne nesprávnym heslom, aby ste videli rozdiel medzi odmietnutím a chybou modulu. Tieto dva výsledky vyzerajú v protokole VPN rovnako a tu úplne odlišne.
Vyhradená služba je lepšia než úprava prihlásenia
Dajte VPN vlastný súbor služby, keď sa jej požiadavky líšia od interaktívneho prihlásenia, čo zvyčajne robia. Úprava login alebo common-auth mení politiku pre každý program, ktorý ich zahŕňa, a ďalší človek, ktorý bude ladiť nesúvisiaci problém s prihlásením, zdedí vašu zmenu.
Skopírujte potrebné moduly do malého súboru služby, udržujte poradie explicitné a poznamenajte, kto ho vlastní. Práve tento súbor treba skontrolovať, keď sa zdá, že obnovenie hesla nemá žiadny účinok.
Čo klient posiela a čo nie
Klient dodáva používateľské meno a heslo prostredníctvom podporovanej výzvy alebo súboru. Modul servera odovzdáva tieto hodnoty do konverzácie PAM; nečíta ich z konfigurácie servera. Riadok na strane servera, ktorý vyzerá, že definuje heslo, to nerobí, a žiadna úprava profilu účet nevytvorí.
Používateľské meno a heslo môžu existovať vedľa klientskych certifikátov, a zapnutie PAM nie je dôvod prestať overovať certifikáty. Zachovajte vrstvy, ktoré nasadenie zamýšľalo, a opravte len zdroj účtov.
Prijatie je obojstranné: zamýšľaný účet uspeje a účet, ktorý by mal byť odmietnutý, stále zlyháva. Súbor README modulu auth-pam dokumentuje argument služby a backendy, ktoré môže zastrešiť, a práve tam si potvrdíte usporiadanie, ktoré sa snažíte postaviť.