В статията се описва настройката на OpenVPN сървър за включване на двуфакторна автентикация с Telegram бот, който ще изпраща искане за потвърждение при свързване.
OpenVPN е широко известен безплатен VPN сървър с отворен код, който се използва навсякъде за осигуряване на защитен достъп на служителите до вътрешните ресурси на организацията.
Като средство за автентикация при свързване към VPN сървъра обикновено се използва комбинация от ключ и потребителско име/парола. При това, запазената на клиента парола превръща целия набор в един фактор, който не осигурява необходимото ниво на сигурност. Когато нападател получи достъп до клиентския компютър, той получава достъп и до VPN сървъра. Особено това важи за свързването от машини с Windows.
Използването на втори фактор намалява риска от неправомерен достъп с 99% и напълно не улеснява процеса на свързване за потребителите.
На момента ще отбележа, че за реализацията е необходимо да се свържете с външния сървър за автентикация multifactor.ru, в който за вашите нужди можете да използвате безплатен тарифен план.
Принцип на работа
- OpenVPN използва плъгин openvpn-plugin-auth-pam за проверка на автентичността.
- Плъгинът проверява паролата на потребителя на сървъра и изисква втори фактор чрез RADIUS протокол в услугата на Мултифактора.
- Мултифакторът изпраща съобщение до потребителя чрез Telegram бот с искане за потвърждение на достъпа.
- Потребителят потвърджава искането за достъп в Telegram чата и се свързва с VPN.
Инсталация на OpenVPN сървър.
В интернет има много статии, описващи процеса на инсталация и настройка на OpenVPN, затова няма да ги дублираме. Ако имате нужда от помощ, в края на статията има няколко линка към обучителни материали.
Настройка на Мултифактора.
Влезте в , влезте в секцията "Ресурси" и създайте нов VPN.
След създаването ще имате достъп до два параметъра: NAS-IDentifier. и Shared Secret., те ще са необходими за последващата настройка.

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

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

Настройка на 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 сървера Multi-фактор
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 сървера Multi-фактор паролата на потребителя (не е необходимо той да знае).
- client_id — поставете вместо [NAS-Identifier] съответния параметър от настройките на VPN ресурса.
Всички възможни параметри са описани в .
Вторият и третият ред включват системна проверка на логин, парола и права на потребителя на вашия сървър заедно с вторичния фактор за удостоверяване.
Рестартирайте OpenVPN
$ sudo systemctl restart openvpn@serverНастройка на клиента
Включете в конфигурационния файл на клиента искане за логин и парола на потребителя
auth-user-passПроверка
Стартирайте клиента за OpenVPN, свържете се със сървера, посочете логин и парола. От Telegram бот ще получите искане за достъп с два бутона

Едната бутон дава достъп, а другата блокира.
Сега спокойно можете да запазите паролата на клиента, вторичният фактор надеждно ще защити вашия OpenVPN сървър от неразрешен достъп.
Ако нещо не работи
Последователно проверете дали не сте пропуснали нещо:
- На сървера с OpenVPN има потребител с установена парола
- Серверът е отворен за достъп по UDP порт 1812 на адрес radius.multifactor.ru
- Параметрите NAS-Identifier и Shared Secret са посочени коректно
- В системата Мултифактор е добавен потребител с такъв същия логин и е получил достъп до групата на потребителите VPN
- Потребителят е настроил метод за автентикация чрез Telegram
Ако не сте настройвали OpenVPN преди, прочетете .
Инструкцията е изготвена с примери за CentOS 7.
Източник: habr.com
