Продолжаем серию статей на тему организации.
VPN с удаленным доступом доступ Не могу не поделиться своим интересным опытом развертывания высокозащищенная конфигурация VPN .
Нетривиальную задачу представил один заказчик (изобретатели есть в российских деревнях), но Вызов был принят и творчески реализован.
В результате получилась интересная концепция со следующими характеристиками:
- Несколько факторов защиты от подмены терминального устройства (с жёсткой привязкой к пользователю);
- Оценка соответствия ПК пользователя присвоенному UDID разрешенного ПК в базе данных аутентификации;
- С MFA, использующим UDID ПК из сертификата для вторичной аутентификации через Cisco DUO. (Вы можете прикрепить любой совместимый с SAML/Radius) ;
- Многофакторная аутентификация:
- Сертификат пользователя с проверкой полей и вторичной аутентификацией по одному из них;
- Логин (неизменяемый, берется из сертификата) и пароль;
- Оценка состояния подключающегося хоста (Posture)
- Cisco ASA (VPN-шлюз);
- Cisco ISE (Аутентификация/Авторизация/Учет, Государственная оценка, CA);
- Cisco DUO (многофакторная аутентификация) (Вы можете прикрепить любой совместимый с SAML/Radius) ;
- Cisco AnyConnect (Многоцелевой агент для рабочих станций и мобильных ОС);
- Пользователь должен, посредством аутентификации с использованием логина и пароля, иметь возможность загрузить клиент AnyConnect с VPN-шлюза; все необходимые модули AnyConnect должны быть установлены автоматически в соответствии с политикой пользователя;
- Пользователь должен иметь возможность автоматически выдавать сертификат (для одного из сценариев основной сценарий — выдача вручную и загрузка на ПК), но я реализовал автоматическую выдачу для демонстрации (убрать никогда не поздно).
- Базовая аутентификация должна проходить в несколько этапов, сначала идет аутентификация по сертификату с анализом необходимых полей и их значений, затем логин/пароль, только на этот раз в окно входа необходимо вставить имя пользователя, указанное в поле сертификата.
Имя субъекта (CN) без возможности редактирования.
- Вам необходимо убедиться, что устройство, с которого вы заходите, — это корпоративный ноутбук, выданный пользователю для удаленного доступа, а не что-то другое.
(Для удовлетворения этого требования было предложено несколько вариантов)
- Состояние подключаемого устройства (на данном этапе ПК) следует оценивать проверкой целой увесистой таблицы требований заказчика (обобщающей):
- Файлы и их свойства;
- записи реестра;
- Патчи ОС из предоставленного списка (позже интеграция SCCM);
- Наличие Антивируса конкретного производителя и актуальность подписей;
- Деятельность определенных служб;
- Наличие определенных установленных программ;
Теперь предлагаю рассмотреть детали реализации, не освещенные в видео ролике.
Подготовим профиль AnyConnect: Пример создания профиля (в плане пункта меню в ASDM) я приводил ранее в своей статье по настройке Кластер балансировки нагрузки VPN .
Теперь хотелось бы отдельно отметить опции, которые нам понадобятся: В профиле укажем VPN-шлюз и имя профиля для подключения к конечному клиенту:
Настроим автоматическую выдачу сертификата со стороны профиля, указав, в частности, параметры сертификата и, что характерно, обратим внимание на поле Инициалы (Я) , где определенное значение вводится вручную ТЫ ДЕЛАЛ тестовая машина (уникальный идентификатор устройства, создаваемый клиентом Cisco AnyConnect).
Здесь я хочу сделать лирическое отступление, так как в данной статье описывается концепция; в демонстрационных целях UDID для выдачи сертификата вводится в поле Initials профиля AnyConnect. Конечно, в реальной жизни, если вы так сделаете, то все клиенты получат сертификат с одним и тем же UDID в этом поле и у них ничего не будет работать, так как им нужен UDID их конкретного ПК.
AnyConnect, к сожалению, пока не реализует подмену поля UDID в профиль запроса сертификата через переменную окружения, как это происходит, например, с переменной %ПОЛЬЗОВАТЕЛЬ% .
Стоит отметить, что заказчик (данного сценария) изначально планирует самостоятельно выдавать сертификаты с заданным UDID в ручном режиме на такие Защищаемые ПК, что для него не является проблемой.
Однако большинству из нас хочется автоматизации (ну, для меня это правда =)).
И это то, что я могу предложить в плане автоматизации.
Если AnyConnect пока не умеет выдавать сертификат автоматически путем динамической подмены UDID, то есть другой способ, который потребует немного творческой мысли и умелых рук — расскажу концепцию.
Сначала давайте посмотрим, как агент AnyConnect генерирует UDID в разных операционных системах:
- Окна — Хэш SHA-256 комбинации ключа реестра DigitalProductID и Machine SID.
- ОС X — Хэш SHA-256 PlatformUUID
- Линукс — SHA-256 хеш UUID корневого раздела.
- Apple iOS — Хэш SHA-256 PlatformUUID
- Андроид – См.
документ на связь
Подготовим настройки на стороне Cisco ASA: Давайте создадим TrustPoint для сервера ISE CA, он будет выдавать сертификаты клиентам.
Я не буду рассматривать процедуру импорта Key-Chain; пример описан в моей статье по настройке Кластер балансировки нагрузки VPN .
Настраиваем рассылку по Tunnel-Group на основе правил в соответствии с полями сертификата, который используется для аутентификации.crypto ca trustpoint ISE-CA enrollment terminal crl configure
Здесь также настраивается профиль AnyConnect, который мы создали на предыдущем этапе.
Обратите внимание, что я использую значение СЕКЬЮРЕБАНК-РА , для перевода пользователей с выданным сертификатом в туннельную группу СЕКЬЮР-БАНК-VPN , обратите внимание, что это поле есть в столбце запроса сертификата профиля AnyConnect. tunnel-group-map enable rules
!
crypto ca certificate map OU-Map 6
subject-name attr ou eq securebank-ra
!
webvpn
anyconnect profiles SECUREBANK disk0:/securebank.xml
certificate-group-map OU-Map 6 SECURE-BANK-VPN
!
Настройка серверов аутентификации.
В моем случае это ISE для первого этапа аутентификации и DUO (Radius Proxy) в качестве MFA. ! CISCO ISE
aaa-server ISE protocol radius
authorize-only
interim-accounting-update periodic 24
dynamic-authorization
aaa-server ISE (inside) host 192.168.99.134
key *****
!
! DUO RADIUS PROXY
aaa-server DUO protocol radius
aaa-server DUO (inside) host 192.168.99.136
timeout 60
key *****
authentication-port 1812
accounting-port 1813
no mschapv2-capable
!
Создаем групповые политики и туннельные группы и их вспомогательные компоненты: Туннельная группа Группа по умолчаниюWEBVPNGroup будет использоваться в первую очередь для загрузки VPN-клиента AnyConnect и выдачи сертификата пользователя с использованием функции SCEP-Proxy ASA; для этого у нас активированы соответствующие параметры как в самой туннельной группе, так и в связанной групповой политике.
AC-Загрузка , и на загруженном профиле AnyConnect (поля для выдачи сертификата и т.п.
).
Также в этой групповой политике указываем необходимость загрузки Модуль осанки ISE .
Туннельная группа СЕКЬЮР-БАНК-VPN будет автоматически использоваться клиентом при аутентификации с выданным сертификатом на предыдущем этапе, так как в соответствии с Card Map соединение будет падать именно на эту группу туннелей.
Об интересных вариантах расскажу здесь:
- DUO группы вторичных серверов аутентификации # Установите вторичную аутентификацию на сервере DUO (Radius Proxy)
- имя пользователя из-сертификатаCN # Для первичной аутентификации мы используем поле CN сертификата, чтобы наследовать логин пользователя
- вторичное имя-пользователя из-сертификата I # Для вторичной аутентификации на сервере DUO мы используем извлеченное имя пользователя и поля инициалов (I) сертификата.
- клиент с предварительным заполнением имени пользователя # сделать имя пользователя заранее заполненным в окне аутентификации без возможности его изменения
- клиент вторичного предварительного заполнения имени пользователя скрыть использование общего пароля push # Скрываем окно ввода логина/пароля для вторичной аутентификации DUO и используем способ уведомления (смс/пуш/телефон) - док для запроса аутентификации вместо поля пароля здесь
!
access-list posture-redirect extended permit tcp any host 72.163.1.80
access-list posture-redirect extended deny ip any any
!
access-list VPN-Filter extended permit ip any any
!
ip local pool vpn-pool 192.168.100.33-192.168.100.63 mask 255.255.255.224
!
group-policy SECURE-BANK-VPN internal
group-policy SECURE-BANK-VPN attributes
dns-server value 192.168.99.155 192.168.99.130
vpn-filter value VPN-Filter
vpn-tunnel-protocol ssl-client
split-tunnel-policy tunnelall
default-domain value ashes.cc
address-pools value vpn-pool
webvpn
anyconnect ssl dtls enable
anyconnect mtu 1300
anyconnect keep-installer installed
anyconnect ssl keepalive 20
anyconnect ssl rekey time none
anyconnect ssl rekey method ssl
anyconnect dpd-interval client 30
anyconnect dpd-interval gateway 30
anyconnect ssl compression lzs
anyconnect dtls compression lzs
anyconnect modules value iseposture
anyconnect profiles value SECUREBANK type user
!
group-policy AC-DOWNLOAD internal
group-policy AC-DOWNLOAD attributes
dns-server value 192.168.99.155 192.168.99.130
vpn-filter value VPN-Filter
vpn-tunnel-protocol ssl-client
split-tunnel-policy tunnelall
default-domain value ashes.cc
address-pools value vpn-pool
scep-forwarding-url value http://ise.ashes.cc:9090/auth/caservice/pkiclient.exe
webvpn
anyconnect ssl dtls enable
anyconnect mtu 1300
anyconnect keep-installer installed
anyconnect ssl keepalive 20
anyconnect ssl rekey time none
anyconnect ssl rekey method ssl
anyconnect dpd-interval client 30
anyconnect dpd-interval gateway 30
anyconnect ssl compression lzs
anyconnect dtls compression lzs
anyconnect modules value iseposture
anyconnect profiles value SECUREBANK type user
!
tunnel-group DefaultWEBVPNGroup general-attributes
address-pool vpn-pool
authentication-server-group ISE
accounting-server-group ISE
default-group-policy AC-DOWNLOAD
scep-enrollment enable
tunnel-group DefaultWEBVPNGroup webvpn-attributes
authentication aaa certificate
!
tunnel-group SECURE-BANK-VPN type remote-access
tunnel-group SECURE-BANK-VPN general-attributes
address-pool vpn-pool
authentication-server-group ISE
secondary-authentication-server-group DUO
accounting-server-group ISE
default-group-policy SECURE-BANK-VPN
username-from-certificate CN
secondary-username-from-certificate I
tunnel-group SECURE-BANK-VPN webvpn-attributes
authentication aaa certificate
pre-fill-username client
secondary-pre-fill-username client hide use-common-password push
group-alias SECURE-BANK-VPN enable
dns-group ASHES-DNS
!
Далее переходим к ISE: Настраиваем локального пользователя (можно использовать AD/LDAP/ODBC и т.п.
), я для простоты создал локального пользователя в самом ISE и назначил его в поле описание УДИД ПК откуда ему разрешен вход через VPN. Если я буду использовать локальную аутентификацию на ISE, то буду ограничен только одним устройством, так как полей не так много, но в сторонних базах аутентификации у меня таких ограничений не будет.
Давайте посмотрим на политику авторизации, она разделена на четыре этапа подключения:
- Энажмите 1 — Политика загрузки агента AnyConnect и выдачи сертификата
- Энажмите 2 — Основная политика аутентификации Логин (из сертификата)/Пароль + Сертификат с проверкой UDID
- Энажмите 3 — Вторичная аутентификация через Cisco DUO (MFA) с использованием UDID в качестве имени пользователя + оценка состояния.
- Энажмите 4 — Окончательная авторизация находится в состоянии:
- Соответствует;
- Проверка UDID (из привязки сертификата + логина),
- Cisco DUO MFA;
- Аутентификация по логину;
- Аутентификация сертификата;
Давайте посмотрим на интересное состояние UUID_VALIDATED , это просто похоже на то, что аутентифицирующий пользователь действительно пришел с компьютера с разрешенным UDID, указанным в поле Описание аккаунте, условия выглядят так:
Профиль авторизации, используемый на этапах 1,2,3, следующий:
Вы можете точно проверить, как UDID от клиента AnyConnect поступает к нам, просматривая детали сеанса клиента в ISE. Подробно мы увидим, что AnyConnect через механизм АЦИДЕКС отправляет не только информацию о платформе, но и UDID устройства в виде Cisco-AV-ПАРА :
Обратим внимание на сертификат, выданный пользователю и поле Инициалы (Я) , который используется в качестве имени входа для вторичной аутентификации MFA в Cisco DUO:
На стороне DUO Radius Proxy в журнале мы можем ясно видеть, как выполняется запрос аутентификации, он поступает с использованием UDID в качестве имени пользователя:
На портале DUO мы видим успешное событие аутентификации:
И в свойствах пользователя у меня это установлено Псевдоним , который я использовал для входа, в свою очередь, это UDID ПК, разрешенного для входа:
В результате мы получили:
- Многофакторная аутентификация пользователей и устройств;
- Защита от подмены устройства пользователя;
- Оценка состояния устройства;
- Возможность усиления контроля с помощью сертификата доменной машины и т. д.;
- Комплексная защита удаленного рабочего места с автоматически развертываемыми модулями безопасности;
- Развертывание кластера балансировки нагрузки ASA VPN
- Оптимизация облачных сервисов в VPN-туннеле AnyConnect на Cisco ASA
-
Антенна
19 Oct, 24 -
Outlook Становится Самостоятельным
19 Oct, 24 -
Очень Странный Взлом Сайта
19 Oct, 24 -
На Кого Вы Работаете?
19 Oct, 24 -
Несколько Правил Создания Отличных Продуктов
19 Oct, 24