В настоящее время я настраиваю OpenVPN для предоставления доступа компании нескольким клиентам. Нашим требованием является использование сертификатов, защита паролем клиентских ключей, а также использование двухфакторной аутентификации (MFA) для каждого клиента.
У меня есть куча токенов Fortinet FortiToken 200, которые я хотел бы использовать, но я не могу найти никакой информации, показывающей, как использовать эти токены с чем-то вроде OpenVPN. Посмотрев еще немного, я также не могу найти никакой информации, показывающей, как можно использовать физический токен с OpenVPN.
Итак, мой вопрос: как использовать физический токен с OpenVPN? Я не могу использовать что-то вроде Google Authenticator, так как мы планируем также использовать VPN для клиентов через их смартфоны. Документация OpenVPN PKCS#11 how-to написана очень плохо.
Я начинаю верить, что если MFA является обязательным условием, то OpenVPN на данный момент просто не является жизнеспособным вариантом.
Спасибо за вашу помощь.
решение1
По сути:
- Установите драйвер pkcs#11 для вашего токена (обратитесь к производителю токена, если он не поставляет его).
- Сообщите OpenVPN использовать этот драйвер и перечислите доступные ключи на токене:
openvpn --show-pkcs11-ids /path/to/pkcs11/driver.so
В вашем конфигурационном файле укажите модуль и сериализованный идентификатор для вашего ключа из вывода
--show-pkcs11-ids
, например:pkcs11-providers /usr/lib/x86_64-linux-gnu/pkcs11/gnome-keyring-pkcs11.so
pkcs11-id Gnome\x20Keyring/1\x2E0/1\x3AUSER\x3ADEFAULT/Gnome2\x20Key\x20Storage/417AEDAAB81FEF6AEBD1EC43D76A630CAAA4722A
(Обязательно экранируйте все обратные косые черты в pkcs-id, например, чтобы Gnome\x20Keyring
стало Gnome\\x20Keyring
.)