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

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

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

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

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

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

Принцип на работа

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

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

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

Настройка на Мултифактора.

Отидете в система за управление на Мултифактора., влезте в раздел "Ресурси" и създайте нов VPN.
След създаването ще имате достъп до два параметъра: NAS-IDentifier. и Shared Secret., те ще бъдат необходими за последващата настройка.

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

В раздел "Групи" влезте в настройките на групата "All users" и махнете отметката "Всички ресурси", така че само потребители от определена група да могат да се свързват с VPN сървъра.

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

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

В секцията "Потребители" създайте потребители, които ще имат достъп до VPN, добавете ги в групата "VPN users" и им изпратете връзка за настройка на втори фактор на удостоверяване. Потребителското име трябва да съвпада с потребителското име на 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 сървера на Мултифактора

radius.multifactor.ru   shared_secret   40

където:

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

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

След това създайте файл за service-type 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 модула pam_radius_auth с параметрите:

  • skip_passwd — деактивира предаването на паролата на потребителя към 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 са посочени коректно
  • В системата Мултифактор е регистриран потребител с такова име и е предоставен достъп до групата потребители VPN
  • Потребителят настрои метода на удостоверяване чрез Telegram

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

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

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

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster