Настраиваем двухфакторную аутентификацию в OPNSense

Задача:
---------------------------------------------------------------Настроить двухфакторную аутентификацию на файерволе OPNSense с использованием Google Authenticator
TOTP (Time-based One-Time Password Algorithm, RFC 6238) — OATH-алгоритм создания одноразовых паролей для защищенной аутентификации.
Двухфакторная аутентификация в OPNsense, в рамках которой необходимо вводит не только постоянный пароль локальной учетной записи, но и ограниченный по сроку действия одноразовый пароль (Time-based One-Time Password). Такая авторизация позволяет более надежно защитить доступ к фаерволу.
Будем настраивать вариант с использованием телефона пользователя с установленным приложением Google Authenticator, которое и будет генерировать одноразовые пароли.
Для правильной настройки 2FA, необходимо проверить настройки сетевого времени. Это важная составляющая в процессе авторизации. Настройки времени доступны в меню: Services > Network Time > General

Если вы пользуетесь стандартным пользователем «root», советую сразу создать нового и пользователя по-умолчанию отключить. Настройки доступны в разделе: System > Access > Users. Для добавления пользования, воспользуемся кнопкой «Add»

Придумываем имя пользователя и пароль

Для пользователей веб-интерфейса, правильным будет выбрать «/sbin/nologin«, тем самым ограничить доступ пользователю к шелу, и добавить в группу «admins»

Если вы планируете пользоваться шелом, тогда стоит выбрать к примеру «/bin/sh». Стандартный шел пользователя root: «/usr/local/sbin/opnsense-shell«

Теперь переходим к добавлению сервера аутентификации: System > Access > Servers

Настраиваем следующим образом:
Descriptive name | TOTP server |
Type | Local + Timebased One Time Password |
Token length | 6 (для Google Authenticator используем длину 6) |
Time window | для Google Authenticator необходимо оставить пустым |
Grace period | для Google Authenticator необходимо оставить пустым |
Reverse token order | не отмечаем |

Возвращаемся к настройке пользователя, открываем на редактирование. Отмечаем «Generate new secret (160 bit)» и нажимаем «Save»

После сохранения появится ещё один пункт «OTP QR code», на против которого нажимаем кнопку «Click to unhide» и сканируем телефоном появившийся QR-код

В OPNSense есть возможность проверить сервер авторизации. Насти его можно в меню: System > Access > Tester. Не забываем, что в поле пароль — необходимо ввести одноразовый пароль + постоянный пароль вместе, без пробелов или других разделителей между паролями.

Теперь необходимо настроить службу для работы с двухфакторной аутентификацией. В OPNSense такой функционал поддерживается в:
- в веб-интерфейсе
- в Captive Portal
- на веб-прокси сервере
- в VPN-серверах (OpenVPN и IPsec)
В нашем случае нас интересует веб-интерфейс: System > Settings > Administration и указываем «TOTP server»

Изменить порядок ввода одноразового и постоянного пароля можно в настройках сервера аутентификации.
- одноразовый пароль + постоянный пароль (используется по умолчанию)
- постоянный пароль + одноразовый пароль — необходимо отметить «Reverse token order»

Интересно по аналогии с этой инструкции получится настроить двухфакторную идентификацию в pfSense?
openvpn с otp по-моему настраивал. я думаю они практически одинаковы, за плюс минус исключением