OpenVPN PAM: аргумент login је служба, а не корисник
Реч после путање до прикључка auth-pam бира PAM стек. Прочитајте тај стек, пронађите његов извор налога, а затим га тестирајте помоћу pamtester пре него што уредите профиле.
Корисник је додат на серверу, лозинка је унета исправно, а веза се ипак завршава са AUTH_FAILED. Обично разлог објашњава линија прикључка: реч после путање до прикључка је назив PAM службе и управо она одређује који скуп модула одговара на питање. То није корисничко име и није показивач на датотеку са лозинкама коју OpenVPN сам чита.
Шта бира друга реч
Конфигурациона линија прихвата путању до прикључка и један аргумент:
plugin /usr/lib/openvpn/plugins/openvpn-plugin-auth-pam.so openvpnТај аргумент се прослеђује PAM библиотеци као назив службе, па се зато извршава стек у /etc/pam.d/openvpn. Напишите login тамо и уместо тога ће важити политика интерактивне пријаве, са свим модулима које она укључује у вашој дистрибуцији.
Користите путању до прикључка коју даје инсталирани пакет, а не путању преписану са другог хоста. Назив датотеке и директоријум разликују се међу дистрибуцијама, а погрешна путања не успева при покретању са грешком при учитавању прикључка, а не при аутентификацији.
Одакле стек заиста чита налоге
PAM је диспечер. Датотека службе наводи модуле по реду, а први који може да одговори одлучује исход. Стек који позива pam_unix чита локалне налоге; стек који позива LDAP или RADIUS модул шаље акредитиве сасвим на друго место.
Прочитајте датотеку у коју се разрешава назив службе, укључујући све што она укључује:
cat /etc/pam.d/openvpn
grep -H pam_ /etc/pam.d/openvpn /etc/pam.d/common-authАко стек препушта решење директоријуму, додавање локалног налога не мења ништа. Ако чита локалне налоге, стварање корисника у директоријуму такође не мења ништа. Налог мора да постоји тамо где стек тражи, и то је цела дијагноза у већини оваквих извештаја.
Један покушај, два дневника
Пратите једну неуспелу везу на обе стране. Дневник OpenVPN-а показује резултат прикључка и одбијање клијента; системски дневник аутентификације показује који се модул извршио и шта је одлучио. Читање њих у истом временском прозору је оно што раздваја недостајућу датотеку службе од истека времена на позадинској страни. Празнина у дневнику аутентификације значи да стек уопште није достигнут.
journalctl -u openvpn-server@server --since "-2 min"
journalctl -t sshd -t sudo --since "-2 min"Тестирајте службу директно алатом који говори PAM, да не бисте истовремено дебаговали VPN и стек. Успешан директан тест са истим називом службе и истим налогом своди проблем на то како демон преноси акредитиве, а не на сам налог.
pamtester openvpn alice authenticateАко директан тест не успе са истим акредитивима који раде у конзоли, стек не чита извор налога који сте претпоставили. Ако успе, погледајте разговор који води прикључак и оно што је клијент заиста послао. Пустите га још једном са намерно погрешном лозинком, да видите разлику између одбијања и грешке у модулу. Та два исхода изгледају исто у дневнику VPN-а, а овде сасвим различито.
Посвећена служба боља је од уређивања login
Дајте VPN-у сопствену датотеку службе када се његови захтеви разликују од интерактивне пријаве, а обично се разликују. Уређивање login или common-auth мења политику за сваки програм који их укључује, а следећа особа која буде дебаговала неповезан проблем пријаве наследиће вашу измену.
Копирајте потребне модуле у малу датотеку службе, задржите редослед експлицитним и забележите ко је власник. Управо ту датотеку треба проверити када ресетовање лозинке изгледа да нема ефекта.
Шта клијент шаље, а шта не
Клијент доставља корисничко име и лозинку преко подржаног упита или датотеке. Серверски прикључак прослеђује те вредности у PAM разговор; он их не чита из конфигурације сервера. Серверска линија која изгледа као да дефинише лозинку то не ради, и ниједно уређивање профила неће створити налог.
Корисничко име и лозинка могу постојати заједно са клијентским сертификатима, а укључивање PAM-а није разлог да се прекине провера сертификата. Задржите слојеве које је распоређивање предвидело и поправите само извор налога.
Прихватање је двострано: предвиђени налог успева, а налог који треба да буде одбијен и даље не успева. README прикључка auth-pam описује аргумент службе и позадинске делове које може да опслужи, и управо тамо треба потврдити поставку коју градите.