Dvofaktorska avtentikacija v OpenVPN z Telegram botom

V članku je popsána konfigurace serveru OpenVPN pro aktivaci dvoufaktorové autentizace s Telegram bota, který bude posílat žádost o potvrzení při připojení.

OpenVPN je široce známý, bezplatný VPN server s otevřeným zdrojovým kódem, který se běžně používá k zajištění bezpečného přístupu zaměstnanců k interním zdrojům organizace.

Pro ověření při připojení k VPN serveru se obvykle používá kombinace klíče a uživatelského jména/hesla. Uložené heslo na klientovi činí z celého nastavení jediný faktor, který nezajišťuje dostatečnou úroveň bezpečnosti. Útočník, který získá přístup k počítači klienta, získá také přístup k VPN serveru. To se zvlášť týká připojení z počítačů běžících na Windows.

Použití druhého faktoru snižuje riziko neoprávněného přístupu o 99 % a vůbec nezkomplikuje proces připojení pro uživatele.

Hned na úvod musím zmínit, že pro realizaci bude potřeba připojení k externímu autentifikačnímu serveru multifactor.ru, kde je možné využít bezplatný tarif.

Načelo delovanja

  1. OpenVPN používá plugin openvpn-plugin-auth-pam pro ověřování.
  2. Plugin kontroluje heslo uživatele na serveru a žádá o druhý faktor prostřednictvím RADIUS protokolu v Multi-Factor službě.
  3. Multi-Factor prostřednictvím Telegram bota posílá uživateli zprávu s potvrzením přístupu.
  4. Uživatel potvrzuje žádost o přístup v Telegram chatu a připojuje se k VPN.

Instalace OpenVPN serveru.

Na internetu je mnoho článků, které popisují proces instalace a nastavení OpenVPN, proto je nebudeme duplicovat. Pokud potřebujete pomoc, na konci článku je několik odkazů na vzdělávací materiály.

Nastavení Multi-Factor.

Pojdite na systém správy Multi-Factor., přejděte do sekce "Zdroje" a vytvořte novou VPN.
Po vytvoření budou k dispozici dva parametry: NAS-IDentifier. in Shared Secret., ty budou potřebné pro následné nastavení.

Dvofaktorska avtentikacija v OpenVPN z Telegram botom

V sekci "Skupiny" přejděte do parametrů skupiny "Všichni uživatelé" a zrušte zaškrtnutí u "Všechny zdroje", aby se k VPN serveru mohli připojit pouze uživatelé z určité skupiny.

Создайте новую группу "VPN users", отключите все способы аутентификации, кроме Telegram, и укажите, что пользователи имеют доступ к созданному ресурсу VPN.

Dvofaktorska avtentikacija v OpenVPN z Telegram botom

В разделе "Пользователи" создайте пользователей, которые будут иметь доступ к VPN, добавьте их в группу "VPN users" и отправьте им ссылку для настройки второго фактора аутентификации. Логин пользователя должен совпадать с логином на VPN сервере.

Dvofaktorska avtentikacija v OpenVPN z Telegram botom

Настройка OpenVPN сервера

Odprite datoteko /etc/openvpn/server.conf и добавьте плагин для аутентификации с помощью PAM модуля

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

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

Далее необходимо установить модуль pam_radius_auth

$ sudo yum install pam_radius

Откройте для редактирования файл /etc/pam_radius.conf и укажите адрес RADIUS сервера Мультифактора

radius.multifactor.ru shared_secret 40

kde:

  • 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

Nastavitev stranke

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

auth-user-pass

Проверка

Запустите клиента для OpenVPN, подключитесь к серверу, укажите логин и пароль. От Telegram бота придет запрос доступа с двумя кнопками

Dvofaktorska avtentikacija v OpenVPN z Telegram botom

Одна кнопка разрешает доступ, вторая блокирует.

Теперь смело можно сохранять пароль на клиенте, второй фактор надежно защитит ваш OpenVPN сервер от несанкционированного доступа.

Если что-то не работает

Последовательно проверьте, что вы ничего не упустили:

  • На сервере с OpenVPN есть пользователь с установленным паролем
  • Na strežniku je odprt dostop preko UDP porta 1812 na naslov radius.multifactor.ru
  • Parametra NAS-Identifier in Shared Secret sta pravilno navedena
  • V sistemu Multifactor je vpisan uporabnik s isto prijavo in mu je omogočen dostop v skupino VPN uporabnikov
  • Uporabnik je nastavil način avtentikacije preko Telegrama

Če OpenVPN še niste nastavljali, si preberite obsežno članko.

Navodilo je izdelano s primeri za CentOS 7.

Izvor: habr.com

Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster