Содержание статьи:
- 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:
1 |
https://software.cisco.com/download/home/286281283/type/282364313/release/4.5.05030 |
Загружаем пакеты на маршрутизатор, любым удобным способом (прим. TFTP):
1 2 3 4 5 |
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 (последовательность):
1 2 3 |
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-битных пары ключей:
1 2 3 4 5 6 7 8 9 |
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, с необходимым набором характеристик и выпускаем сертификат:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
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):
1 2 3 |
aaa new-model aaa authentication login VPN_USERS local username user secret cisco |
Активируем работу https сервера:
1 |
ip http secure-server |
Создание пула IP-адресов для WebVPN
Пользователям WebVPN необходимо назначить IP-адрес LAN, чтобы они могли общаться с нашей сетью. Указываем пул IP-адресов, которые будут назначены VPN-пользователям. Пул IP-адресов может быть либо частью нашей локальной сети, либо совершенно другой сети:
1 |
ip local pool VPN-POOL 192.168.100.1 192.168.100.50 |
Настройка Virtual-Template Interface (VTI)
При каждом VPN-подключении позволяет создаётся отдельный виртуальный интерфейс (Virtual-Access). Virtual-Access интерфейс клонируется с Virtual-Template-интерфейса, который настраивается следующим образом:
1 2 |
interface Virtual-Template1 ip unnumbered GigabitEthernet0/0 |
Если в настройке маршрутизатора используется VRF, то необходимо так же это указать:
1 2 3 |
interface Virtual-Template1 vrf forwarding LAN ip unnumbered GigabitEthernet0/0 |
Настройка и включение WEBVPN шлюза
Виртуальный шлюз WebVPN позволяет использовать интерфейс или IP-адрес и номер порта, на котором служба WebVPN будет «прослушивать» входящие соединения:
1 2 3 4 5 |
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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
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 в другую подсеть компании.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
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), его и будем использовать:
1 |
aaa authentication login VPN_USERS local |
Определим списки атрибутов и зададим имя политики WebVPN, с которой мы хотим сопоставить этот список атрибутов:
1 2 3 4 5 |
aaa attribute list VPN_USERS attribute type user-vpn-group "VPN_USERS" aaa attribute list VPN_ADMINS attribute type user-vpn-group "VPN_ADMINS" |
Теперь создаем пользователей и назначаем их к определенным спискам атрибутов:
1 2 3 4 |
username user1 secret cisco username user1 aaa attribute list DefaultVPNPolicy username user2 secret cisco username user2 aaa attribute list FULLVPNPolicy |
В контексте указываем какой список аутентификации использовать:
1 2 |
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-сервера:
1 2 3 4 5 6 7 8 9 10 |
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 указываем какой список аутентификации использовать:
1 2 |
webvpn context VPNCONTEXT aaa authentication list VPN |
Проверка работы
Запускаем на клиенте браузер, вводим внешний адрес нашего роутера 212.212.0.1 и видим приглашение:
После авторизации, мы попадаем в своего рода внутренний портал, где так же можем скачать клиент VPN AnyConnect, посредством которого установить туннельное соединение с корпоративной сетью.
Так же приведу список полезных команд, для получения той или иной статистики по работе WebVPN:
- Состояние пула IP-адресов.
- Отобразить текущие VPN сессии.
- Отобразить детальную статистику по VPN-пользователю.
- Отобрать статистику по туннелю.
- Отобразить общую статистику по WebVPN.
- Включение debug режима.
1 2 3 4 5 6 |
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 через данный тунель невозможно.
МОжет кто то сталкивался? Может какието мысли, советы?
Спасибо!
А что по нагрузке на самом роутере в момент обырыва ? Да и в целом ? Такое ощущение что именно в этом кроется проблема.
Да нет, я бы не сказал что сильно загружен роутер, вот вывод команды загрузки процессора при одном установленом тенеле 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
Так же хотелось бы получить актуальные пакеты. Благодарю заранее.