Статията описва настройката на 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., те ще бъдат необходими за последващата настройка.

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

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