Реализация Концепции Высокозащищенного Удаленного Доступа

Продолжаем серию статей на тему организации.

VPN с удаленным доступом доступ Не могу не поделиться своим интересным опытом развертывания высокозащищенная конфигурация VPN .

Нетривиальную задачу представил один заказчик (изобретатели есть в российских деревнях), но Вызов был принят и творчески реализован.

В результате получилась интересная концепция со следующими характеристиками:

  1. Несколько факторов защиты от подмены терминального устройства (с жёсткой привязкой к пользователю);
    • Оценка соответствия ПК пользователя присвоенному UDID разрешенного ПК в базе данных аутентификации;
    • С MFA, использующим UDID ПК из сертификата для вторичной аутентификации через Cisco DUO. (Вы можете прикрепить любой совместимый с SAML/Radius) ;
  2. Многофакторная аутентификация:
    • Сертификат пользователя с проверкой полей и вторичной аутентификацией по одному из них;
    • Логин (неизменяемый, берется из сертификата) и пароль;
  3. Оценка состояния подключающегося хоста (Posture)
Используемые компоненты решения:
  • Cisco ASA (VPN-шлюз);
  • Cisco ISE (Аутентификация/Авторизация/Учет, Государственная оценка, CA);
  • Cisco DUO (многофакторная аутентификация) (Вы можете прикрепить любой совместимый с SAML/Radius) ;
  • Cisco AnyConnect (Многоцелевой агент для рабочих станций и мобильных ОС);
Начнем с требований заказчика:
  1. Пользователь должен, посредством аутентификации с использованием логина и пароля, иметь возможность загрузить клиент AnyConnect с VPN-шлюза; все необходимые модули AnyConnect должны быть установлены автоматически в соответствии с политикой пользователя;
  2. Пользователь должен иметь возможность автоматически выдавать сертификат (для одного из сценариев основной сценарий — выдача вручную и загрузка на ПК), но я реализовал автоматическую выдачу для демонстрации (убрать никогда не поздно).

  3. Базовая аутентификация должна проходить в несколько этапов, сначала идет аутентификация по сертификату с анализом необходимых полей и их значений, затем логин/пароль, только на этот раз в окно входа необходимо вставить имя пользователя, указанное в поле сертификата.

    Имя субъекта (CN) без возможности редактирования.

  4. Вам необходимо убедиться, что устройство, с которого вы заходите, — это корпоративный ноутбук, выданный пользователю для удаленного доступа, а не что-то другое.

    (Для удовлетворения этого требования было предложено несколько вариантов)

  5. Состояние подключаемого устройства (на данном этапе ПК) следует оценивать проверкой целой увесистой таблицы требований заказчика (обобщающей):
    • Файлы и их свойства;
    • записи реестра;
    • Патчи ОС из предоставленного списка (позже интеграция SCCM);
    • Наличие Антивируса конкретного производителя и актуальность подписей;
    • Деятельность определенных служб;
    • Наличие определенных установленных программ;
Для начала предлагаю обязательно посмотреть видео-демонстрацию получившейся реализации на Ютуб (5 минут) .

Теперь предлагаю рассмотреть детали реализации, не освещенные в видео ролике.

Подготовим профиль 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
  • Андроид – См.

    документ на связь

Соответственно создаем скрипт для нашей корпоративной ОС Windows, с помощью этого скрипта локально вычисляем UDID по известным входным данным и формируем запрос на выдачу сертификата вводя этот UDID в нужное поле, кстати, можно и на машине сертификат, выданный AD (добавив в схему двойную аутентификацию с использованием сертификата) Множественный сертификат ).

Подготовим настройки на стороне Cisco ASA: Давайте создадим TrustPoint для сервера ISE CA, он будет выдавать сертификаты клиентам.

Я не буду рассматривать процедуру импорта Key-Chain; пример описан в моей статье по настройке Кластер балансировки нагрузки VPN .

  
  
  
   

crypto ca trustpoint ISE-CA enrollment terminal crl configure

Настраиваем рассылку по Tunnel-Group на основе правил в соответствии с полями сертификата, который используется для аутентификации.

Здесь также настраивается профиль 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 ПК, разрешенного для входа:

Реализация концепции высокозащищенного удаленного доступа

В результате мы получили:
  • Многофакторная аутентификация пользователей и устройств;
  • Защита от подмены устройства пользователя;
  • Оценка состояния устройства;
  • Возможность усиления контроля с помощью сертификата доменной машины и т. д.;
  • Комплексная защита удаленного рабочего места с автоматически развертываемыми модулями безопасности;
Ссылки на статьи серии Cisco VPN:
  • Развертывание кластера балансировки нагрузки ASA VPN
  • Оптимизация облачных сервисов в VPN-туннеле AnyConnect на Cisco ASA
Теги: #информационная безопасность #cisco #cisco #it-инфраструктура #vpn #RA-VPN #SSLVPN
Вместе с данным постом часто просматривают: