Настройка OpenVPN с WiKID Strong Authentication
Введение
Эти инструкции описывают настройку двухфакторной аутентификации с помощью 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
Установите pam_radius_auth согласно документации дистрибутива или с сайта проекта PAM Radius.
Отредактируйте файл /etc/pam.d/sshd, чтобы разрешить аутентификацию через RADIUS. Откройте файл в редакторе:
vi /etc/pam.d/sshd- Перейдите ко второй строке, войдите в режим вставки и добавьте строку:
auth sufficient /lib/security/pam_radius_auth.soи поместите её непосредственно выше строки:
auth required pam_stack.so service=system-authПримечание по флагам: “sufficient” — если аутентификация через RADIUS успешна, дополнительные шаги не требуются. Если RADIUS не прошёл, будет использоваться системная проверка. Если вы хотите требовать строго RADIUS, используйте “required”.
Сохраните файл и выйдите (Esc, затем :wq).
Настройте файл /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.
Установите OpenVPN согласно официальной инструкции вашего дистрибутива.
На стороне сервера добавьте в server.conf строку для подключения PAM-плагина (проверьте путь к openvpn-auth-pam.so в вашей системе):
plugin /usr/share/openvpn/plugin/lib/openvpn-auth-pam.so login- Если вы хотите убрать обязательное требование клиентских сертификатов (чтобы использовать username+OTP), добавьте также:
client-cert-not-required
username-as-common-nameВажно: снятие требования клиентских сертификатов не отключает шифрование туннеля — оно просто устраняет необходимость выдачи индивидуальных cert/key для каждого клиента.
- На клиенте в файле client.conf или client.ovpn укажите, что пользователь должен вводить пароль при подключении:
auth-user-passЕсли вы убирали на сервере требование сертификатов, закомментируйте соответствующие строки у клиента:
#cert client.crt
#key client.keyЗамечание: при использовании OTP пользователь обычно вводит в поле пароля комбинацию: статический пароль (если есть) + OTP или только OTP в зависимости от политики WiKID.
3. Конфигурация WiKID сервера
Дальше настроим WiKID для приёма RADIUS-запросов от OpenVPN/PAM.
Залогиньтесь в административную консоль WiKID.
На вкладке Domains (Домены) создайте новый домен (если домен уже есть — пропустите этот шаг).
- Нажмите Create a New Domain (Создать новый домен).
- Введите требуемую информацию.
- Domain Server code — IP адрес без точек, дополненный нулями до нужной длины (в текущем интерфейсе WiKID это поле формируется как цифровой код; пример: 216.239.51.99 -> 216239051099). Нажмите “Create”.
- Перейдите на вкладку Network Clients (Сетевые клиенты) и выберите Create a new Network Client (Создать новый сетевой клиент).
- В поле IP Address укажите IP OpenVPN-сервера.
- Выберите RADIUS и домен, который вы создали.
- Нажмите Add (Добавить).
- На следующей странице введите shared secret — тот самый, что вы указали в /etc/raddb/server на OpenVPN-сервере. Поле Return Attributes обычно оставляют пустым.
Важно: после добавления сетевого клиента перезапустите WiKID RADIUS-демон. Выполните на WiKID-сервере команды:
stop
startЭто загрузит новую конфигурацию в WiKID Radius-сервер.
4. Проверка работоспособности
С клиента попробуйте подключиться к OpenVPN. Клиент должен запросить имя пользователя и пароль.
Введите учётные данные и одноразовый пароль (в зависимости от политики: возможно нужно вводить static+OTP или только OTP).
Проверьте журналы:
- На 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 может не подходить, если нужны сертифицированные решения с конкретными аудиторскими требованиями — уточняйте требования регуляторов.
Мини‑методология (пошагово)
- Сделать бэкап конфигов.
- Установить pam_radius_auth.
- Внести запись в /etc/pam.d/sshd.
- Добавить запись в /etc/raddb/server.
- Добавить плагин PAM в server.conf OpenVPN.
- Создать Network Client в WiKID и задать shared secret.
- Перезапустить WiKID RADIUS (stop/start).
- Протестировать подключение и проверить логи.
Ролевые чеклисты
Администратор системы:
- Установить и обновить 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.
Похожие материалы
Стать техподдержкой Linux — практическое руководство
UnrealCEFSubprocess: высокая загрузка CPU и RAM
Вставка и связывание диаграмм в Google Slides
Как создать викторину в Google Формах
Просмотр и управление картами в Google Chrome