Pull to refresh

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

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

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

image
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

image
LDAP Attribute Map

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

image
AAA Server — Microsoft DC
Add AAA Server


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

image

Test AAA Server — Authentication

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

image

Identity Certificates Signature algorithm RSASSA-PSS — sha512

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

image
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):

image
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), максимальное время для сеанса и пр.:

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

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

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

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

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

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

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

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

image
AnyConnect Client > Route Details

image
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 — все созданное ранее!

image
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 при подключении.

image
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):

image
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

image
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:

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

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

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

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

image

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

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

P.S.: для любителей консоли — выложу конфигурацию позже
P.P.S: не сочтите за рекламу, — просто самому очень нравится: Duo Security
Tags:
Hubs:
If this publication inspired you and you want to support the author, do not hesitate to click on the button
+3
Comments8

Articles

Change theme settings