Оставете всеки акаунт да влиза нормално, но позволете само на една група да използва VPN. PAM може да изрази тази разлика без второ хранилище за пароли, а плъгинът OpenVPN може да бъде насочен към услуга, която съдържа само проверките, които имате предвид. Номерът е да изградите тази услуга, без случайно да наследите системен стек.

Разходката тук започва от името на услугата на плъгина, изгражда политика и след това тества трите резултата, които имат значение: член, външен човек с валидна парола и лоши идентификационни данни.

Защо отделна PAM услуга

Плъгинът auth-pam приема име на услуга като свой аргумент. Това име избира файл под /etc/pam.d и стекът в този файл е това, което се изпълнява при VPN вход. Ако подадете същото име, което използва системният вход, наследявате всяко решение в този стек, включително добавените по-късно по несвързани причини.

Вместо това създайте отделна услуга. Започнете от работещ стек, който вече удостоверява срещу предвидения backend, например локален файл с пароли, SSSD или директорна услуга, и след това добавете правилото за допустимост. Копирането на два реда в празен файл е честата грешка: изтичането на паролата, заключването на акаунта и други проверки може да живеят в стека, който не сте копирали.

Разделянето на услугата също ограничава обхвата на щетите. Правило само за VPN в споделен стек може да откаже SSH или конзолен достъп на всички, което превръща промяната на достъпа в прекъсване.

Писане на правилото за групата

Проверката за допустимост принадлежи във фазата на акаунта, след като идентификационните данни са проверени. Правило като account required pam_succeed_if.so user ingroup vpnusers позволява обработката да продължи само когато удостовереният потребител е член на тази група.

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

Не добавяйте use_uid по навик. Без него модулът оценява потребителя, който се удостоверява; с него модулът оценява акаунта, под който работи процесът OpenVPN, който обикновено е root или сервизен акаунт и следователно не е човекът, който влиза.

Членството в група идва от системното разрешаване на идентичности, а не от име, което разпознавате. За потребители от директорията потвърдете, че същият backend отговаря на групови заявки за този потребител, защото локална група с познато име е различен обект от директорната група със същото име.

Капани на реда и идентичността

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

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

Запазете другите изисквания за допускане непокътнати. Успешната парола не замества проверките на сертификата, втори фактор или оторизация след свързване, и тази политика не е заместител на никое от тях. Тя само решава дали акаунтът е допустим за разглеждане за VPN достъп.

Тестване на членове, външни и грешни пароли

Тествайте три случая, преди да счетете политиката за готова. Член се свързва успешно. Валиден акаунт извън групата удостоверява паролата си, но му се отказва VPN достъп. Грешна парола за който и да е акаунт се отхвърля на етапа на удостоверяване, а не от правилото за групата.

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

Дръжте втора сесия отворена, докато редактирате PAM, и проверете и обикновения SSH вход след промяната. Смисълът на отделната услуга е, че системният вход трябва да остане незасегнат и единственият начин да го знаете е да го тествате.

Ако нещо се счупи, възстановете предишния файл на услугата от копие. Правилото, което искате, е просто за формулиране: членството прави акаунта допустим за VPN достъп и всяка друга изискуема проверка продължава да важи.

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