Двуфакторно удостоверяване в OpenVPN с Telegram бот

Статията описва как да конфигурирате OpenVPN сървъра, за да активирате двуфакторно удостоверяване с бот на Telegram, който ще изпрати заявка за потвърждение при свързване.

OpenVPN е добре познат, безплатен VPN сървър с отворен код, който се използва широко за осигуряване на сигурен достъп на служителите до вътрешните ресурси на организацията.

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

Използването на втория фактор намалява риска от неоторизиран достъп с 99% и изобщо не усложнява процеса на свързване за потребителите.

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

Принцип на действие

  1. OpenVPN използва приставката openvpn-plugin-auth-pam за удостоверяване
  2. Плъгинът проверява паролата на потребителя на сървъра и изисква втория фактор чрез RADIUS протокола в услугата Multifactor
  3. Мултифакторът изпраща съобщение до потребителя чрез Telegram бот с потвърждение за достъп
  4. Потребителят потвърждава заявката за достъп в чата на Telegram и се свързва с VPN

Инсталиране на OpenVPN сървър

В интернет има много статии, описващи процеса на инсталиране и конфигуриране на OpenVPN, така че няма да ги дублираме. Ако имате нужда от помощ, в края на статията има няколко връзки към уроци.

Многофакторна настройка

Отидете на Многофакторна система за управление, отидете на Ресурси и създайте нов VPN.
След създаването ще имате две опции: NAS ID и Споделена тайна, те ще са необходими за последваща конфигурация.

Двуфакторно удостоверяване в OpenVPN с Telegram бот

В секцията „Групи“ отидете на настройките на групата „Всички потребители“ и премахнете отметката от флага „Всички ресурси“, така че само потребителите от определена група да могат да се свързват към VPN сървъра.

Създайте нова група „VPN потребители“, деактивирайте всички методи за удостоверяване с изключение на Telegram и посочете, че потребителите имат достъп до създадения VPN ресурс.

Двуфакторно удостоверяване в OpenVPN с Telegram бот

В секцията „Потребители“ създайте потребители, които ще имат достъп до VPN, добавете „VPN потребители“ към групата и им изпратете връзка за настройка на втория фактор за удостоверяване. Потребителското име трябва да съвпада с това на VPN сървъра.

Двуфакторно удостоверяване в OpenVPN с Telegram бот

Настройване на OpenVPN сървър

Отворете файла /etc/openvpn/server.conf и добавете плъгин за удостоверяване с помощта на PAM модула

plugin /usr/lib64/openvpn/plugins/openvpn-plugin-auth-pam.so openvpn

Плъгинът може да се намира в директорията /usr/lib/openvpn/plugins/ или /usr/lib64/openvpn/plugins/ в зависимост от вашата система.

След това трябва да инсталирате модула pam_radius_auth

$ sudo yum install pam_radius

Отворете файла за редактиране /etc/pam_radius.conf и посочете адреса на RADIUS сървъра на Multifactor

radius.multifactor.ru   shared_secret   40

където:

  • radius.multifactor.ru — адрес на сървъра
  • shared_secret - копиране от съответния параметър за настройки на VPN
  • 40 секунди - изчакване на заявка с голям марж

Останалите сървъри трябва да бъдат изтрити или коментирани (поставете точка и запетая в началото)

След това създайте файл за услуга тип openvpn

$ sudo vi /etc/pam.d/openvpn

и поставете в него

auth    required pam_radius_auth.so skip_passwd client_id=[NAS-IDentifier]
auth    substack     password-auth
account substack     password-auth

първият ред свързва модула pam_radius_auth PAM с параметри:

  • skip_passwd - деактивира предаването на паролата на потребителя към Multifactor RADIUS сървъра (той не трябва да знае).
  • client_id - замества [NAS-Identifier] със съответния параметър от настройките на VPN ресурса.
    Всички възможни варианти са описани в документация за модула.

Вторият и третият ред включват системна проверка на данните за влизане, паролата и потребителските права на вашия сървър заедно с втория фактор за удостоверяване.

Рестартирайте OpenVPN

$ sudo systemctl restart openvpn@server

Настройка на клиента

Включете искане за потребителско име и парола в конфигурационния файл на клиента

auth-user-pass

Проверка

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

Двуфакторно удостоверяване в OpenVPN с Telegram бот

Единият бутон позволява достъп, вторият блокира.

Сега можете безопасно да запазите паролата на клиента, вторият фактор ще защити надеждно вашия OpenVPN сървър от неоторизиран достъп.

Ако нещо не работи

Постоянно проверявайте дали не сте пропуснали нещо:

  • Има потребител със зададена парола на сървъра с OpenVPN
  • Достъп от сървъра през UDP порт 1812 до адрес radius.multifactor.ru
  • Параметрите NAS-Identifier и Shared Secret са правилни
  • Потребител със същото име за вход е създаден в системата Multifactor и му е предоставен достъп до VPN потребителската група
  • Потребителят е конфигурирал метода за удостоверяване чрез Telegram

Ако не сте настройвали OpenVPN преди, прочетете разширена статия.

Инструкцията е направена с примери на CentOS 7.

Източник: www.habr.com

Добавяне на нов коментар