Вы здесь

Установка AnyConnect SSLVPN на IOS Router

Web VPN, SSL VPN или AnyConnect VPN - это названия одной и той же технологии, которая позволяет пользователю подключаться к сети предприятия извне, используя протокол HTTPS.
Существуют различные протоколы, позволяющие туннелировать IP пакеты, т.е. создавать виртуальную частную сеть, например IPSec или PPTP, но для конечного пользователя проблема заключается в том, что не все провайдеры пропускают наружу все порты.

Очень часто из интернет кафе мы можем использовать только лишь соединения http и https. Тут как раз и не обойтись без AnyConnect SSLVPN.
С AnyConnect мы можем подключаться из любой заправки или Аэропорта по безопасному соединению.
AnyConnect на сегодняшний день передовая технология от Cisco, которая полноценно пришла на замену старого клиента "Cisco systems VPN Client".
AnyConnect активно поддерживается и регулярно обновляется; существуют дистрибутивы AnyConnect для Windows, Linux, Android, iOS: можно подключаться не только из любого места, но и с использованием практически любого устройства.

Данная статья есть переработанный материал Web VPN: подключение отовсюду, и ориентирована на настройку anyconnect на Cisco IOS Router.
Если у вас Cisco ASA, см. Работа с ASA Anyconnect SSL VPN HUB

Следует отметить, что под работу anyconnect гораздо лучше "заточена" Cisco ASA, поэтому в крупных предприятиях имеет смысл поднимать выделенный сервер VPN на ASA.
С другой стороны, то что умеет делать IOS вполне достаточно для небольшого офиса или для дома.

ustanovka_anyconnect_sslvpn_na_ios_router_01_ciscomaster.ru_0.jpg

Используемое оборудование и версии

CISCO891-K9
IOS Version 15.4(3)M4

Загрузка и установка AnyConnect Secure Mobility Client Package

Сам клиент можно скачать с сайта циски, при этом на роутер следует устанавливать пакеты с расширением .pkg
Существуют пакеты для Linux (32-bit), Linux 64-bit, macosx, win. Важно понимать, что для поддержки определённой ОС, должен быть установлен соответствующий пакет.
При первом подключении пользователи могут загрузить и установить соответствующий package на свою машину.

mkdir flash:/webvpn copy tftp://10.6.14.32/anyconnect-win-3.1.14018-k9.pkg flash:/webvpn/anyconnect-win-3.1.14018-k9.pkg copy tftp://10.6.14.32/anyconnect-macosx-i386-3.1.14018-k9.pkg flash:/anyconnect-macosx-i386-3.1.14018-k9.pkg copy tftp://10.6.14.32/anyconnect-linux-64-3.1.14018-k9.pkg flash:/anyconnect-linux-64-3.1.14018-k9.pkg

Далее устанавливаем пакеты. При установке нескольких пакетов необходимо выставить у пакетов sequence.

crypto vpn anyconnect flash:/webvpn/anyconnect-win-3.1.14018-k9.pkg sequence 1 crypto vpn anyconnect flash:/webvpn/anyconnect-macosx-i386-3.1.14018-k9.pkg sequence 2 crypto vpn anyconnect flash:/webvpn/anyconnect-linux-3.1.14018-k9.pkg sequence 3 crypto vpn anyconnect flash:/webvpn/anyconnect-linux-64-3.1.14018-k9.pkg sequence 4

Генерируем RSA Keypair а также Self-Signed Certificate

SSL используется технологии Public Key Infrastructure (PKI) а также Digital Certificates.
Rivest-Shamir-Adleman (RSA) keypair необходима для формирования signing of the certificate.
В нашем случае мы будем генерировать сертификат для себя, т.е. Self-Signed Certificate, - для этого мы предварительно сгенерируем RSA keypair.

Router(config)#crypto key generate rsa label SSLVPN_KEYPAIR modulus 2048 The name for the keys will be: SSLVPN_KEYPAIR % The key modulus size is 2048 bits % Generating 2048 bit RSA keys, keys will be non-exportable... [OK] (elapsed time was 4 seconds)

Проверяем что у нас получилось:

Router#show crypto key mypubkey rsa SSLVPN_KEYPAIR % Key pair was generated at: 11:00:40 MSK Sep 30 2016 Key name: SSLVPN_KEYPAIR Key type: RSA KEYS Storage Device: not specified Usage: General Purpose Key Key is not exportable. Key Data: 30820122 300D0609 2A864886 F70D0101 01050003 82010F00 3082010A 02820101 00D7464D DD92F508 F9D736B5 8EC168E2 FFC3D9F1 A11D6372 C2ACCB66 1FDCDB93

Создаём PKI trustpoint. Common Name (CN) прописываем внешний IP адрес.

crypto pki trustpoint SSLVPN_CERT enrollment selfsigned subject-name CN=31.24.93.198 rsakeypair SSLVPN_KEYPAIR

Генерируем самоподписный сертификат:

Router(config)#crypto pki enroll SSLVPN_CERT The router has already generated a Self Signed Certificate for trustpoint TP-self-signed-3459063180. If you continue the existing trustpoint and Self Signed Certificate will be deleted. Do you want to continue generating a new Self Signed Certificate? [yes/no]: yes % Include the router serial number in the subject name? [yes/no]: no % Include an IP address in the subject name? [no]: no Generate Self Signed Router Certificate? [yes/no]: yes Router Self Signed Certificate successfully created

Проверяем созданный сертификат:

Router#show crypto pki certificates SSLVPN_CERT Router Self-Signed Certificate Status: Available Certificate Serial Number (hex): 01 Certificate Usage: General Purpose Issuer: hostname=zzzservice_890.zzz.local cn=31.24.93.198 Subject: Name: zzzservice_890.zzz.local hostname=zzzservice_890.zzz.local cn=31.24.93.198 Validity Date: start date: 11:32:51 MSK Sep 30 2016 end date: 04:00:00 MSK Jan 1 2020 Associated Trustpoints: SSLVPN_CERT

Включаем AAA и настраиваем дефолтную и аутентификацию для VPN

aaa new model aaa authentication login default local aaa authentication login vpn_ls local aaa authorization exec default local

Определяем Address Pool, а также необходимые ACL

Address Pool - задаёт адреса, которые будут раздаваться клиентам:

ip local pool ezvpn_pool 10.6.6.5 10.6.6.254
ip access-list extended ssl_vpn_acl permit ip any any ! ip access-list standard ssl_vpn_split_acl permit 10.6.0.0 0.0.255.255

Здесь ssl_vpn_acl задаёт адресацию, куда разрешено ходить клиентам VPN.
ssl_vpn_split_acl определяет Split Tunnel, т.е. на клиенте трафик в сторону 10.6.0.0 0.0.255.255 будет отправлен в туннель, всё остальное согласно локальной маршрутизации. Без этого весь трафик будет направлен в туннель, что будет неудобно для клиента.

Настройка Virtual-Template Interface (VTI)

При каждом VPN-подключении позволяет создаётся отдельный виртуальный интерфейс на основе шаблона VTI, виртуальный интерфейс работает подобно физическому, благодаря чему есть поддержка QoS, firewall, per-user attribtues и др.
Подробнее:
http://www.cisco.com/en/US/docs/ios/12_3t/12_3t14/feature/guide/gtIPSctm...

interface Loopback1 ip address 10.6.6.1 255.255.255.255 ! interface Virtual-Template 1 ip unnumbered Loopback1

Настраиваем WebVPN Gateway

WebVPN Gateway определяет IP адрес и порт, на котором будет жить anyconnect, а также encryption algorithm и PKI certificate.

webvpn gateway SSLVPN_GATEWAY ip address 31.24.93.198 port 443 http-redirect port 80 ssl trustpoint SSLVPN_CERT inservice

Настройка WebVPN Context and Group Policy

WebVPN Context и Group Policy определяют ряд дополнительных параметров, которые будут использованы для подключения Anyconnect.
Context используется для кастомизации страницы и операций WebVPN.
Group Policy задаёт параметры подключения клиента: pool адресов, DNS и т.д.

webvpn context SSL_Context secondary-color white title-color #669999 text-color black ! acl "ssl_vpn_acl" virtual-template 1 aaa authentication list vpn_ls gateway SSLVPN_GATEWAY ! ssl authenticate verify all inservice ! policy group SSL_Policy functions svc-enabled svc address-pool "ezvpn_pool" netmask 255.255.255.0 svc default-domain "zzz.local" svc keep-client-installed svc split include acl ssl_vpn_split_acl svc dns-server primary 10.6.14.36 svc dns-server secondary 10.6.14.37 default-group-policy SSL_Policy

Теперь внешний клиент может набрать в браузере:
https://31.24.93.198
После ввода имени и пароля установится приложение клиента, позволяющее получить доступ к внутренним ресурсам компании.

Anyconnect и разделение прав

Итак VPN клиент подключился и у нас всё прекрасно работает.
После этого, наверное первое что приходит в голову - это идея как-то разделять доступ между различными пользователями VPN, т.е. кому-то дать доступ ко всей сети, а кому-то может только к определённому IP адресу.
Вообще данная задача решается через использование ACL: например Cisco ASA позволяет использовать Downloadable ACL.

Автору так и не удалось применить на платформе cisco IOS Downloadable ACL или acl на основе av-pair.
К сожалению Cisco IOS позволяет разграничить права только на основе policy group.
Второе ограничение для IOS: принадлежность пользователя к policy group можно задать только через RADIUS.
Все эти ограничения делают настройки не такими удобными, но тем не менее задача реализуема.

Конфигурация будет примерно следующего вида:

aaa authentication login vpn_ls group rad_acs local aaa accounting network vpn_acc_ls start-stop group rad_acs ! aaa group server radius rad_acs server 10.6.14.249 ip radius source-interface GigabitEthernet0/1 ! ip access-list extended ssl_vpn_acl permit ip any any ip access-list extended ssl_vpn_guest_acl permit ip any host 10.6.14.32 ip access-list standard ssl_vpn_split_acl permit 10.6.0.0 0.0.255.255 ! webvpn gateway SSLVPN_GATEWAY ip address 31.44.93.198 port 443 http-redirect port 80 ssl trustpoint SSLVPN_CERT inservice ! webvpn context SSL_Context secondary-color white title-color #669999 text-color black ! acl "ssl_vpn_acl" virtual-template 1 aaa authentication list vpn_ls aaa accounting list vpn_acc_ls gateway SSLVPN_GATEWAY ! ssl authenticate verify all inservice ! policy group SSL_Policy functions svc-enabled svc address-pool "ezvpn_pool" netmask 255.255.255.0 svc default-domain "zzz.local" svc keep-client-installed svc split include acl ssl_vpn_split_acl svc dns-server primary 10.6.14.36 svc dns-server secondary 10.6.14.37 ! policy group SSL_guest_Policy functions svc-enabled filter tunnel ssl_vpn_guest_acl svc address-pool "ezvpn_pool" netmask 255.255.255.0 svc default-domain "zzz.local" svc keep-client-installed svc split include acl ssl_vpn_split_acl svc dns-server primary 10.6.14.36 svc dns-server secondary 10.6.14.37 default-group-policy SSL_Policy

Как видно, мы создали дополнительную policy group.
Единственное различие политики SSL_guest_Policy - это появление дополнительного ACL:
filter tunnel ssl_vpn_guest_acl
Принадлежность пользователей к политикам будут определяться через RADIUS.
Одна из групп должна быть определена как default-group-policy, на тот случай, если группа не определена явно.

В качестве RADIUS применяем Cisco ACS, рассмотрим его настройки:

  1. Создаётся Authorization Profile:
    Policy Elements > Authorization and Permissions > Network Access > Authorization Profiles
    ustanovka_anyconnect_sslvpn_na_ios_router_02_ciscomaster.ru.jpg

    ustanovka_anyconnect_sslvpn_na_ios_router_03_ciscomaster.ru.jpg

  2. Применяем по признаку принадлежности пользователя к группе Guest_access:
    ustanovka_anyconnect_sslvpn_na_ios_router_04_ciscomaster.ru.jpg

    ustanovka_anyconnect_sslvpn_na_ios_router_05_ciscomaster.ru.jpg

Проверка

Состояние пула адресов:
show ip local pool

Текущие сессии:
show webvpn session context all

Статистика по пользователю:
show webvpn session user vs context all

Статистика по туннелю:
show webvpn stats tunnel

Общая статистика:
show webvpn stats

Дебаг:
debug webvpn

Источник:
http://www.cisco.com/c/en/us/support/docs/security/anyconnect-secure-mob...

SUPPORTING MULTIPLE GROUP POLICIES ON ANYCONNECT

Administrators and engineers who have worked with the classic Cisco IPSec VPN client will wonder how they can support multiple groups with different access rights using AnyConnect. The fact is that AnyConnect does support multiple groups, however it requires a radius server at the backend.

AnyConnect on a Cisco router without a radius server will only allow support for one group policy.

Использование нескольких group policy:
http://blog.dchidell.com/2016/03/21/cisco-ios-ssl-webvpn/

http://www.anticisco.ru/forum/viewtopic.php?f=2&t=8430&view=next

Комментарии

Спасибо за статью! У меня маршрутизатор 2901 с ios c2900-universalk9-mz.SPA.153-3.M3.bin, там нет некоторых команд, указанных в статье. Может быть у вас есть ссылочка где я могу скачать более новый ios? Про сайт циско.ком, мне известно)

версия у вас нормальная
посмотрите show ver, вероятно у вас неактивирована лицензия security

Точно, неактивирована. Что-то сам не глянул, спасибо)

Спасибо за статью!
но у меня на 2811 (c2800nm-advipservicesk9-mz.151-4.M10.bin) пакеты конфигуряться такой командой
webvpn install svc flash:/webvpn/anyconnect-win-4.3.03086-k9.pkg sequence 1

И можно ведь и без Virtual интерфейса делать?
http://www.cisco.com/cisco/web/support/RU/107/1071/1071235_110608-ssl-io...

В вашем примере как раз используется
virtual-template 1

MSK-R1-c2811(config)#crypto vpn ?
% Unrecognized command
MSK-R1-c2811(config)#webvpn ?
cef Enable data process in CEF path
context Specify webvpn context
gateway Virtual Gateway configuration
import Import files
install Install package command
sslvpn-vif SSLVPN Virtual Interface commands

Да, платформы 18, 28 и 38 "заморозили" на версии 151, - типа покупайте ISR gen2.
Для 151 используйте webvpn install svc. По моему это единственное отличие в контексте anyconnect

Добрый день! Подскажите, как загрузить честный сертификат?

Этот впорос подробно описывается в материале
Работа с ASA Anyconnect SSL VPN HUB

Добрый день ! Подскажите пожалуйста, возможно ли настроить SSL VPN по Вашей инструкции без статического адреса, используя только ddns ? И если да, что писать в секции WebVPN Gateway - там по умолчанию требуется ввести IP.

Добрый день,
там также можно привязаться к интерфейсу:
ip interface gigabitEthernet 0 port 443

Добрый день!
Спасибо за статью, не подскажите, соединение устанавливается, но пинги не проходят и в консоль роутера "сыпется" такое: *Feb 2 16:31:14.178: -Traceback= 64C8A378z 64C8C010z 64D33D6Cz 64D33E1Cz 64D33F9Cz 64D39110z 61FB4CB8z 600103A4z 603609F8z 60366614z.
Эмулирую через GNS 1.4.1. Образ роутера c7200-adventerprisek9-mz.152-4.M8.bin
Есть предположение, что именно из-за виртуализации не работает. Здесь же настраивал EasyVPN с крипто мапами и(или) через VTI все прекрасно работает. А с SSL VPN беда.

Можно попробовать IOS поставить более свежий

Попробовал накидать это в 1812, стартовая страничка есть, логинимся, жмем Application Access
Tunnel Connection (AnyConnect) Start, всплывающее окно и... не удается найти страницу. https://**.**.**.**/CACHE/webvpn/stc/1/index.html

Ой, сам дурак, клиента загрузил но не проинсталировал. :) Дальше вроде как всё хорошо, клиент качается ставится, но вот дальше не понимаю, во первых в поле сервера подключения почему то пусто, а если туда забить руками адресок то вылетает красное окно Untrusted server blocked! Ну ОК отключаем в настройках, теперь орет Untrusted server sertificate Уфф... ну на поверим... Можно ли этих проблем как то избежать?

Да, можно, вам понадобится Anyconnect SSL VPN using 3rd Party CA, см.
Работа с ASA Anyconnect SSL VPN HUB

Вы не авторизированы для доступа к этой странице.

Добрый день. Спасибо за статью). Не могу настроить на своем роутере anyconnect(. Подскажите какой IOS взять и какой .pkg для Windows клиентов что бы заработал ВПН на C3845-ADVSECURITYK9-M ? Вообще SSL VPN будет работа на этом железе?

Вообще у меня работал, но 3845 уже не поддерживаются, и вероятны проблемы с новыми версиями anyconnect.
С другой стороны на avito за 30к можно найти asa5506 поддерживающую до 50 подключений

Добрый день! Создал тестовую среду на 2911. Есть проблема. Если IP POOL для клиентов раздается из адресов внутренней сети (например сеть 192.168.1.0/25, IP POOL - 192.168.1.50-60), то внутренние ресурсы доступны. Если пул из другой сети (например - 192.168.2.10-20), то пинга в нужную сеть нет. Как правильно прописать маршрут в нужную сеть? Через IP ROUTE или через Policy?
С уважением.

Разобрался. Ничего не нужно. Проблема была в топологии тестовой среды.

Добрый день. А можно ли как то отключить Web интерфейс, чтобы только по клиенту можно было достучаться?

Добавить комментарий

Filtered HTML

  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Допустимые HTML-теги: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Строки и абзацы переносятся автоматически.

Plain text

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Строки и абзацы переносятся автоматически.
CAPTCHA
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.
Target Image