Настройка Cisco AnyConnect VPN with 2FA (ActiveDirectory and Certificate) через ASDM

Сразу хочу отметить, — не собираюсь устраивать холивар на счет того, что лучше — ASDM or console: на вкус и цвет все фломастеры разные…Я предпочитаю ASDM и настройки такого плана произвожу именно через нее. Поэтому статья будет насыщенна картинками (скринами) 😉

Итак, приступим. Начнем с настройки LDAP сервера (в нашем случае это DC ActiveDirectory), для этого переходим в Configuration -> DeviceManagement -> Users/AAA -> AAA Server Groups и создаем группу, назовем ее OFFICE, Protocol указываем LDAP

ASA_AnyConnect_setup-img1
Configuration Cisco ASA AAA Server Groups

Для того, чтобы добавить сервер в созданную группу, нам необходимо предварительно создать LDAP Atribute Map. Для этого переходим в соответствующий раздел: Configuration -> DeviceManagement -> Users/AAA ->LDAP Attribute Map и создаем новую карту: в нашем случае это Map Name: AD, Mapping of Attribute Name > LDAP Attribute Name: memberOf , Cisco Attribute Name: IETF-Radius-Class

LDAP Attribute Map

Теперь можно добавить сервер (настроить подключение к контроллеру домена), указываем интерфейс, через который будем подключаться, IP адрес DC, Server Type: Microsoft, Base DN, Naming Attribute: sAMAccountName, Login DN, Login Password, только что созданную карту LDAP Attribute Map: AD, Group Base DN:

AAA Server - Microsoft DC
Add AAA Server

После добавления сервера делаем проверку, проходим аутентификацию учетной записью AD:

Test AAA Server — Authentication

Теперь можно добавить сертификат удостоверяющего центра (используется Microsoft CA, в рамках статьи о его настройке рассказывать не буду, единственное о чем следует обязательно помнить: Cisco ASA не воспринимает сертификаты с Signature algorithm RSASSA-PSS, который Microsoft предлагает использовать по умолчанию. мы меняли на sha512RSA):

Identity Certificates Signature algorithm RSASSA-PSS — sha512

Переходим  Configuration -> DeviceManagement ->Certificate Management -> Identity Certificates и импортируем в формате PKCS12 (*.pfx сертификат + private key):

Identity Certificates Signature algorithm sha512RSA (ECDSA 521 bits)

С подготовительными действиями закончили, можно переходить к настройке профилей для AnyConnect VPN. Для примера, будем использовать 2 профиля, у которых будут разные IP Address Pools и соотв. ACL, Dynamic Access Policies, Group Policies и соответственно  2 группы ActiveDirectory. При подключении пользователей по ВПН используем политику «Туннелирование только указанных сетей», так называемый Split Tunneling, чтобы не гнать весь пользовательский траффик через впн. Но это «на любителя» ,  может кому-то, наоборот, такое потребуется  — последнее время это очень актуально 😉

Начнем с IP Address Pools, для этого переходим в Configuration -> Remote Access VPN -> Network (Client) Access -> Address Assignment > Address Pools

Создадим пул адресов (сегмент) для администраторов (назовем, например VPN_Admins):

Address Assignment — Address Pools

Далее создадим политику (это основная часть настроеек профиля, в которой можно задат: протоколы, которые будут использоваться для туннелей, время доступа, количество одновременных логинов, закрыть доступы к определенным VLAN, выставить таймауты,  задать DNS серверы,  настроить Split Tunneling, клиентский файерволл и тд и тп) — в общем этой настройке следует уделить особое внимание! Итак, начнем: Configuration -> Remote Access VPN -> Network (Client) Access -> Group Policies,  Add Internal Group Policy

Все выставленные параметры сугубо индивидуальны — в нашем случае немного параноидальны 😉 Указаны протоколы, которые допускаются для создания туннеля (Tunneling Protocols),  временной период для доступа по ВПН (Access Hours), количество одновременных подключений с одной учетной записью (Simultaneous Logins), максимальное время для сеанса и пр.:

Configuration > Remote Access VPN > Network (Client) Access > Group Policies > Add Internal Group Policy

Следующая полезная настройка — вкладка Servers, в которой мы можем указать внутр. ДНС серверы, для пользователей ВПН AnyConnect, чтобы они могли обращаться к внутренним ресурсам по имени:

Configuration > Remote Access VPN > Network (Client) Access > Group Policies > Edit Internal Group Policy — Servers

Теперь перейдем к еще одной интересной опции — настройке Split Tunneling. Как я уже писал ранее — будем использовать политику «туннелирование только указанных сетей» (мы не заворачиваем в туннель весь траффик пользователей и разрешаем доступ к локальным ресурсам — опция «Local Lan Access» далее будет отдельно рассмотрена):

Configuration > Remote Access VPN > Network (Client) Access > Group Policies > Edit Internal Group Policy > Advanced > Split Tunneling >

Ранее мы указали к каким сетям\хостам мы разрешили доступ, теперь ограничим доступ к ним по протоколам\портам (еще один ACL):

Configuration > Remote Access VPN > Network (Client) Access > Group Policies > Edit Internal Group Policy > Advanced > AnyConnect Client > Client Firewall > Private Network Rule

В итоге, после подключения к впн AnyConnect клиентом, можно увидеть маршруты в сторону туннеля и правила файерволла:

AnyConnect Client > Route Details
AnyConnect Client > Firewall

Теперь можно перейти непосредственно к созданию профиля AnyConnect, переходим Configuration > Remote Access VPN > Network (Client) Access > AnyConnect Connection Profiles >, Add AnyConnect Connection Profile

и указываем: Name, Aliases, далее Authentication Method (AAA and certificate), AAA Server Group , Client Address Pools, Group Policy — все созданное ранее!

Configuration > Remote Access VPN > Network (Client) Access > AnyConnect Connection Profiles > Add AnyConnect Connection Profile > Basic

И теперь небольшой «лайфхак» — мы из пользовательского сертификата вытащим значение E-mail и с помощью регулярки (.*)@ отрежем от него @domain.ru (значение E-mail должно быть %AD username%@somedomain.ru) и подставим его в  поле Username при подключении.

Configuration > Remote Access VPN > Network (Client) Access > AnyConnect Connection Profiles > Add AnyConnect Connection Profile > Advanced > Authentication > Username Mapping from Certificate

Когда профили настроили — мы уже можем подключаться, потому как будет отрабатывать политика по умолчанию DfltAccessPolicy для всех пользователей,  прошедших аутентификацию (у нее самый высокий приоритет).  Мы же хотим, чтобы для разных групп ActiveDirectory использовался свой профиль и отрабатывала своя групповая политика \ политика доступа. Поэтому, переходим: Configuration > Remote Access VPN > Network (Client) Access > Dynamic Access Policies и запрещаем DfltAccessPolicy (на самом деле не запрещаем, а делаем Terminate с уведомлением пользователя — хорошая диагностика того, что пользователь не включен в требую группу ActiveDirectory):

Configuration > Remote Access VPN > Network (Client) Access > Dynamic Access Policies
Terminate connection from users who are not in the access group

После того, как политику по умолчанию запретили, — создадим новую:

Configuration > Remote Access VPN > Network (Client) Access > Dynamic Access Policies > Add Dynamic Access Policy

Configuration > Remote Access VPN > Network (Client) Access > Dynamic Access Policies > Add Dynamic Access Policy with AAA Attributes

где g_vpn_level_01 — созданная в ActiveDirectory группа безопасности, куда мы включаем необходимые админские учетки, для подключения по ВПН AnyConnect с профилем VPN-ADMINS:

Configuration > Remote Access VPN > Network (Client) Access > Dynamic Access Policies > Add Dynamic Access Policy with AAA Attributes > Get AD Groups

ну и заключительный «штрих» — рекомендую сохранить созданный профиль в файл (полезно, например, для синхронизации профилей для StandBy unit при Failover конфигурации) :

Configuration > Remote Access VPN > Network (Client) Access > AnyConnect Client Profile

После того, как профиль сохранен — его можно немного «потюнинговать»: помните я говорил про опцию»Local Lan Access» ? Она как раз здесь настраивается. А еще здесь же можно настроить выбор хранилища сертификатов, автообновление клиента AnyConnect, разрешить\запретить возможность подключения к компы через рдп, при подключенном впн, указать версию протокола (IPv4 or IPv6 or both,  параметры сертификатов и серверов, мобильные политики. В общем есть что «подкрутить» под ваши нужды!

Configuration > Remote Access VPN > Network (Client) Access > AnyConnect Client Profile > Edit

Для второй группы — «VPN-USERS» проделываем тоже самое…

При подключении будет выбор профиля = группы Active Directory

Select a profile Profile for AnyConnect or AD Security Group

P.S. для любителей консоли — выложу конфигурацию позже 😉

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.