суббота, 2 августа 2014 г.

Настройка SSL VPN (WebVPN) на cisco ASA. Часть 1

Существует 3 (три) способа организации SSL VPN:
  • 1. Clientless SSL VPN – удаленному клиенту требуется всего лишь наличие Web – браузера с включенной поддержкой SSL. Обеспечивается доступ к внутреннему Web – серверу (http, https), просмотр файлов посредством Common Internet File System (CIFS), доступ через Outlook Web Access (OWA) client, подключение к ftp – серверу.
  • 2. Thin-Client SSL VPN (Port Forwarding) – удаленный клиент должен скачать специальный Java-апплет для доступа определенных TCP приложений которые используют статические порты (UDP не поддерживается). Примером могут быть POP3, SMTP, IMAP, SSH, и Telnet. Стоит отметить, что данный метод не подойдет для приложений, которые используют динамическое определение порта.
  • 3. SSL VPN Client (SVC-Tunnel Mode) – удаленный клиент должен скачать специальное клиентское приложение на свой PC. Данный метод обеспечивает полный доступ к внутренним корпоративным ресурсам.
Пойдем по порядку и рассмотрим первый вариант. Если пост будет получаться объемный, то я разобью его на части. В общем, будет видно по ходу :).
Для ориентировки, будем собирать вот такую схему:


Небольшие пояснения к схеме. Существует сеть для администраторов (192.168.1.0/24) и сеть для серверов (10.10.10.0/24) на границе которых находится cisco ASA. В сети DMZ стоит Web – сервер (Web_Server), консоль (Console) для конфигурирования cisco ASA находится в сети Menegment. Имеется сеть INTERNET (2.2.2.0/30) и удаленный клиент (Remote_User 3.3.3.10/24), который выходит «в свет» через NAT (как обычно и бывает :)).
От нас требуется настроить SSL VPN (Web VPN) между удаленным клиентом и cisco ASA, для организации доступа к корпоративному Web – серверу по HTTP.
Для начала давайте настроим базовую сетевую доступность между всеми устройствами. Итак, начнем с роутера (Router).
  • R1>en
    R1#conf t
    Enter configuration commands, one per line. End with CNTL/Z.
    R1(config)#hostname ROUTER
    ROUTER(config)#int fa 0/0
    ROUTER(config-if)#ip address 2.2.2.1 255.255.255.252
    ROUTER(config-if)#ip nat outside
    ROUTER(config-if)#no shutdown
    ROUTER(config-if)#exit
    ROUTER(config)#int fa 0/0
    ROUTER(config)#int fa 0/1
    ROUTER(config-if)#ip address 3.3.3.1 255.255.255.252
    ROUTER(config-if)#ip nat inside
    ROUTER(config-if)#no shutdown
    ROUTER(config-if)#exit
    ROUTER(config)#ip access-list extended FOR_NAT
    ROUTER(config-ext-nacl)#permit ip 3.3.3.0 0.0.0.255 any
    ROUTER(config-ext-nacl)#exit
    ROUTER(config)#ip nat inside source list FOR_NAT interface fa 0/0
    ROUTER(config)#exit
    ROUTER#wr
    ROUTER#
Теперь перейдем на ASA и сделаем настройки на ней:
  • ASA> en
    Password:
    ASA#conf t
    ASA(config)# command-alias exec wr copy run disk0:/.private/startup-config
    ASA(config)# hostname ASA
    ASA(config)# enable password cisco
    ASA(config)# username admin password ciscocisco privilege 15
    ASA(config)# int ethernet 0/0
    ASA(config-if)# ip address 2.2.2.2 255.255.255.252
    ASA(config-if)# nameif outside
    ASA(config-if)# no shutdown
    INFO: Security level for "outside" set to 0 by default.
    ASA(config-if)# exit
    ASA(config)# int ethernet 0/1
    ASA(config-if)# ip address 192.168.1.1 255.255.255.0
    ASA(config-if)# nameif inside
    INFO: Security level for "inside" set to 100 by default.
    ASA(config-if)# no shutdown
    ASA(config-if)# exit
    ASA(config)# int ethernet 0/2
    ASA(config-if)# nameif dmz
    ASA(config-if)# security-level 50
    ASA(config-if)# ip address 10.10.10.1 255.255.255.0
    ASA(config-if)# no shutdown
    ASA(config-if)# exit
    ASA(config)# http server enable
    ASA(config)# http 192.168.1.0 255.255.255.0 inside
    ASA(config)# route outside 0.0.0.0 0.0.0.0 2.2.2.1
    ASA(config)# access-list ADMIN extended permit ip 192.168.1.0 255.255.255.0 any
    ASA(config)# access-group ADMIN in interface inside
    ASA(config)#wr
    ASA(config)# access-list FOR_NAT extended permit ip 192.168.1.0 255.255.255.0 any
    ASA(config)# access-list NO_NAT extended permit ip 192.168.1.0 255.255.255.0 10.10.10.0 255.255.255.0
    ASA(config)# nat (inside) 0 access-list NO_NAT
    ASA(config)# nat (inside) 1 access-list FOR_NAT
    ASA(config)# global (outside) 1 interface
    INFO: outside interface address added to PAT pool
    ASA(config)#wr
    ASA(config)#exit
    ASA#
Для начала нам хватит. Проверим сетевую доступность.
Console:


    где:
  • 1 – inside интерфейс ASA;
  • 2 – внутренний Web-server;
  • 3 – «интернет» IP – адрес роутера.
Remote_User:


    где:
  • 1 – шлюз по умолчанию (Router);
  • 2 – outside интерфейс ASA.
Теперь загружаем asdm на cisco ASA и затем запускаем его. Кто не знает, как это сделать, можно посмотреть вот тут.
Из первого окна переходим во вкладку «Wizards» и выбираем «SSL VPN Wizard»:


Откроется окно «Wizard»-а:


Выбираем первый пункт («Clientless SSL VPN Access») и нажимаем далее:


Здесь создаем новый Profile для нашего соединения. Задаем ему имя (1) и указываем, на какой интерфейс будут приходить запросы на установление SSL VPN от пользователей (2). Цифровые сертификаты мы не используем пока, так что оставляем поле пустым. Внизу видно, на какие адреса должны приходить пользователи для SSL VPN сервисов и для доступа к ASDM. Нажимаем «Next»:


Выбираем аутентификацию, используя локальную базу пользователей. Создадим для примера нового пользователя. Вносите имя и пароль, нажимаете «Add» и он должен появиться в списке. Нажимаем «Next»:


Здесь создадим новую групповую политику для наших SSL VPN пользователей. Нажимаем «Next»:


Итак, здесь нам нужно указать список серверов, которые будут показаны на странице web-браузера клиента в виде ссылок, и к которым он будет иметь доступ. Нажимаем «Manage» (1). Откроется небольшое окошко (по центру). В нем мы можем назначить, кому показывать этот список. Либо чисто конкретному юзеру, либо всей группе и так далее. Оставляем юзера (2) и нажимаем «Add» (3). Появится следующее окно. Тут задаем имя (4) и нажимаем «Add» (5). Появится следующее окно:


Здесь снова пишем название сервера и указываем его IP – адрес. Далее все время нажимаем «OK». На последнем окне нажимаем «Next»:


Нажимаем «Finish». Если вы используете GNS3 и у вас появились ошибки, то не пугайтесь. Это связано с тем, что созданный ранее список ссылок на сервер (Bookmark List) не может записаться в память. На реальном оборудовании этого не должно быть.
Итак, переходим на нашего Remote_User-а (3.3.3.10/24), открываем Web-браузер, набираем https://2.2.2.2 и пробуем получить доступ к «Домашней страничке ASA»:


После добавления сайта в доверенные и получения сертификата (https) выскочит окно для ввода логина и пароля. Вводим наш username и password, который мы создавали ранее. Нажимаем «Login»:


Появится главное окно (так называемый Portal). Слева не хитрое меню. Чуть правее мы можем выбрать то, что и каким образом нам делать. Либо открыть страницу по http, либо по https, либо залезть на ftp сервер. Так как у меня есть и http – сервер и ftp – сервер, то посмотрим и то и другое. Выбираем http из выпадающего меню и указываем IP-адрес сервера. Нажимаем «Browse». Вот, что мы получаем:


Сайт работает. Теперь ftp:


Ftp тоже работает!!!
Проверим наличие подключение на ASA («Monitoring»--«VPN»--«Sessions»):


Видно, что соединение есть :).
Но по условию нам необходим только http или https. Для этого надо добавить некоторые запреты. Добавлять правила можно как на целую группу, так и на отдельных пользователей. Добавим только на нашего пользователя VPN_USER. Для этого переходим вот по этому пути: «Configuration»--«AAA/Local Users»--«Local Users», там из списка выбираем «VPN_USER», нажимаем «Edit». В открывшемся окне идем в «VPN Policy»--«Clientless SSL VPN» и там выключаем возможность доступа к ftp «File Server Entry». Вот как это должно выглядеть:


Нажимаем «OK», затем «Apply». После этого возвращаемся на Remote_User и заходим снова на наш адрес. И вот что мы видим теперь:


У нас осталась возможность только открыть страничку по http или по https.
Итак, все получилось!!! Доступ к Web-серверу по http сделан. Конечно, мы сделали общие настройки. Если начинать углубляться, то настроить можно ой как много… Начиная от дизайна «домашней странички» при входе, и заканчивая перенаправление портов или еще чего интересного :). Ну это уже темы следующих постов, я так думаю. Если будут желающие посмотреть на такой тюнинг, то пишите, постараюсь ускорить этот процесс :).
Для ориентировки приведу пример команды show run:

ASA Version 8.0(2)
!
command-alias exec wr copy run disk0:/.private/startup-config
hostname ASA
enable password 2KFQnbNIdI.2KYOU encrypted
names
interface Ethernet0/0
nameif outside
security-level 0
ip address 2.2.2.2 255.255.255.252
interface Ethernet0/1
nameif inside
security-level 100
ip address 192.168.1.1 255.255.255.0
interface Ethernet0/2
nameif dmz
security-level 50
ip address 10.10.10.1 255.255.255.0

interface Ethernet0/3
shutdown
no nameif
no security-level
no ip address
interface Ethernet0/4
shutdown
no nameif
no security-level
no ip address
interface Ethernet0/5
shutdown
no nameif
no security-level
no ip address
passwd 2KFQnbNIdI.2KYOU encrypted
ftp mode passive
access-list ADMIN extended permit ip 192.168.1.0 255.255.255.0 any
access-list FOR_NAT extended permit ip 192.168.1.0 255.255.255.0 any
access-list NO_NAT extended permit ip 192.168.1.0 255.255.255.0 10.10.10.0 255.255.255.0

pager lines 24
mtu outside 1500
mtu inside 1500
mtu dmz 1500
no failover
icmp unreachable rate-limit 1 burst-size 1
asdm image disk0:/asdm-625.bin
no asdm history enable
arp timeout 14400
global (outside) 1 interface
nat (inside) 0 access-list NO_NAT
nat (inside) 1 access-list FOR_NAT
access-group ADMIN in interface inside
route outside 0.0.0.0 0.0.0.0 2.2.2.1 1

timeout xlate 3:00:00
timeout conn 1:00:00 half-closed 0:10:00 udp 0:02:00 icmp 0:00:02
timeout sunrpc 0:10:00 h323 0:05:00 h225 1:00:00 mgcp 0:05:00 mgcp-pat 0:05:00
timeout sip 0:30:00 sip_media 0:02:00 sip-invite 0:03:00 sip-disconnect 0:02:00
timeout uauth 0:05:00 absolute
dynamic-access-policy-record DfltAccessPolicy
http server enable
http 192.168.1.0 255.255.255.0 inside

no snmp-server location
no snmp-server contact
snmp-server enable traps snmp authentication linkup linkdown coldstart
no crypto isakmp nat-traversal
telnet timeout 5
ssh timeout 5
console timeout 0
threat-detection basic-threat
threat-detection statistics access-list
class-map inspection_default
match default-inspection-traffic
policy-map type inspect dns preset_dns_map
parameters
message-length maximum 512
policy-map global_policy
class inspection_default
inspect dns preset_dns_map
inspect ftp
inspect h323 h225
inspect h323 ras
inspect rsh
inspect rtsp
inspect esmtp
inspect sqlnet
inspect skinny
inspect sunrpc
inspect xdmcp
inspect sip
inspect netbios
inspect tftp
inspect icmp
service-policy global_policy global
webvpn
enable outside
group-policy SSL_VPN_GROUP internal
group-policy SSL_VPN_GROUP attributes
vpn-tunnel-protocol webvpn
username admin password M5soT6HHRslbuoh3 encrypted privilege 15
username VPN_USER password 5MZ4mUyk9ExHE.v5 encrypted privilege 0
username VPN_USER attributes
vpn-group-policy SSL_VPN_GROUP
tunnel-group My_SSL_VPN type remote-access
tunnel-group My_SSL_VPN general-attributes
default-group-policy SSL_VPN_GROUP

prompt hostname context
Cryptochecksum:973d50c2765043d9b3d9a6a9cae3c029
: end
ASA# 


А на этом я заканчиваю этот пост. В следующем посте я опишу настройку другого метода (SSL VPN Client (SVC-Tunnel Mode). Так что милости прошу, приходите.

Источник: go-to-easyit.com/2011/11/ssl-vpn-webvpn-cisco-asa-1.html

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

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