Cisco AnyConnect Source IP restrict: ограничение доступа по внешнему IP клиента

Больше
10 мес. 1 день назад - 9 мес. 4 нед. назад #248 от TOLLIFi
TOLLIFi создал эту тему: Cisco AnyConnect Source IP restrict: ограничение доступа по внешнему IP клиента
Здесь описан способ решения одной нетривиальной задачи: разрешить доступ пользователю к локальным ресурсам сети через Cisco AnyConnect VPN только, если он подключается с конкретного внешнего IP-адреса (source/public-IP).

Такое ограничение доступа может потребоваться в целях повышения безопасности и имеет свои плюсы:
1. Например, если вы выдаете доступ сотруднику компании-подрядчика и хотите чтоб он подключался только с внешнего IP-адреса этой компании, а не где-то из дома, кафе и т.п.
2. Таким образом, даже если злоумышленник похитит сертификат и узнает учетную запись пользователя, он все равно не получит доступ к локальным ресурсам вашей сети, т.к. он наверняка будет подключатся с внешнего IP, отличного от IP компании-подрядчика.


Вариант 1. Если в качестве AAA используется RADIUS.

Решение:
Здесь все гораздо проще чем с LDAP. Чтобы идентифицировать внешний IP клиента, можно воспользоваться атрибутом NAS-Port-ID (RADIUS attribute 87). На сервер RADIUS создаем нечто похожее на такое условие:
(Username = 'ivan ivanov') & (NAS-Port-ID = '1.2.3.4')


Вариант 2. Если в качестве AAA используется LDAP.

Решение:
Предлагаю нестандартное решение, при котором клиенты все равно подключатся, но будут иметь ограниченный доступ или доступ будет полностью запрещен, если внешний IP-адрес отличается (например, в Whois у компании одна подсеть, а запрос на VPN-подключение приходит из другой подсети). ASA будет создавать динамический auto-NAT 1:1, как только клиент подключится, и удалять это NAT, при отключении клиента. Схематично это выглядит так:





Требования к VPN-инфраструктуре:
1. Клиент должен иметь сертификат вашего Certificate Authority (CA).
2. VPN AnyConnect должен быть настроен на проверку подключения по сертификатам.
3. (опционально) Должна быть настроена проверка списков отзыва сертификатов (OCSP, CRL, SCEP).


Приступим к настройке...

Выбираем в сертификате поле, с которым в дальнейшем работаем (в нашем случае поле CN из Subject-Name - имя пользователя).
crypto ca certificate map CMAP-DOMAIN-COM 10
 subject-name co cn = ivan ivanov
Подменяем Tunnel-Group, если в сертификате subject-name содержит cn = ivan ivanov.
webvpn
 certificate-group-map CMAP-DOMAIN-COM 10 TG-VPN-RESTRICTED
Создаем отдельную Tunnel-Group для таких "особенных" клиентов.
tunnel-group TG-VPN-RESTRICTED type remote-access
tunnel-group TG-VPN-RESTRICTED general-attributes
 authentication-server-group AD-SSL
 strip-realm
 !
 ! создаем динамическую auto-NAT 1:1 запись, когда подключится клиент
 !
 nat-assigned-to-public-ip inside           
 password-management password-expire-in-days 17
 authorization-required
 username-from-certificate UPN
tunnel-group TG-VPN-RESTRICTED webvpn-attributes
 authentication aaa certificate
 pre-fill-username ssl-client
Когда подключится клиент, в NAT появится динамическая запись типа:
asa# show nat detail

Auto NAT Policies (Section 2)
1 (outside) to (inside) source static _vpn_nat_10.254.1.100 1.2.3.4
    translate_hits = 15, untranslate_hits = 15
    Source - Origin: 10.254.1.100/32, Translated: 1.2.3.4/32

Это значит, что клиент теперь идет в локальную сеть с адресом 1.2.3.4 (вместо 10.254.1.100 - адрес из VPN пула). Далее можно фильтровать по этому Src-IP = 1.2.3.4 доступ к локальным ресурсам по ACL inside-out, который нужно вешать на inside на выход (out):
access-group inside-in in interface inside
access-group inside-out out interface inside
ACL inside-out должен полностью копировать outside-in для хостов в LAN + добавляются записи для внешнего IP клиента. Обратный трафик по инспекции пропускается обратно в VPN-туннель.
Плюс еще применяется ACL из Dynamic Access Policy (DAP) к VPN-сессии клиента.

Из минусов:
1. Такая схема работает только тогда, когда подключен только один клиент с этого внешнего IP-адреса в текущий момент времени, т.к. NAT 1:1 (т.е. 1 клиент = 1 внешний IP).
2. В списках доступа (ACL) необходимо будет разрешать доступ к ресурсам локальной сети для внешнего IP, а не для локального (RFC1918).



P.S.:
В принципе, ограничение описанное в п.2 (по поводу ACL для внешних IP), можно обойти, если пользователю 'ivan ivanov' при подключении к VPN выдавать всегда один и тот же IP-адрес (как в примере, 10.254.1.100). Как это красиво сделать, не прибегая к созданию отдельных Tunnel-Group и Group-Policy я напишу в следующей статье.

IT и Телеком: IP-телефония, интернет-технологии, программирование, web-сервисы.
Вложения:
Последнее редактирование: 9 мес. 4 нед. назад от TOLLIFi.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Работает на Kunena форум