Бесклиентское подключение (только с использованием браузера) — популярная топология. Это удобно, красиво и безопасно для внутренней сети. Но через браузер возможно обеспечить только связь протоколов, которые могут работать через него: HTTP(S), CIFS. Дополнительно можно пробросить и другие приложения (тонкий клиент), но только работающие по ТСР. Для этого используется Java.
Вообще говоря, настроить базово SSL VPN на ASA можно 2 командами
webvpn
enable {INTERFACE}
При этом для аутентификации будет использоваться локальная база данных пользователей, попадать вы будете в туннельную группу
DefaultRAGroup
, а групповые настройки применятся из групповой политикиDfltGrpPolicy
(все эти смешные названия можно увидеть, только через sh run all
). При включении SSL VPN шлюз будет использовать порт TCP/443 и самоподписанный сертификат для удостоверения «личности». Понятно, что все браузеры будут ругаться на самоподписанный сертификат, ибо ему нет доверия. Если на указанном интерфейсе также используется управление по ASDM на том же порту, то оно «переедет» на зарезервированный URLhttps://{IP}/admin
Дальнейший тюнинг
Можно явно задать группу, в которую будет подключаться тот или иной клиент. Для этого есть несколько возможностей:
1. Задать для каждой группы свой уникальный URL. Например, зададим для туннельной группы GUEST свой URL
https://{SERVER}/myguest
tunnel-group GUEST type remote-access
tunnel-group GUEST webvpn-attributes
group-url https://{SERVER}/myguest enable
2. Выдавать в окошке для подключения не только запрос на логин/пароль, но и меню для выбора группы, в которую мы захотим подключиться. Для этого надо явно включить это меню
webvpn
tunnel-group-list enable
И указать, как будет называться та или иная группа
tunnel-group GUEST webvpn-attributes
group-alias MYGUEST enable
3. Задать на конкретного пользователя привязку к туннельной группе
user guest attributes
group-lock value {TUNNEL-GROUP}
Мне больше всего нравится group-url. Должен обратить ваше внимание на то, что данные методы работают только в случае, когда пользователь идентифицируется своим логином и паролем (так по умолчанию). Если стоит задача идентифицировать пользователя его сертификатом, то там для привязки пользователя к группе используют либо OU поля subject сертификата и сопоставляют пользователю туннельную группу с тем же названием (если не найдено соответствия, то пускают в группу по умолчанию), либо же активируют так называемые правила сопоставления (по умолчанию отключены)
Tunnel-group-map enable rules
Далее, мы можем создать свой шаблон сопоставления атрибутов сертификата
crypto ca certificate map {MAP} {#}
subject-name {co|attr|nc|ne} {ТЕКСТ1}
issuer-name {co|attr|nc|ne} {ТЕКСТ2}
Как видно, в шаблоне может быть несколько абзацев и сравнивать мы можем как поле subject, так и поле issuer сертификата на полное (attr) или частичное (co) совпадение или несовпадение (ne,nc)
Что мы еще можем настроить?
Мы можем задать внешний вид окошка, который видит пользователь. Вплоть до указания полностью кастомизированной страницы, которую надо положить во flash ASA. Из консоли этого не сделать, но в ASDM есть прекрасный механизм, в котором вы можете визуально контролировать все вносимые изменения. Когда все изменения будут внесены, ASDM передаст на ASA XML файл с новой кастомизацией (customization)
Мы можем задать внешний вид окошка, который видит пользователь. Вплоть до указания полностью кастомизированной страницы, которую надо положить во flash ASA. Из консоли этого не сделать, но в ASDM есть прекрасный механизм, в котором вы можете визуально контролировать все вносимые изменения. Когда все изменения будут внесены, ASDM передаст на ASA XML файл с новой кастомизацией (customization)
Мы можем указать нормальный, а не самоподписанный сертификат. Сделать это можно, указав тот сервер сертификатов (trust-point), чей сертификат вы будете отсылать клиенту. Если этот сертификат имеет имя, которое разрешается в DNS, а также подписан доверенным корневым центром, то клиентский браузер не будет ругаться на такой сертификат. Задать сертификат можно так:
ssl trust-point {CA}
В этом же режиме можно явно указать, какой тип шифрования и хеширования применять для SSL VPN:
ssl encryption ?
3des-sha1 Indicate use of 3des-sha1 for ssl encryption
aes128-sha1 Indicate use of aes128-sha1 for ssl encryption
aes256-sha1 Indicate use of aes256-sha1 for ssl encryption
des-sha1 Indicate use of des-sha1 for ssl encryption
rc4-md5 Indicate use of rc4-md5 for ssl encryption
rc4-sha1 Indicate use of rc4-sha1 for ssl encryption
По умолчанию разрешено все.
Для использование внешних баз данных пользователей надо задать, каким именно ААА сервером пользоваться для аутентификации (про настройка ААА серверов читайте в статье про ААА)
tunnel-group {GROUPNAME} general-attributes
authentication-server-group {AAASERVER}
Вы можете для разных интерфейсов (если SSLVPN может терминироваться не на одном интерфейсе) применить разные сервера, указав интерфейс явно:
authentication-server-group ({INTERFACE}) {AAASERVER}
Для вящего удобства вы можете создавать группы ссылок, которые будет видеть клиент при подключении в свою группу. Все групповые настройки делаются в режиме (сначала создаем группу как внутреннюю, а потом заходим в режим её настройки)
Group-policy {GROUPNAME} internal
Group-policy {GROUPNAME} attributes
Привязать групповую политику к туннельной группе можно командой
Tunnel-group {TUNNELGROUP} general-attributes
Default-group-name {GROUPNAME}
Для настройки атрибутов, которые будут сопоставлены той или иной группе SSL VPN при бесклиентском подключении, надо использовать режим
Group-policy {GROUPNAME} attributes
Webvpn
В этом режиме можно настроить сервер SSO, домашнюю страницу, привязку кастомизации и т.д. Привязка списка доступных ссылок тоже осуществляется здесь, но с версии 8.0 такой список хранится в виде XML и поэтому его проще настроить через ASDM и передать на ASA.
Еще один крайне важный момент: как пользователю явно указать, какие ресурсы ему будут доступны? Обычный список доступа тут неприменим, т.к. напомню, что ASA на самом деле открывает сессию от себя. Поэтому придумана спец.конструкция
access-list {ACLNAME} webtype permit {url|tcp} {УСЛОВИЯ}
в которой можно явно задать, какие ресурсы (URL) , будут доступны пользователям SSL VPN. Например, разрешим только RDP на адрес 10.1.1.100 и https на адрес 10.1.1.150 и порт 8443
access-list GUEST webtype permit url rdp://10.1.1.100
access-list GUEST webtype permit url https://10.1.1.150:8443
Применить данный специальный список доступа нужно в том же режиме (group-policy -> webvpn) командой
filter value {ACLNAME}
Источник: anticisco.ru/blogs/2010/04/asa-статья-13-sslvpn-часть-2-настройка-бесклиент/
Комментариев нет:
Отправить комментарий