Гид по технологиям

Настройка OpenVPN с WiKID Strong Authentication

6 min read Сетевая безопасность Обновлено 28 Nov 2025
OpenVPN + WiKID: настройка двухфакторной аутентификации
OpenVPN + WiKID: настройка двухфакторной аутентификации

Введение

Эти инструкции описывают настройку двухфакторной аутентификации с помощью WiKID Strong Authentication (коммерческий/частично открытый проект) и OpenVPN (SSL-VPN) на Linux-сервере через Radius Pluggable Authentication Module (PAM). Мы последовательно настроим PAM для работы с RADIUS, OpenVPN — для использования PAM и одноразовых паролей, а затем создадим сетевого клиента (network client) на WiKID-сервере. Установка пакетов не рассматривается подробно — фокус на конфигурации.

Important: перед началом сделайте резервные копии файлов конфигурации: /etc/pam.d/sshd, /etc/raddb/server, конфигурации OpenVPN (server.conf) и настроек WiKID.

Что требуется (кратко)

  • Linux-сервер с установленным OpenVPN и доступом к PAM.
  • Установленный модуль pam_radius_auth (PAM RADIUS).
  • WiKID Strong Authentication сервер с правами администратора для создания доменов и сетевых клиентов.
  • Доступ к конфигурации RADIUS на OpenVPN-сервере и к интерфейсу WiKID.

Ключевые понятия (одной строкой)

  • PAM: Pluggable Authentication Modules — система модулей аутентификации в Linux.
  • RADIUS: протокол удалённой аутентификации для централизованного управления доступом.
  • OTP: одноразовый пароль, генерируемый токеном WiKID.

1. Конфигурация PAM

  1. Установите pam_radius_auth согласно документации дистрибутива или с сайта проекта PAM Radius.

  2. Отредактируйте файл /etc/pam.d/sshd, чтобы разрешить аутентификацию через RADIUS. Откройте файл в редакторе:

vi /etc/pam.d/sshd
  1. Перейдите ко второй строке, войдите в режим вставки и добавьте строку:
auth     sufficient   /lib/security/pam_radius_auth.so

и поместите её непосредственно выше строки:

auth     required     pam_stack.so service=system-auth

Примечание по флагам: “sufficient” — если аутентификация через RADIUS успешна, дополнительные шаги не требуются. Если RADIUS не прошёл, будет использоваться системная проверка. Если вы хотите требовать строго RADIUS, используйте “required”.

  1. Сохраните файл и выйдите (Esc, затем :wq).

  2. Настройте файл /etc/raddb/server (создайте, если его нет):

vi /etc/raddb/server

Добавьте строку с IP-адресом WiKID-сервера и общим секретом (shared secret). Пример в файле может содержать пример локального сервера:

127.0.0.1   secret        1

Добавьте под ней строку, подставив IP вашего WiKID-сервера:

routableIPaddress   shared_secret     1

Здесь routableIPaddress — публичный/маршрутизируемый IP WiKID-сервера, shared_secret — сложная строка, которую позже нужно ввести в WiKID при создании сетевого клиента.

Важно: позже на WiKID нужно будет создать сетевого клиента с этим же shared_secret.

2. Конфигурация OpenVPN для двухфакторной аутентификации

OpenVPN поддерживает плагины аутентификации. Мы используем плагин для интеграции с PAM.

  1. Установите OpenVPN согласно официальной инструкции вашего дистрибутива.

  2. На стороне сервера добавьте в server.conf строку для подключения PAM-плагина (проверьте путь к openvpn-auth-pam.so в вашей системе):

plugin /usr/share/openvpn/plugin/lib/openvpn-auth-pam.so login
  1. Если вы хотите убрать обязательное требование клиентских сертификатов (чтобы использовать username+OTP), добавьте также:
client-cert-not-required
username-as-common-name

Важно: снятие требования клиентских сертификатов не отключает шифрование туннеля — оно просто устраняет необходимость выдачи индивидуальных cert/key для каждого клиента.

  1. На клиенте в файле client.conf или client.ovpn укажите, что пользователь должен вводить пароль при подключении:
auth-user-pass

Если вы убирали на сервере требование сертификатов, закомментируйте соответствующие строки у клиента:

#cert client.crt
#key client.key

Замечание: при использовании OTP пользователь обычно вводит в поле пароля комбинацию: статический пароль (если есть) + OTP или только OTP в зависимости от политики WiKID.

3. Конфигурация WiKID сервера

Дальше настроим WiKID для приёма RADIUS-запросов от OpenVPN/PAM.

  1. Залогиньтесь в административную консоль WiKID.

  2. На вкладке Domains (Домены) создайте новый домен (если домен уже есть — пропустите этот шаг).

  • Нажмите Create a New Domain (Создать новый домен).
  • Введите требуемую информацию.
  • Domain Server code — IP адрес без точек, дополненный нулями до нужной длины (в текущем интерфейсе WiKID это поле формируется как цифровой код; пример: 216.239.51.99 -> 216239051099). Нажмите “Create”.
  1. Перейдите на вкладку Network Clients (Сетевые клиенты) и выберите Create a new Network Client (Создать новый сетевой клиент).
  • В поле IP Address укажите IP OpenVPN-сервера.
  • Выберите RADIUS и домен, который вы создали.
  • Нажмите Add (Добавить).
  1. На следующей странице введите shared secret — тот самый, что вы указали в /etc/raddb/server на OpenVPN-сервере. Поле Return Attributes обычно оставляют пустым.

Важно: после добавления сетевого клиента перезапустите WiKID RADIUS-демон. Выполните на WiKID-сервере команды:

stop
start

Это загрузит новую конфигурацию в WiKID Radius-сервер.

4. Проверка работоспособности

  1. С клиента попробуйте подключиться к OpenVPN. Клиент должен запросить имя пользователя и пароль.

  2. Введите учётные данные и одноразовый пароль (в зависимости от политики: возможно нужно вводить static+OTP или только OTP).

  3. Проверьте журналы:

  • На OpenVPN-сервере: /var/log/openvpn.log или systemd-journal (journalctl -u openvpn).
  • На RADIUS/PAM стороне: /var/log/auth.log или /var/log/secure (в зависимости от дистрибутива).
  • На WiKID-сервере: логи WiKID (админ-интерфейс или /var/log/…, в зависимости от установки).

Критерии приёмки

  • Клиент успешно подключается к OpenVPN, аутентификация проходит через WiKID RADIUS.
  • При отсутствии или неверном OTP подключение отклоняется.
  • Логи на OpenVPN и WiKID показывают запрос/ответ RADIUS без ошибок shared secret.

Типичные проблемы и их устранение

  • Невалидный shared secret: убедитесь, что строка идентична в /etc/raddb/server и в записи сетевого клиента WiKID.
  • RADIUS-запросы блокируются firewall: откройте UDP порт 1812 (или используемый порт) между серверами.
  • Неправильный IP клиента в настройке WiKID: проверьте, что IP OpenVPN-сервера совпадает с адресом в записи Network Client.
  • Путь к плагину openvpn-auth-pam.so отличается: найдите файл в системе (locate openvpn-auth-pam.so) и укажите точный путь.

Безопасность и рекомендации

  • Используйте сильный shared secret, храните его в защищённом месте.
  • По возможности комбинируйте OTP и client-cert для наиболее строгой защиты.
  • Ограничьте доступ к WiKID админ-интерфейсу по IP и используйте HTTPS.
  • Логи RADIUS содержат чувствительную информацию — ограничьте доступ к ним.

Альтернативы и когда это не подходит

  • Если вам требуется централизованная система SSO с поддержкой SAML/LDAP, рассмотрите интеграцию OpenVPN с RADIUS, а сам RADIUS — с LDAP/AD.
  • Если вы используете облачные решения и хотите native MFA, можно рассмотреть облачные провайдеры MFA (например, сервисы с OpenID Connect) вместо WiKID.
  • WiKID может не подходить, если нужны сертифицированные решения с конкретными аудиторскими требованиями — уточняйте требования регуляторов.

Мини‑методология (пошагово)

  1. Сделать бэкап конфигов.
  2. Установить pam_radius_auth.
  3. Внести запись в /etc/pam.d/sshd.
  4. Добавить запись в /etc/raddb/server.
  5. Добавить плагин PAM в server.conf OpenVPN.
  6. Создать Network Client в WiKID и задать shared secret.
  7. Перезапустить WiKID RADIUS (stop/start).
  8. Протестировать подключение и проверить логи.

Ролевые чеклисты

Администратор системы:

  • Установить и обновить OpenVPN.
  • Установить pam_radius_auth.
  • Изменить /etc/pam.d/sshd и /etc/raddb/server.

Сетевой администратор / DevOps:

  • Настроить firewall (UDP 1812/1813) между OpenVPN и WiKID.
  • Проверить маршрутизацию и доступность IP.

WiKID-администратор:

  • Создать домен (если нужно).
  • Добавить Network Client с правильным IP и shared secret.
  • Перезапустить WiKID RADIUS.

Краткий глоссарий (1 строка)

  • Network Client: запись на RADIUS-сервере, описывающая доверенный источник RADIUS-запросов (IP+shared secret).

Сводка

  • Интеграция OpenVPN + PAM + WiKID обеспечивает добавочный уровень безопасности через OTP.
  • Основные точки внимания: синхронность shared secret, маршрутизация/межсетевые экраны и корректные пути плагинов.
  • Тестируйте на отдельной стендовой среде перед продакшеном.

Дополнительно: если понадобится, можно построить SSH-ворота (SSH gateway) — требовать WiKID для входа на OpenVPN/SSH-узел, затем разрешить доступ к внутренним хостам по ключу только с этого узла; это уменьшает площадь атаки для SSH.


Источник: адаптировано из оригинальных шагов по интеграции OpenVPN и WiKID Strong Authentication.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Стать техподдержкой Linux — практическое руководство
Linux

Стать техподдержкой Linux — практическое руководство

UnrealCEFSubprocess: высокая загрузка CPU и RAM
Техподдержка

UnrealCEFSubprocess: высокая загрузка CPU и RAM

Вставка и связывание диаграмм в Google Slides
Презентации

Вставка и связывание диаграмм в Google Slides

Как создать викторину в Google Формах
Образование

Как создать викторину в Google Формах

Просмотр и управление картами в Google Chrome
Руководство

Просмотр и управление картами в Google Chrome

Как восстановить повреждённый PDF в Windows
Windows

Как восстановить повреждённый PDF в Windows