Настройка WebVPN (AnyConnect) на маршрутизаторах Cisco IOS (Cisco 2911/K9)
Функция 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
Если у вас нет возможности скачать пакеты с оф. сайта cisco.com, то пишите в комментариях, я помогу скачать.
Загружаем пакеты на маршрутизатор, любым удобным способом (прим. tftp
):
mkdir flash:/webvpn
copy tftp://192.168.1.2/anyconnect-win-4.5.03040-webdeploy-k9.pkg flash:/webvpn/anyconnect-win-4.5.03040-webdeploy-k9.pkg
copy tftp://192.168.1.2/anyconnect-linux64-4.5.03040-webdeploy-k9.pkg flash:/webvpn/anyconnect-linux64-4.5.03040-webdeploy-k9.pkg
copy tftp://192.168.1.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
В моем случае интерфейс 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.
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
- Состояние пула IP-адресов.
- Отобразить текущие VPN сессии.
- Отобразить детальную статистику по VPN-пользователю.
- Отобрать статистику по туннелю.
- Отобразить общую статистику по WebVPN.
- Включение debug режима.
К сожалению такого опыта не имею с Cisco.
Добрый день.
Поделитесь пожалуйста опытом подключения 2fa для вышеописанного способа подключения VPN.
Добрый день, коллеги!
Поделитесь, пожалуйста, со мной тоже ссылочкой на скачивание anyconnect.
Заранее огромное спасибо!
Так же хотелось бы получить актуальные пакеты. Благодарю заранее.
Да нет, я бы не сказал что сильно загружен роутер, вот вывод команды загрузки процессора при одном установленом тенеле 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
Добрый день.
Имеется в наличии 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
Привет. Есть возможность поделиться пакетами?
https://rutracker.org/forum/viewtopic.php?t=3515431
есть вопрос по разделению ролей без 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(если строку убрать то выдает ошибку что не прошла авторизация)
Спасибо!
Можно и мне пакеты? Спасибо!!!
К сожалению на данный момент, нет такой возможности у меня.
Так же хотелось бы получить актуальные пакеты. Благодарю заранее.
тоже хотел бы получить.
Заранее спасибо.
//Если у вас нет возможности скачать пакеты с оф. сайта cisco.com, то пишите в комментариях, я помогу скачать.
Можете помочь с пакетами?
Отправил письмо вам, ссылкой на скачивание