Четете тази фраза като твърдение за споделен обект и указател към функция, а не за парола. Същите думи могат да дойдат от OpenVPN плъгин, от стек на PAM, зареден за една услуга, или отвътре в демона RADIUS, и това са три различни разследвания. Първо определете процеса.

Проверките по-долу предполагат, че съобщението е излязло през интеграция с Linux-PAM при вход във VPN. Ако е дошло от собствената конфигурация на сървъра RADIUS, започнете от доказателствата на този демон.

Назовете процеса, преди да назовете пакета

Три компонента се наричат модул и нито един от тях не е взаимозаменяем. Плъгинът за удостоверяване на OpenVPN се зарежда от демона на VPN и реализира интерфейса за обратно извикване на този демон. Модулът на PAM е споделен обект, зареждан от libpam за именувана услуга, който реализира входни точки като pam_sm_authenticate. Модулът на FreeRADIUS е част от собствената конфигурация на този демон. Съобщение със същите думи може да дойде от всеки от трите, затова първият въпрос е кой ред в журнала го е създал.

Съпоставете времевата марка на един неуспешен опит в журнала на VPN и в системния журнал за удостоверяване, после прочетете редовете преди обобщението. Конкретното съобщение на зареждащия обикновено вече е там.

Прочетете грешката при зареждане, после входната точка

PAM съобщава за неизвестен модул, когато не може да зареди избрания споделен обект или когато зареденият обект не предоставя функцията, която изисква този ред от стека. Това са различни поправки: първата е проблем с път, пакетиране или ABI, а втората е несъответстваща входна точка. На реда за удостоверяване е нужен pam_sm_authenticate а на реда за акаунт — pam_sm_acct_mgmt, и библиотека, която реализира само единия от тях, ще се провали при другия, както кодът на диспечера показва. Намирането на файла на диска не доказва нито едното.

Вземането на библиотека с подобно име от друга дистрибуция или архитектура на процесора не е поправка и може да остави процес да зарежда модул, който никога не е тестван с неговия libpam. Проверете пакета, който притежава желания път, и реалната архитектура на файла, преди да промените каквото и да е.

Запазете гаранциите, които стекът даваше

Най-бързият начин да заглушите тази грешка е и най-лошият: маркирайте задължителен модул като незадължителен, изтрийте етапа за акаунт, или вмъкнете безусловно разрешение. Всяко от тях превръща провалена проверка в липсваща проверка и входът след това успява по причини, които никой не е предвидил. Нулирането на пароли и смяната на споделена тайна също не осигуряват липсваща функция, защото отказът настъпва, преди някакви идентификационни данни да стигнат до бекенда.

Многомодулен стек може да е изпълнил друг бекенд преди неуспешния ред, така че грешката не доказва, че не е изпратена заявка RADIUS.

Проверете входа, а не модула

След като несъответствието е поправено, тествайте действителния път за допускане. Валиден акаунт трябва да успее, невалидните данни за достъп трябва да се провалят, а забраненият акаунт трябва да бъде отказан. Уверете се също, че изискването за сертификат или допълнителен фактор все още се налага, защото поправен стек, който прескача етап, изглежда като успех от страна на клиента.

Чистото зареждане на модул е напредък, а не завършен тест.

Запишете кое име на услуга, кои файлове с политики и кои входни точки са участвали, заедно с единствения опит, който използвахте като доказателство. Именно този запис превръща следващия случай в справка, а не в археологическо упражнение.

Подобни статии