- Introduction
- А как я могу гарантировать, что домашний пользователь не подцепит ничего в интернет?
- Anyconnect profile
- Certificates with proper eku
- Client services and certificate
- Configuration on the asa
- Crypto map configuration
- Enable anyconnect profile
- Ikev2 policies
- Ipsec proposals
- Known caveats
- Make the connection
- Prepare for the connection
- Verification on asa
- А ваш anyconnect не снизит качество видео- и голосовых телеконференций?
- А ведь пользователь может подцепить вредонос на домашний компьютер, который затем попадет в корпоративную сеть. как с этим бороться?
- А если я использую облачные платформы, например, amazon aws или ms azure, то как мне защитить доступ домашних пользователей к ним?
- А если я работаю с планшета или смартфона и постоянно перемещаюсь. у меня будет рваться vpn-соединение и мне надо будет каждый раз устанавливать его заново?
- А могу ли я шифровать не весь трафик, а только корпоративный?
- Если пользователь работает с личного устройства, то как мне повысить защищенность своей сети при таком доступе?
- Настройка cisco asa
- Настройка freeradius
- Настройка пользователя
- Реализация концепции высокозащищенного удаленного доступа
- Установка компонентов
Introduction
This document describes how to connect a PC to a Cisco Adaptive Security Appliance (ASA) with the use of AnyConnect IPsec (IKEv2) as well as certificate and Authentication, Authorization, and Accounting (AAA) authentication.
Note: The example that is provided in this document describes only the relevant parts that are used in order to obtain an IKEv2 connection between the ASA and AnyConnect. A full configuration example is not provided. Network Address Translation (NAT) or access-list configuration is not described or required in this document.
А как я могу гарантировать, что домашний пользователь не подцепит ничего в интернет?
В AnyConnect есть такая функция — Always-On VPN, которая предотвращает прямой доступ в Интернет, если пользователь не находится в так называемой доверенной сети, которой может быть ваша корпоративная инфраструктура. Но обратите внимание, что данная функция работает очень гибко.
Если пользователь находится в корпоративной сети, VPN автоматически отключается, а при ее покидании (например, если пользователь работает с ноутбука, планшета или смартфона), VPN опять включается; причем прозрачно и незаметно для пользователя. Тем самым пользователь всегда будет находиться под защитой корпоративных средств защиты, установленных на периметре, — межсетевого экрана, системы предотвращения вторжений, системы анализа аномалий, прокси и т.п.
Многие компании, выдавая удаленным работникам корпоративные устройства, ставят условие использования их только для служебных целей. А чтобы контролировать исполнение этого требования включают в AnyConnect настройки, запрещающие пользователю ходить в Интернет напрямую.
Anyconnect profile
Here is an example profile with the relevant parts shown in bold:
Certificates with proper eku
It is important to note that even though it is not required for the ASA and AnyConnect combination, RFC requires that certificates have Extended Key Usage (EKU):
- The certificate for the ASA must contain the server-auth EKU.
- The certificate for the PC must contain the client-auth EKU.
Note: An IOS router with the recent software revision can place EKUs onto certificates.
Client services and certificate
You must enable client services and certificates on the correct interface, which is the outside interface in this case. Here is an example configuration:
crypto ikev2 enable outside client-services port 443
crypto ikev2 remote-access trustpoint OUTSIDE
ssl trust-point OUTSIDE outside
Note: The same trustpoint is also assigned for Secure Sockets Layer (SSL), which is intended and required.
Configuration on the asa
This section describes the ASA configurations that are required before the connection occurs.
Note: The Cisco Adaptive Security Device Manager (ASDM) allows you to create the basic configuration with only a few clicks. Cisco recommends that you use it in order to avoid mistakes.
Crypto map configuration
Here is a crypto map example configuration:
crypto dynamic-map DYN 1 set pfs group1
crypto dynamic-map DYN 1 set ikev2 ipsec-proposal secure
crypto dynamic-map DYN 1 set reverse-route
crypto map STATIC 65535 ipsec-isakmp dynamic DYN
crypto map STATIC interface outside
Enable anyconnect profile
You must enable the AnyConnect profile on the ASA. Here is an example configuration:
webvpn
enable outside
anyconnect image disk0:/anyconnect-win-3.0.5080-k9.pkg 1 regex "Windows NT"
anyconnect profiles Anyconnect disk0:/anyconnect.xml
anyconnect enable
tunnel-group-list enable
Ikev2 policies
Here is an IKEv2 policy example configuration:
crypto ikev2 policy 1
encryption aes-256
integrity sha
group 5 2
prf sha
lifetime seconds 86400
crypto ikev2 policy 10
encryption aes-192
integrity sha
group 5 2
prf sha
lifetime seconds 86400
crypto ikev2 policy 20
encryption aes
integrity sha
group 5 2
prf sha
lifetime seconds 86400
crypto ikev2 policy 30
encryption 3des
integrity sha
group 5 2
prf sha
lifetime seconds 86400
crypto ikev2 policy 40
encryption des
integrity sha
group 5 2
prf sha
lifetime seconds 86400
Ipsec proposals
Here is an IPsec proposal example configuration:
crypto ipsec ikev2 ipsec-proposal secure
protocol esp encryption aes 3des
protocol esp integrity sha-1
crypto ipsec ikev2 ipsec-proposal AES256-SHA
protocol esp encryption aes-256
protocol esp integrity sha-1
Known caveats
These are the known caveats and issues that are related to the information that is described in this document:
- The IKEv2 and SSL trustpoints must be the same.
- Cisco recommends that you use the FQDN as the CN for the ASA-side certificates. Ensure that you reference the same FQDN for the <HostAddress> in the AnyConnect profile.
- Remember to insert the <HostName> value from the AnyConnect profile when you connect.
- Even in the IKEv2 configuration, when AnyConnect connects to the ASA, it downloads profile and binary updates over SSL, but not IPsec.
- The AnyConnect connection over IKEv2 to the ASA uses EAP-AnyConnect, a proprietary mechanism that allows simpler implementation.
Make the connection
This section describes the PC-to-ASA connection when the profile is already present.
Note: The information that you input into the GUI in order to connect is the <HostName> value that is configured in the AnyConnect profile. In this case, bsns-asa5520-1 is entered, not the complete Fully Qualified Domain Name (FQDN).
When you first attempt to connect through AnyConnect, the gateway prompts you to select the certificate (if automatic certificate selection is disabled):
Prepare for the connection
This section describes the perparations that are required before you can connect your PC to the ASA.
Verification on asa
Enter this command on the ASA in order to verify that the connection uses IKEv2 as well as AAA and certificate authentication:
А ваш anyconnect не снизит качество видео- и голосовых телеконференций?
Нет. Как я уже описывал выше, Cisco AnyConnect поддерживает протокол DTLS, который специально ориентирован на защиту мультимедиа-трафика.
На самом деле Cisco AnyConnect обладает куда большим количеством возможностей. Он может работать в скрытом режиме, динамически выбирать наиболее оптимальный шлюз удаленного доступа, поддерживает IPv6, имеет встроенный персональный межсетевой экран, мониторится удаленно, обеспечивает контроль доступа, поддерживает RDP и т.п.
А еще он русифицирован, чтобы у пользователей не возникало вопросов относительно тех редких сообщений, которые Cisco AnyConnect может выдавать. Так что Cisco AnyConnect — это не просто VPN-клиент, но гораздо более интересное решение для обеспечения защищенного удаленного доступа, который в последние недели начинает набирать популярность из-за пандемии коронавируса, заставляющего работодателей переводить отдельные категории своих работников на удаленку.
А ведь пользователь может подцепить вредонос на домашний компьютер, который затем попадет в корпоративную сеть. как с этим бороться?
С одной стороны Cisco AnyConnect может проверять наличие у вас системы защиты Cisco AMP for Endpoints и устанавливать ее при отсутствии. Но возможно у пользователя уже установлен собственный антивирус или этот антивирус уже был установлен вами при переводе работников на удаленную работу.
Однако все мы знаем, что антивирус сегодня ловит очень мало серьезных угроз и неплохо бы дополнить его более продвинутыми решениями по обнаружению вредоносных программ, аномалий и иных атак. Если в вашей корпоративной инфраструктуре развернуто решение Cisco Stealthwatch, то вы можете легко интегрировать с ним и агенты Cisco AnyConnect, установленные на домашних компьютерах ваших работников.
, которым может являться как
, так и какой-либо SIEM, например, Splunk. Среди прочего NVM-модуль может передавать следующую информацию, на базе которой можно выявлять аномальную и вредоносную активность на домашнем компьютере, которая осталась незаметной для установленного антивируса:
А если я использую облачные платформы, например, amazon aws или ms azure, то как мне защитить доступ домашних пользователей к ним?
У Cisco существует виртуальный маршрутизатор Cisco CSR 1000, который может быть развернут в облачных средах, например, в Amazon AWS или MS Azure, и который может терминировать на себе VPN-туннели, создаваемые Cisco AnyConnect.
А если я работаю с планшета или смартфона и постоянно перемещаюсь. у меня будет рваться vpn-соединение и мне надо будет каждый раз устанавливать его заново?
Нет, не надо. В Cisco AnyConnect встроен специальный роуминговый модуль, который позволяет не только автоматически и прозрачно переподключать VPN при переходе между различными типами подключений (3G/4G, Wi-Fi и т.п.), но и автоматически защищать ваше мобильное (ведь вряд ли вы будете носить с собой стационарный домашний компьютер) устройство с помощью решения Cisco Umbrella, которое будет инспектировать весь DNS-трафик на предмет доступа к фишинговым сайтам, командным серверам, ботнетам и т.п.
Подключение к Umbrella потребуется в том случае, если вы разрешили пользователю функцию split tunneling и он может подключаться к различным ресурсам Интернет напрямую, минуя шлюз удаленного доступа. Модуль подключения к Cisco Umbrella будет полезен даже в том случае если вы не используете VPN — тогда весь трафик будет проверяться через этот защитный сервис.
А могу ли я шифровать не весь трафик, а только корпоративный?
Функция Always-On VPN очень полезна для защиты удаленного доступа с выданных вами устройств, но далеко не всегда мы можем заставить пользователя делать то, что хотим мы, особенно если речь идет о его личном компьютере, на котором мы не можем устанавливать свои правила.
И пользователь не захочет, чтобы его личный трафик проходил через корпоративный периметр и ваши администраторы следили за тем, какие сайты пользователь посещает во время надомной работы. Как говорится, «сложно говорить о морали с администратором, который видел логи вашего прокси» 🙂
В этом случае на Cisco AnyConnect можно включить функцию split tunneling, то есть разделения туннелей. Одни виды трафика, например, до корпоративной инфраструктуры и рабочих облаков трафик будет шифроваться, а трафик до соцсетей или онлайн-кинотеатров будет идти в обычном режиме, без защиты со стороны AnyConnect.
Это позволяет учесть интересы и компании и ее работников, вынужденных делить персональный компьютер сотрудника между двумя областями жизни — личной и служебной. Но стоит помнить, что функция split tunneling может снизить защищенность вашей сети, так как пользователь может подцепить какую-нибудь заразу в Интернет, а потом уже по защищенному каналу она попадет в внутрь компании.
Если пользователь работает с личного устройства, то как мне повысить защищенность своей сети при таком доступе?
Давайте попробуем прикинуть, что может плохого или неправильного сделать пользователь на компьютере при удаленной работе? Установить ПО, содержащее уязвимости, или просто не устранять их своевременно с помощью патчей. Не обновлять свой антивирус или вообще его не иметь.
Использовать слабые пароли. Установить ПО с вредоносным функционалом. Это то, что может поставить вашу корпоративную сеть под угрозу и никакой VPN вас не защитит от этого. А вот Cisco AnyConnect может за счет функции оценки соответствия, которая позволяет перед предоставлением доступа удаленного компьютера к корпоративным ресурсам проверить все необходимые и требуемые ИТ/ИБ-политиками настройки — наличие патчей, актуальные версии ПО, обновленный антивирус, наличие средств защиты, правильную длину пароля, наличие шифрования жесткого диска, определенные настройки реестра и т.п.
Настройка cisco asa
На ASA рекомендую настроить AnyConnect VPN gateway с локальной аутентификацией. Убедиться, что подключение работает, после чего приступить к настройке аутентификации через Radius.
Настраиваем RADIUS:
Настройка freeradius
Так как FreeRadius должен иметь доступ к
.google_authenticator
токенам во всех пользовательских директориях, он должен иметь права
root-а
. Для предоставления прав редактируем файл
/etc/freeradius/radusd.conf
Находим строки:
Настройка пользователя
Создаем пользователя:
Реализация концепции высокозащищенного удаленного доступа
Продолжая серию статьей по теме организации Remote-Access VPN доступа не могу не поделиться интересным опытом развертывания высокозащищенной конфигурации VPN. Задачу нетривиальную подкинул один заказчик (есть выдумщики в Русских селениях), но Challenge Accepted и творчески реализован. В результате получился интересный концепт со следующими характеристиками:
- Несколько факторов защиты от подмены оконечного устройства (с жесткой привязкой к пользователю);
- Многофакторной аутентификацией:
- Оценкой состояния, подключающегося хоста (Posture)
Используемые компоненты решения:
Начнем с требований заказчика:
- Пользователь должен по своей аутентификации Логин/Пароль иметь возможность скачать AnyConnect клиент с VPN шлюза, все необходимые модули AnyConnect должны автоматически ставиться в соответствии с политикой пользователя;
- Пользователь должен иметь возможность автоматической выписки сертификата (для одного из сценариев, основной же сценарий – ручная выписка и заливка на ПК), я же реализовал автовыписку для демонстрации (убрать никогда не поздно).
- Основная аутентификация должна проходить в несколько этапов, сначала идет аутентификация сертификата с анализом необходимых полей и их значений, далее логин/пароль, только на этот раз в окно логина должно подставляться имя пользователя, указанное в поле сертификата Subject Name (CN) без возможности редактирования.
- Необходимо убедиться, что устройство, с которого производится вход это выданный пользователю для удаленного доступа корпоративный ноутбук, а не что-либо иное. (Сделано несколько вариантов удовлетворения этого требования)
- Должна проводиться оценка состояния подключающегося устройства (на этом этапе ПК) с проверкой целой здоровенной таблицы требований заказчика (обобщая):
Для начала я предлагаю в обязательном порядке посмотреть на видео-демонстрацию получившейся реализации на Youtube (5 минут).
Теперь предлагаю рассмотреть детали реализации не освещенные в видео-ролике.
Подготовим профиль AnyConnect:
Пример создания профиля (в плане пункта меню в ASDM) я ранее приводил в своей статье по настройке VPN Load-Balancing кластера. Сейчас я отдельно хочу отметить те опции, что нам понадобятся:
В профиле укажем шлюз VPN и имя профиля для подключения на оконечном клиенте:

Проведем настройки автоматической выписки сертификата со стороны профиля, указав, в частности, параметры сертификата и что характерно, обратим внимание на поле Initials (I), где вручную забито конкретное значение UDID тестовой машины (Уникальный идентификатор устройства, который генерирует Cisco AnyConnect клиент).

Здесь я хочу сделать лирическое отступление, поскольку данная статья описывает концепцию, для демонстрационных целей здесь забит UDID для выписки сертификата в поле Initials профиля AnyConnect. Конечно же в реальной жизни если Вы так сделаете, то все клиенты получат сертификат с одинаковым UDID в данном поле и работать у них ничего не будет, поскольку им то нужен UDID конкретно своего ПК. AnyConnect к сожалению пока не реализует подстановку в профиль запроса сертификата поле UDID через переменную окружения, так как он например делает с переменной %USER%.
Стоит отметить что заказчик (данного сценария) изначально планирует самостоятельно выдавать сертификаты с заданным UDID в ручном режиме на такие Защищенные ПК, что не является для него какой-то проблемой. Однако для большинства из нас хочется автоматизации (ну для меня так точно=) ).
И вот что я могу предложить в плане автоматизации. Если выписать сертификат автоматически AnyСonnect динамически подставив UDID пока не в состоянии, то есть и другой способ, который потребует немного творческой мысли и умелых рук – расскажу концепцию. Для начала давайте рассмотрим, как формируется UDID на разных операционных системах агентом AnyConnect:
Соответственно изготавливаем скрипт для наших корпоративных ОС Windows, этим скриптом локально вычисляем UDID по известным вводным и формируем запрос на выдачу сертификата вписывая в нужное поле этот UDID, кстати можно и машинного сертификата, выданного AD (добавив в схему двойную аутентификацию по сертификату Multiple Certificate).
Подготовим настройки со стороны Cisco ASA:
Создадим TrustPoint для ISE CA сервера, именно он будет выписывать сертификаты клиентам. Процедуру импорта Key-Chain рассматривать не буду, пример описан в моей статье по настройке VPN Load-Balancing кластера.
crypto ca trustpoint ISE-CA
enrollment terminal
crl configureНастраиваем распределение по Tunnel-Group на основании правил в соответствии с полями в сертификате, которым проводится аутентификация. Также здесь настраивается профиль AnyConnect, изготовленный нами на прошлом этапе. Обращаю внимание что я использую значение SECUREBANK-RA, для перевода пользователей с выданным сертификатом в туннельную группу SECURE-BANK-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
!Создаем групповые политики и туннельные группы и вспомогательные их компоненты:
Туннельная группа DefaultWEBVPNGroup будет использована первично для скачивания AnyConnect VPN клиента и выписки сертификата пользователя используя SCEP-Proxy функцию ASA, для этого у нас активированы соответствующие опции как на самой туннельной группе, так и на ассоциированной групповой политике AC-Download, так и на загружаемом профиле AnyConnect (поля выписки сертификата и т.д.). Также в данной групповой политике указываем на необходимость скачивания ISE Posture Module.
Туннельная группа SECURE-BANK-VPN будет автоматически использоваться клиентом при аутентификации выданным сертификатом в предыдущем этапе, поскольку в соответствии с Certificate Map, соединение ляжет именно на данную туннельную группу. Расскажу про интересные опции здесь:
!
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 и назначил в поле descriptionUDID ПК с которого ему разрешен вход по VPN. В случае использования локальной аутентификации на ISE я буду ограничен только одним устройством, поскольку полей не так много, но в сторонних базах аутентификации у меня таковых ограничений не будет.

Посмотрим на политику авторизации, она разделена на четыре этапа соединения:

Посмотрим на интересное условие UUID_VALIDATED, как раз оно и смотрит что аутентифицирующийся пользователь действительно пришел с ПК с разрешенным UDID ассоциированным в поле Description учетной записи, выглядит условия так:

Профиль авторизации, используемый на 1,2,3 этапах выглядит следующим образом:

Проверить как именно нам прилетает UDID от клиента AnyConnect можно посмотрев в ISE детали сессии клиента. В деталях мы увидим, что AnyConnect через механизм ACIDEX присылает не только данные о платформе, но и UDID устройства как Cisco-AV-PAIR:

Обратим внимание на выписанный пользователю сертификат и поле Initials (I), которое используется для того чтобы взять его в роли логина для вторичной аутентификации MFA на Cisco DUO:

На стороне DUO Radius Proxy в логе мы четко видим каким образом идет запрос на аутентификацию, он идет с использованием UDID как имени пользователя:

Со стороны портала DUO видим удачное событие аутентификации:

И в свойствах пользователя у меня установлен ALIAS, который я и использовал для логина, в свою очередь это и есть UDID разрешенного для логина ПК:

В результате мы получили:
Ссылки на статьи серии Cisco VPN:
Установка компонентов
Для установки FreeRaduis я использовал Debian Jessie 8.0 на виртуальной машине.
Ввиду того, что для авторизации будет использоваться TOTP, время на сервере должно быть правильным. Лучший способ синхронизировать время – установка NTP.
sudo apt-get update
sudo apt-get install ntp
Далее устанавливаем FreeRadius и необходимые модули:
sudo apt-get install build-essential libpam0g-dev freeradius libqrencode3 git
Загружаем и устанавливаем Google Authenticator:
