среда, 16 марта 2011 г.

SSL VPN на IOS (Clientless + FullTunnel)

Задача: организовать безопасный доступ к ограниченному количеству ресурсов корпоративной сети извне без установки дополнительного клиента. Для полного доступа к ресурсам - предоставить возможность создания туннеля клентом, дистрибуцию которого организовать через то же бесклиентское подключение.
Схемка:

Для решения потребуется роутер с поддержкой SSL VPN (для fulltunnel anyconnect: Cisco870 и выше c IOS 12.4T) ну и сам клиент (anyconnect).

Имеем роутер с базовой настройкой NAT:
interface Loopback10
 description ###INSIDE###
 ip address 10.10.10.1 255.255.255.0
 ip nat inside
interface GigabitEthernet0/0
 description ###OuTSIDE###
 ip address 192.168.250.223 255.255.255.0
 ip nat outside
ip access-list standard LOCAL_LAN
 permit 10.10.10.0 0.0.0.255
ip nat inside source list LOCAL_LAN interface GigabitEthernet0/0 overload

Для начала потребуется самоподписанный сертификат. Генерим его, если еще нет:
Headend(config)#crypto pki trustpoint LOCAL_TP
Headend(ca-trustpoint)#enrollment selfsigned 
Headend(ca-trustpoint)#revocation-check none 
Headend(ca-trustpoint)#exit
Headend(config)#crypto pki enroll LOCAL_TP
% Include the router serial number in the subject name? [yes/no]:n 
*Mar 16 13:48:45.275: %CRYPTO-6-AUTOGEN: Generated new 512 bit key pair
% Include an IP address in the subject name? [no]: n
Generate Self Signed Router Certificate? [yes/no]: y

Router Self Signed Certificate successfully created
Включаем SSL сервер:
webvpn gateway SSLGATEWAY
 ip address 192.168.250.223 port 443  
 http-redirect port 80
 ssl trustpoint LOCAL_TP
 inservice
Атуентификация для SSL-клиентов:
aaa new-model
aaa authentication login SSL_AUTHEN_LIST local
Контекст, в который будут попадать клиенты :
webvpn context SSL_CONTEXT
  aaa authentication list SSL_AUTHEN_LIST
 gateway SSLGATEWAY
 inservice
Осталось прописать локальную базу пользователей:
username test password 0 test

Все. Базовая настройка бесклиентского SSL доступа настроена. Пользователи, заходя на https://192.168.250.223 будут попадать на страницу аутентификации:
Откуда после ввода пароля попадут на SSL-портал:

Добавим поддержку FullTunnel SSL.
Загружаем любым способом на флеш роутера клиенты под разные операционные системы:
Headend#sh flash: 
-#- --length-- -----date/time------ path
1     41412732 Mar 16 2011 13:41:10 c3845-advsecurityk9-mz.124-24.T4.bin
2            0 Mar 16 2011 14:20:28 webvpn
3            0 Mar 16 2011 14:20:28 webvpn/SSL_CONTEXT
4          135 Mar 16 2011 14:20:28 webvpn/SSL_CONTEXT/test.xml
5      4671469 Mar 16 2011 14:45:00 anyconnect-win-2.5.2001-k9.pkg
6      6679165 Mar 16 2011 14:45:24 anyconnect-linux-2.5.2001-k9.pkg
Инсталлируем их:
webvpn install svc flash:/webvpn/anyconnect-win-2.5.2001-k9.pkg sequence 1
Прописываем пул адресов для поключения:
ip local pool SSL_POOL 10.10.10.5 10.10.10.20
В контексте прописываем правила для клиентов:
webvpn context SSL_CONTEXT
 default-group-policy SSL_POLICY
 policy group SSL_POLICY
   functions svc-enabled
   svc address-pool "SSL_POOL"
   svc keep-client-installed
   svc split include 10.10.10.0 255.255.255.0
Ну в общем все. Теперь после успешного логина в портале появляется кнопка старта клиента:
Нажатие на нее инициирует скачивание клиента, его установку и создание нового подключения, но уже в режиме полного туннеля.
Update: Мультиконтекст.
Часто возникает ситуация, когда требуется применять к подключающимся пользователям разные политики безопасности, AAA, добавить поддержку встроенных клиентов.
Это можно организовать через создание отдельных контекстов SSL, разделение между которыми происходит по доменному имени:
webvpn gateway SSLGATEWAY
 ip address 192.168.250.223 port 443  
 http-redirect port 80
 ssl trustpoint LOCAL_TP
webvpn context SSL_CONTEXT1
  aaa authentication list SSL_AUTHEN_LIST1
 gateway SSLGATEWAY domain users1
webvpn context SSL_CONTEXT2
  aaa authentication list SSL_AUTHEN_LIST2
 gateway SSLGATEWAY domain users2
В данном примере при подключении по адресу 192.168.250.223/users1 будет проходить аутентификация по правилам SSL_AUTHEN_LIST1, а при подключении к 192.168.250.223/users2 - по правилам SSL_AUTHEN_LIST2.

Комментариев нет:

Отправить комментарий