Двухфакторная аутентификация (далее 2FA) (также часто называется двухфакторной авторизацией) — это метод защиты доступа, при котором пользователю для входа в систему необходимо подтвердить свою личность с помощью двух различных типов (факторов) данных, например пароль от учетной записи и TOTP- код или SMS/Push уведомление. Данный подход существенно снижает риск несанкционированного доступа, так как одной компрометации пароля злоумышленнику недостаточно для получения доступа.
В системе WNAM 2 для использования 2FA при использовании протокола TACACS+ для доступа администраторов к сетевому оборудованию имеется несколько способов проверки второго фактора авторизации:
Двухфакторная авторизация может использоваться как с локальными учетными записями администраторов оборудования, настроенных в WNAM 2 ("Device admin" → "Администраторы оборудования"), так и для доменных учетных записей ("Объекты" → "Службы каталогов")
Ниже приведена таблица совместимости методов 2FA для разных типов учетных записей:
| 2FA | Локальная учетная запись | Доменная учетная запись |
|---|---|---|
RADIUS через одноразовый код | Поддерживается | Поддерживается |
RADIUS через Push | Поддерживается | Поддерживается |
TOTP код портала самообслуживания | Не поддерживается | Поддерживается |
Для всех вариантов проверки второго фактора и типов учетных записей в правилах TACACS+ ("Device admin" → "Правила TACACS+") в разделе "Проверка администратора" должно быть включено требование двухфакторной авторизации.
Пример правил TACACS+ для локальных и доменных учетных записей:
Локальные УЗ:
Доменные УЗ:
В данном руководстве в качестве тестового будет использоваться коммутатор Cisco vIOS
Switch>sh version Cisco IOS Software, vios_l2 Software (vios_l2-ADVENTERPRISEK9-M), Experimental Version 15.2(20200924:215240) [sweickge-sep24-2020-l2iol-release 135]
Для проверки авторизации через локальные учетные записи будет использоваться УЗ test_admin, через доменные учетные записи - vpupkin. Одноразовый код для проверки через RADIUS - 111111
В качестве внешнего RADIUS серврера будет использоваться отдельная инсталляция WNAM 2, на которой также будут заведены вышеуказанные учетные записи где, в зависимости от способа прверки второго фактора, в качестве пароля будет указан либо пароль от учетной записи либо правильный одноразовый код. В реальной эксплуатации логика проверки учетных данных и принятия решения об авторизации может быть любой.
Адрес сервера WNAM 2 - 172.16.133.51, внешнего RADIUS сервера - 172.16.133.35
Важно!
RADIUS через одноразовый код
Принцип работы
После успешной проверки учетных данных администратора сетевое устройство запрашивает у авторизующегося администратора OTP код, после чего по протоколу RADIUS отправляет имя пользователя и введенный код на внешний RADIUS сервер, указанный в настройках WNAM 2 ("Настройки" → "Двухфакторная авторизация"). Если внешний RADIUS сервер возвращает Access-Accept, то происходит успешная авторизация администратора на устройстве. В случае если ответ Access-Reject, код запрашивается повторно (количество повторов настраивается в настройках 2FA) и если ответ также Access-Reject, то авторизации не происходит.
Данный способ поддерживает работу как с локальными учетными записями, так и с учетными записями из служб каталогов настроенных в WNAM 2 (доменные учетные записи)
Настройка
Для настройки необходимо настроить 2FA глобально (и также, как указано выше, необходимо включить требование использования двухфакторной авторизации в правиле TACACS+)
В меню "Настройки" → "Двухфакторная авторизация" необходимо включить способ "RADIUS", указать адрес (или адреса, если серверов несколько), секретный ключ, и указать в поле "Предпочтительный способ авторизации" - "Одноразовый код"
Пример работы
При попытке авторизации на тестовом коммутаторе по протоколу TACACS+ сначала проверяется правильность введенных учетных данных администратора. Вводим логин test_admin и пароль (admin)
Далее если учетные данные верные коммутатор запрашивает OTP код, вводим код 1111111 и после ввода на внешний RADIUS сервер отправляется запрос Access-Request содержащий имя пользователя в атрибуте User-Name и введенный код в атрибуте User-Password
Далее в ответ приходит Access-Accept и коммутатор разрешает нам доступ в консоль
username: test_admin password: Enter OTP code: Switch>
Обмен со сторонним RADIUS сервером:
RADIUS Protocol Code: Access-Request (1) Packet identifier: 0x22 (34) Length: 50 Authenticator: 13a9aecde9c34543ccbb93ad324a4ad9 [The response to this request is in frame 2] Attribute Value Pairs AVP: t=User-Name(1) l=12 val=test_admin Type: 1 Length: 12 [Length: 10] User-Name: test_admin AVP: t=User-Password(2) l=18 val=Decrypted: 111111 Type: 2 Length: 18 [Length: 16] User-Password: 111111 RADIUS Protocol Code: Access-Accept (2) Packet identifier: 0x22 (34) Length: 38 Authenticator: 11cb94c82ed7d389b23153f2d17568aa [This is a response to a request in frame 1] [Time from request: 15.288000 milliseconds] Attribute Value Pairs AVP: t=Message-Authenticator(80) l=18 val=2d4442772d98aef90220025f2d4f4e14 Type: 80 Length: 18 [Length: 16] Message-Authenticator: 2d4442772d98aef90220025f2d4f4e14
Соответственно в случае если OTP код введен неверный в ответ приходит Acces-Reject запрос повторяется (снова в сторону внешнего RADIUS сервера отправляется пакет Access-Request) и в случае повторного ввода неправильно кода RADIUS сервер снова отвечает Acces-Reject и следует отказ в авторизации:
username: test_admin password: Enter OTP code: Enter OTP code: Password confirmation failure username:
Лог TACACS сессии в WNAM 2:
RADIUS через Push в приложение
Принцип работы
После успешной проверки учетных данных администратора, после чего по протоколу RADIUS отправляется имя пользователя и пароль на внешний RADIUS сервер, указанный в настройках WNAM 2 ("Настройки" → "Двухфакторная авторизация"). Если внешний RADIUS сервер возвращает Access-Accept, то происходит успешная авторизация администратора на устройстве. В случае если ответ Access-Reject, код запрашивается повторно (количество повторов настраивается в настройках 2FA) и если ответ также Access-Reject, то авторизации не происходит. В данном способе при авторизации дополнительно никакой код не запрашивается, вся проверка проводится на внешнем сервере на основании введенных учетных данных.
Данный способ поддерживает работу как с локальными учетными записями, так и с учетными записями из служб каталогов настроенных в WNAM 2 (доменные учетные записи)
Настройка
Для настройки необходимо настроить 2FA глобально (и также, как указано выше, необходимо включить требование использования двухфакторной авторизации в правиле TACACS+)
В меню "Настройки" → "Двухфакторная авторизация" необходимо включить способ "RADIUS", указать адрес (или адреса, если серверов несколько), секретный ключ, и указать в поле "Предпочтительный способ авторизации" - "Пуш в приложение"
Пример работы
При попытке авторизации на тестовом коммутаторе по протоколу TACACS+ сначала проверяется правильность введенных учетных данных администратора. Вводим логин vpupkin и пароль (vpupkin)
Далее если учетные данные верные WNAM 2 отправляет на внешний RADIUS сервер запрос Access-Request содержащий имя пользователя в атрибуте User-Name и пароль в атрибуте User-Password
Далее в ответ приходит Access-Accept и коммутатор разрешает нам доступ в консоль
username: vpupkin password: Switch>
Обмен со сторонним RADIUS сервером:
RADIUS Protocol
Code: Access-Request (1)
Packet identifier: 0x2e (46)
Length: 47
Authenticator: b0275fc67943e9be93aa45e73358cf85
[The response to this request is in frame 41]
Attribute Value Pairs
AVP: t=User-Name(1) l=9 val=vpupkin
Type: 1
Length: 9
[Length: 7]
User-Name: vpupkin
AVP: t=User-Password(2) l=18 val=Decrypted: vpupkin
Type: 2
Length: 18
[Length: 16]
User-Password: vpupkin
RADIUS Protocol
Code: Access-Accept (2)
Packet identifier: 0x2e (46)
Length: 38
Authenticator: b3cfb19e654bf41cd15538be799c1a17
[This is a response to a request in frame 40]
[Time from request: 90.439000 milliseconds]
Attribute Value Pairs
AVP: t=Message-Authenticator(80) l=18 val=e7b3aaf9c2e51a0d204a4369343756d2
Type: 80
Length: 18
[Length: 16]
Message-Authenticator: e7b3aaf9c2e51a0d204a4369343756d2
Лог TACACS сессии в WNAM 2:
OTP код через портал самообслуживания
Важно!
Принцип работы
После успешной проверки учетных данных администратора сетевое устройство запрашивает у авторизующегося администратора OTP код, который администратор должен получить в одном из приложений для генерации кодов (например Яндекс Ключ, FreeOTP, Google Authenticator или любое другое работающее с использованием алгоритма TOTP) зарегистрировавшись на портале самообслуживания WNAM 2. После успешной проверки кода происходит авторизация администратора на устройстве.
Настройка
В первую очередь необходимо включить в настройках портала самообслуживания самостоятельную регистрацию одноразовых (TOTP) кодов ("NAC" → "Самообслуживание"):
Далее необходимо инициализировать OTP код на портале самообслуживания WNAM 2.
Портал самообслуживания находится по адресу https://<Адрес сервера WNAM 2>/selfservice (В данном примере https://172.16.133.51/selfservice/)
Администратор оборудования должен войти под своей доменной учетной записью на портал самообслуживания WNAM 2.
В разделе "Одноразовые ТОТР-коды" нужно нажать кнопку "Сформировать QR-код"
Появится окно с QR кодом для приложения для генерации TOTP кодов.
Далее при помощи такого приложения (в данном примере это FreeOTP, но можно использовать и любое другое приложение с таким функционалом) необходимо добавить данный код в приложение. Как только данный код добавлен нужно нажать на кнопку "Ввести код" и ввести код из приложения в портале самообслуживания.
Также в правилах TACACS необходимо включить требование двухфакторной авторизации в разделе "Проверка администратора"
Пример работы
При попытке авторизации на тестовом коммутаторе по протоколу TACACS+ сначала проверяется правильность введенных учетных данных администратора. Вводим логин vpupkin и пароль (vpupkin)
Далее если учетные данные верные происходит проверка OTP кода - появляется запрос на ввод OTP кода. Администратор вводит код из приложения для генерации кодов и если код верный - происходит авторизация администратора на оборудовании.
username: vpupkin password: Enter OTP code: Switch>









