Содержание статьи:
- 1 Загрузка AnyConnect Secure Mobility Client на маршрутизатор
- 2 Генерация RSA ключей
- 3 Включение и настройка AAA аутентификации
- 4 Создание пула IP-адресов для WebVPN
- 5 Настройка Virtual-Template Interface (VTI)
- 6 Настройка и включение WEBVPN шлюза
- 7 Настройка и включение WEBVPN контекста
- 8 Использование нескольких политик в контексте
- 9 Проверка работы
Функция WebVPN обеспечивает поддержку удаленного доступа пользователей к корпоративным сетям из любого места в Интернете. WebVPN обеспечивает три режима доступа:
- Клиентский — Обеспечивает безопасный доступ к внутренним веб-ресурсам компании (прим. MS Outlook Web Access). Позволяет VPN-пользователям обозревать и получать доступ к файлам, расположенным на Windows серверах в корпоративной сети, посредством (CIFS).
- Тонкий клиент (Проброс портов) — Позволяет VPN-пользователям запускать клиентские приложения на их ПК через шифрованное соединение в корпоративной сети.
- Режим туннеля — Режим полного туннельного клиента обеспечивает легкий, централизованный и простой в использовании клиент SSL AnyConnect, который обеспечивает любой доступ к сетевому уровню компании.
Рассмотрим самый востребованный вариант настройки WebVPN в режиме туннеля. Настройка будет производится на оборудовании CISCO2911/K9 с версией прошивки 15.4(3)M9. Используемая версия клиента AnyConnect 4.5.03040.
Загрузка AnyConnect Secure Mobility Client на маршрутизатор
Скачиваем пакеты AnyConnect Headend Deployment Package:
https://software.cisco.com/download/home/286281283/type/282364313/release/4.5.05030
Загружаем пакеты на маршрутизатор, любым удобным способом (прим. TFTP):
mkdir flash:/webvpn copy tftp://192.168.7.2/anyconnect-win-4.5.03040-webdeploy-k9.pkg flash:/webvpn/anyconnect-win-4.5.03040-webdeploy-k9.pkg copy tftp://192.168.7.2/anyconnect-linux64-4.5.03040-webdeploy-k9.pkg flash:/webvpn/anyconnect-linux64-4.5.03040-webdeploy-k9.pkg copy tftp://192.168.7.2/anyconnect-macos-4.5.03040-webdeploy-k9.pkg flash:/webvpn/anyconnect-macos-4.5.03040-webdeploy-k9.pkg
Устанавливаем пакеты. При установке нескольких пакетов необходимо выставить у пакетов sequence (последовательность):
crypto vpn anyconnect flash:/webvpn/anyconnect-win-4.5.03040-webdeploy-k9.pkg sequence 1 crypto vpn anyconnect flash:/webvpn/anyconnect-linux64-4.5.03040-webdeploy-k9.pkg sequence 2 crypto vpn anyconnect flash:/webvpn/anyconnect-macos-4.5.03040-webdeploy-k9.pkg sequence 3
Генерация RSA ключей
Выполняем генерацию RSA 1024-битных пары ключей:
crypto key generate rsa label SSLVPN_KEYPAIR modulus 1024 The name for the keys will be: SSLVPN_KEYPAIR % The key modulus size is 1024 bits % Generating 1024 bit RSA keys, keys will be non-exportable... [OK] (elapsed time was 4 seconds)
Выпуск само-подписного сертификата
Объявляем на маршрутизаторе trustpoint, с необходимым набором характеристик и выпускаем сертификат:
crypto pki trustpoint SSLVPN_CERT enrollment selfsigned subject-name CN=firewallcx-certificate rsakeypair SSLVPN_KEYPAIR crypto pki enroll SSLVPN_CERT % Include the router serial number in the subject name? [yes/no]: yes % Include an IP address in the subject name? [no]: no Generate Self Signed Router Certificate? [yes/no]: yes Router Self Signed Certificate successfully created
Включение и настройка AAA аутентификации
Включаем режим AAA (Authentication, Authorization and Accounting), создаем список аутентификации (прим. VPN_USERS), использующий локальную базу данных пользователей и создаем тестового пользователя (прим. test):
aaa new-model aaa authentication login VPN_USERS local username user secret cisco
Активируем работу https сервера:
ip http secure-server
Создание пула IP-адресов для WebVPN
Пользователям WebVPN необходимо назначить IP-адрес LAN, чтобы они могли общаться с нашей сетью. Указываем пул IP-адресов, которые будут назначены VPN-пользователям. Пул IP-адресов может быть либо частью нашей локальной сети, либо совершенно другой сети:
ip local pool VPN-POOL 192.168.100.1 192.168.100.50
Настройка Virtual-Template Interface (VTI)
При каждом VPN-подключении позволяет создаётся отдельный виртуальный интерфейс (Virtual-Access). Virtual-Access интерфейс клонируется с Virtual-Template-интерфейса, который настраивается следующим образом:
interface Virtual-Template1 ip unnumbered GigabitEthernet0/0
Если в настройке маршрутизатора используется VRF, то необходимо так же это указать:
interface Virtual-Template1 vrf forwarding LAN ip unnumbered GigabitEthernet0/0
Настройка и включение WEBVPN шлюза
Виртуальный шлюз WebVPN позволяет использовать интерфейс или IP-адрес и номер порта, на котором служба WebVPN будет «прослушивать» входящие соединения:
webvpn gateway VPN_GW ip interface GigabitEthernet0/1 port 443 ssl trustpoint SSLVPN_CERT logging enable inservice
Пояснения по командам:
- Создаем шлюз WebVPN.
- Указываем используемый интерфейс и порт (GigabitEthernet0/1 — порт провайдера).
- Указываем какой trustpoint использовать (используем ранее созданный).
- Включаем логирование.
- Активируем работу шлюза.
Настройка и включение WEBVPN контекста
Контекст WebVPN используется для настройки ряда параметров для нашего VPN-сервера.
Пример типовой настройки контекста WebVPN:
webvpn context VPN_CONTEXT title "WebVPN - Powered By Cisco" login-message "Enter your credentials" virtual-template 1 aaa authentication list VPN_USERS gateway VPN_GW max-users 5 ssl authenticate verify all policy group VPN_USERS functions svc-enabled timeout idle 600 svc address-pool "VPN_POOL" netmask 255.255.255.0 svc default-domain "example.local" svc split dns "example.local" svc split include 192.168.1.0 255.255.255.0 svc dns-server primary 192.168.1.2 default-group-policy VPN_USERS inservice
Пояснения по командам:
- Задаем текст, который будет отображаться в заголовке страницы веб-браузера.
- Задаем текст, который будет отображаться в разделе входа в веб-страницу webvpn.
- Указываем какой шаблон Virtual-Template интерфейса использовать.
- Указываем какой список аутентификации использовать.
- Указываем какой использовать шлюз WebVPN.
- Задаем максимальное кол-во пользователей, которые могут подключится к данному VPN-соединению.
- Указываем использовать проверку подлинности SSL.
- (Далее идет настройка политики пользователей)
- Включаем туннельный режим. Подключившийся VPN-пользователь, получит возможность загрузить на свой ПК клиентское программное обеспечение AnyConnect.
- Задаем время простоя, после которого пользователь будет отключен.
- Указываем какой пул IP-адресов использовать, для выдачи IP-адресов подключившимся пользователям.
- Указываем какой домен использовать по-умолчанию (Если таковой имеется в вашей инфраструктуре).
- Команды svc split (dns, include) позволяет разделить туннелирование, указав, какой сетевой трафик и dns запросы домена будут отправлены через туннель VPN. Если эта команда не включена, пользователям VPN не будет разрешен доступ к Интернету при подключении к VPN.
- Указываем какой DNS-сервер использовать при подключении к VPN.
- Назначаем групповую политику используемую по-умолчанию.
- Активируем работу контекста.
Использование нескольких политик в контексте
К примеру необходимо использовать различный уровень туннельного доступа, для VPN-пользователей, то можно использовать несколько policy group в текущем контексте.
К примеру к ранее настроенной policy group VPN_USERS, необходимо еще добавить VPN_ADMINS, в которой будет использоваться split include в другую подсеть компании.
policy group VPN_USERS functions svc-enabled timeout idle 600 svc address-pool "VPN_POOL" netmask 255.255.255.0 svc default-domain "example.local" svc split dns "example.local" svc split include 192.168.1.0 255.255.255.0 svc dns-server primary 192.168.1.2 policy group VPN_ADMINS functions svc-enabled timeout idle 600 svc address-pool "VPN_POOL" netmask 255.255.255.0 svc default-domain "example.local" svc split dns "example.local" svc split include 192.168.2.0 255.255.255.0 svc dns-server primary 192.168.1.2
Принадлежность пользователя к той или иной policy group, можно задать с помощью локальной базы пользователей и при помощи RADIUS. Рассмотрим оба варианта.
Локальная политика аутентификации
Ранее мы создали список аутентификации (VPN_USERS), его и будем использовать:
aaa authentication login VPN_USERS local
Определим списки атрибутов и зададим имя политики WebVPN, с которой мы хотим сопоставить этот список атрибутов:
aaa attribute list VPN_USERS attribute type user-vpn-group "VPN_USERS" aaa attribute list VPN_ADMINS attribute type user-vpn-group "VPN_ADMINS"
Теперь создаем пользователей и назначаем их к определенным спискам атрибутов:
username user1 secret cisco username user1 aaa attribute list DefaultVPNPolicy username user2 secret cisco username user2 aaa attribute list FULLVPNPolicy
В контексте указываем какой список аутентификации использовать:
webvpn context VPNCONTEXT aaa authentication list VPN_USERS
Теперь при аутентификации пользователей, будет учитываться принадлежность их к той или иной policy group.
RADIUS аутентификация
Как настроить Radius аутентификацию с Windows Server 2012 NPS (Network Policy Server) на Cisco IOS можно посмотреть в статье. Принцип настройки аналогичен, с небольшими изменениями.
Первым делом создадим в Active Directory две группы безопасности (VPN_Users и VPN_Admins):
![]() |
![]() |
В оснастке Сервер политики сети (Network Policy Server) добавляем сетевые политики, по аналогии с выше упомянутой статьей. За исключением нескольких параметров:
- в условиях аутентификации не забываем указать соответственные группы безопасности (VPN_Users и VPN_Admins)
- в параметрах зависящие от поставщика, используем параметр Cisco-AV-Pair со значением webvpn:user-vpn-group=VPN_ADMINS и webvpn:user-vpn-group=VPN_USERS (где — VPN_ADMINS и VPN_USERS это политики WebVPN)
![]() |
![]() |
В итоге должна получится такие сетевые политики:
Переходим к конфигурации маршрутизатора, добавляем RADIUS-сервер и создаем список аутентификации при помощи RADIUS-сервера:
radius server NPS address ipv4 192.168.7.2 auth-port 1645 acct-port 1646 key CISCO exit aaa group server radius NPS server name NPS exit aaa authentication login VPN group NPS
В контексте WebVPN указываем какой список аутентификации использовать:
webvpn context VPNCONTEXT aaa authentication list VPN
Проверка работы
Запускаем на клиенте браузер, вводим внешний адрес нашего роутера 212.212.0.1 и видим приглашение:
После авторизации, мы попадаем в своего рода внутренний портал, где так же можем скачать клиент VPN AnyConnect, посредством которого установить туннельное соединение с корпоративной сетью.
Так же приведу список полезных команд, для получения той или иной статистики по работе WebVPN:
- Состояние пула IP-адресов.
- Отобразить текущие VPN сессии.
- Отобразить детальную статистику по VPN-пользователю.
- Отобрать статистику по туннелю.
- Отобразить общую статистику по WebVPN.
- Включение debug режима.
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
ПОНРАВИЛАСЬ ИЛИ ОКАЗАЛАСЬ ПОЛЕЗНОЙ СТАТЬЯ, ПОБЛАГОДАРИ АВТОРА
//Если у вас нет возможности скачать пакеты с оф. сайта cisco.com, то пишите в комментариях, я помогу скачать.
Можете помочь с пакетами?
Отправил письмо вам, ссылкой на скачивание
тоже хотел бы получить.
Заранее спасибо.
Так же хотелось бы получить актуальные пакеты. Благодарю заранее.
Можно и мне пакеты? Спасибо!!!
К сожалению на данный момент, нет такой возможности у меня.
есть вопрос по разделению ролей без radius
aaa authentication login default local
aaa authentication login VPN_USERS local
aaa authorization exec default local
!
aaa attribute list VPN_ADMINS
attribute type user-vpn-group «VPN_ADMINS»
!
aaa attribute list VPN_USERS
attribute type user-vpn-group «VPN_USERS»
username ADMIN privilege 15 secret 4 WWHfkWR04.1VSyplx2CaWJ3bPgNubTSCvZdY3kk0m0Q
username VPNADMIN privilege 15 secret 5 $1$JxGY$HdJbwqvy3Xkd23CUE.EVE.
username VPNADMIN aaa attribute list VPN_ADMINS
username VPNBUH secret 5 $1$F7V5$FbFtiCBSbXNei5q3j7TtS/
username VPNBUH aaa attribute list VPN_USERS
username VPNTDIR secret 5 $1$3TPP$5Zgf8qucluvriO/Tj4P8J1
username VPNTDIR aaa attribute list VPN_USERS
webvpn gateway VPN_GW
ip interface GigabitEthernet0/1.55 port 443
ssl trustpoint SSLVPN_CERT
logging enable
inservice
!
webvpn context VPN_CONTEXT
title «WebVPN — Powered By Cisco»
login-message «Enter your credentials»
aaa authentication list VPN_USERS
gateway VPN_GW
max-users 40
!
ssl authenticate verify all
inservice
!
policy group VPN_USERS
functions svc-enabled
timeout idle 600
svc address-pool «VPN_POOL» netmask 255.255.255.0
svc split include acl 25
!
policy group VPN_ADMINS
functions svc-enabled
timeout idle 600
svc address-pool «VPN_POOL» netmask 255.255.255.0
svc split include 10.150.10.0 255.255.255.0
default-group-policy VPN_USERS —эту строку оставляем?
—————————
в данном случаи все username отрабатывает через aaa authentication login VPN_USERS local и на aaa attribute list внимания не обращает . Даже пользователь без aaa attribute list будет логиниться через aaa authentication login VPN_USERS local и policy group VPN_USERS потому что оно стоит по default-group-policy VPN_USERS(если строку убрать то выдает ошибку что не прошла авторизация)
Спасибо!
Привет. Есть возможность поделиться пакетами?
https://rutracker.org/forum/viewtopic.php?t=3515431
Добрый день.
Имеется в наличии Cisco C881W-E-K9
Настроено все аналогично как в данной статье (за исключением Radius — не используется).
Но anyconnect постоянно реконектится, поэтому работать на RDP через данный тунель невозможно.
МОжет кто то сталкивался? Может какието мысли, советы?
Спасибо!
А что по нагрузке на самом роутере в момент обырыва ? Да и в целом ? Такое ощущение что именно в этом кроется проблема.
Удалось ли победить эту проблему?
Похожая ситуация
Максимальная скорость закачки 2-3 Мегабайта в секунду при этом процессор на маршрутизаторе грузится под 80%. Периодически при копировании больших файлов разрывает связь с anyconnect.
в логах при разрыве:
323554: Sep 22 16:10:39: %SYS-2-MALLOCFAIL: Memory allocation of 1740 bytes failed from 0x300B0F54, alignment 128
Pool: I/O Free: 93936 Cause: Memory fragmentation
Alternate Pool: None Free: 0 Cause: No Alternate pool
-Process= «encrypt proc», ipl= 3, pid= 338
-Traceback= 30011630z 300AD45Cz 300AD0D4z 300B0708z 3291FAD0z 3700AD9Cz 3700B0BCz 36FFCE68z 301CA58Cz 33D21D08z 33D20224z 30032B5Cz 30032B40z
323555: Sep 22 16:10:40: %TCP-6-NOBUFF: TTY0, no buffer available -Process= «encrypt proc», ipl= 3, pid= 338
323556: Sep 22 16:10:40: %TCP-6-NOBUFF: TTY0, no buffer available -Process= «encrypt proc», ipl= 3, pid= 338
Да нет, я бы не сказал что сильно загружен роутер, вот вывод команды загрузки процессора при одном установленом тенеле webvpn + 4 ipsec тунеля :
show processes cpu sorted
CPU utilization for five seconds: 8%/1%; one minute: 9%; five minutes: 9%
Кстати, на этом же роутере еще настроен cisco vpn client — все работает отлично и без нареканий — связть не рвется. Но дело в том что на Windows 10 его ставить проблематично, да и вообще для конечного пользователя удобнее конечно anyconnect.
Кстати, а какой версия IOS у вас используется? У меня c800-universalk9-mz.SPA.154-1.T
Так же хотелось бы получить актуальные пакеты. Благодарю заранее.
Добрый день, коллеги!
Поделитесь, пожалуйста, со мной тоже ссылочкой на скачивание anyconnect.
Заранее огромное спасибо!