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

Распространенная настройка cisco ASA для предприятия (часть №3)

Да, это снова я :). Прошло пол года (даже больше :)) с момента написания последнего моего поста. Не ругайте меня сильно, я не ленился. Всё это время я пытался написать несколько постов по QoS, но когда уже было все готово, проштудирована масса материала, написана теория выяснилось (в процессе реализации практики), что в GNS3 невозможно загрузить интерфейс настолько, чтобы появились очереди. Что я только не пробовал... И специализированный IOS от cisco (Pagent), и несколько хостов, между которыми копировал большие объемы трафика, и ставил скорость в 60 Kb на интерфейсе и так далее. Ничего не получилось. Второй причиной является конечно работа, работать надо и зарабатывать тоже :).
По этим причинам я пока отложил QoS. Если уже не изыщу возможностей показать вам на практике его работу, то выложу написанную теорию с командами (кстати, можете мне написать, стоит ли выкладывать чистую теорию или нет).
Ну а пока я предлагаю вам продолжение постов по распространенной настройке cisco ASA. И, как обычно, кто заинтриговался, добро пожаловать под кат...

Легенда у нас следующая. Иногда на предприятии не хватает сетевых устройств и пусть у нас нет роутера, который занимается маршрутизацией внутренних сетей, а есть только L2-свитч и устройство безопасности cisco ASA с версией IOS 8.4.2. Следовательно, необходимо наложить дополнительные функции на cisco ASA, а именно маршрутизацию. Так же у нас есть только один интерфейс для связи с L2-свитчем. Ко всему, необходимо настроить подключение удаленных пользователей с использованием VPN.
Задача заключается в следующем: организовать сетевое взаимодействие между внутренними сетями с учетом требований по безопасности. Для гостевой сети организовать доступ только в "INTERNET", причем с ограничением по скорости в 512 Kb. Организовать подключение удаленных пользователей через Remote Access VPN, причем удаленные пользователи должны ходить в интернет через устройство cisco ASA и иметь доступ к внутренним ресурсам компании. Сделать доступным из "INTERNET" внутренний сайт компании. Все это дело необходимо сделать через CLI.
Схема сегодня выглядит следующим образом:



У нас есть центральный офис с установленными cisco ASA и L2-switch. На свитче созданы 4 сети (vlan-а), которые через Trunk подаются на устройство безопасности. Вот характеристики каждого Vlan-а:
  • 1. Vlan_Office_1 - сеть 192.168.2.0/24. Security Level у неё равен 100. В ней находится первая часть сотрудников компании. Из этой подсети имеется доступ в интернет, доступ в Vlan_Office_2, Vlan_DMZ и Vlan_Guests;
  • 2. Vlan_Office_2 - сеть 192.168.3.0/24. Security Level у неё равен 100. В ней находится вторая часть сотрудников компании. Из этой подсети имеется доступ в интернет, доступ в Vlan_Office_1, Vlan_DMZ и Vlan_Guests;
  • 3. Vlan_DMZ - сеть 192.168.1.0/24. Security Level у неё равен 50. В ней находится Web-Server (WWW-SRV), на котором работает сайт компании. Соответственно он доступен из интернета по порту 80 (TCP) и в неё есть доступ из подсетей Vlan_Office_1, Vlan_Office_2, а также из Vlan_Guests только по 80-му порту;
  • 4. Vlan_Guests - гостевая подсеть 192.168.4.0/24, в которой находятся "гости", пришедшие к нам в офис. Security Level у него равен 10. Из этой подсети имеется доступ в интернет, причем с ограничением по скорости в 512 Kb и доступ к внутреннему сайту (SRV-WWW) только по 80-му порту.
Имеется сеть, эмулирующая "INTERNET", которая собрана на двух роутерах (Router_1 и Router_2). На роутере Router_1 имеется loopback-интерфейс (IP-адрес 1.1.1.1), который мы будем использовать для проверки доступности "INTERNET". Для обмена маршрутами используется протокол динамической маршрутизации OSPF.
Так же имеется удаленный пользователь, который находится за роутером Remote_Router в подсети 192.168.5.0/24 (предположим это internet-кафе). Этот удаленный пользователь имеет доступ в интернет, но без подключения через VPN к центральному офису он считается не безопасным.
Ну что же, общая информация есть, можно приступать. Начнем традиционно, обеспечим сетевое взаимодействие. Начнем с роутера Remote_Router:

R3#
R3#conf t
R3(config)#hostname Remote_Router
Remote_Router(config)#int fa 0/0
Remote_Router(config-if)#ip address 10.10.10.1 255.255.255.252 -назначаем IP-адреса на интерфейсы;
Remote_Router(config-if)#no sh
Remote_Router(config-if)#ip nat outside - указываем, что данный интерфейс будет Outside для NAT;
Remote_Router(config-if)#exit
Remote_Router(config)#int fa 1/0
Remote_Router(config-if)#ip address 192.168.5.1 255.255.255.0
Remote_Router(config-if)#no sh
Remote_Router(config-if)#ip nat inside - указываем, что данный интерфейс будет Inside для NAT;
Remote_Router(config-if)#exit
Remote_Router(config)#ip route 0.0.0.0 0.0.0.0 10.10.10.2 - прописываем маршрут по умолчанию;
Remote_Router(config)#ip access-list extended FOR_NAT - создаем список доступа для NAT;
Remote_Router(config-ext-nacl)#permit ip 192.168.5.0 0.0.0.255 any -прописываем нужную нам подсеть;
Remote_Router(config-ext-nacl)#exit
Remote_Router(config)#ip nat inside source list FOR_NAT interface fa 0/0 - включаем NAT (в нашем случае это будет PAT);
Remote_Router(config)#exit
Remote_Router#wr
Remote_Router# 


Переходим на роутер Router_2:

R2#conf t
R2(config)#hostname Router_2
Router_2(config)#int fa 0/0
Router_2(config-if)#ip address 10.10.10.2 255.255.255.252
Router_2(config-if)#no sh
Router_2(config-if)#exit
Router_2(config)#int fa 1/0
Router_2(config-if)#ip address 20.20.20.2 255.255.255.252
Router_2(config-if)#no sh
Router_2(config-if)#exit
Router_2(config)#router ospf 1 - включаем процесс OSPF;
Router_2(config-router)#network 20.20.20.0 0.0.0.3 area 0 - добавляем нужные сети в процесс OSPF;
Router_2(config-router)#network 10.10.10.0 0.0.0.3 area 1
Router_2(config-router)#exit
Router_2(config)#exit
Router_2#wr
Router_2# 


Теперь роутер Router_1:

R1#
R1#conf t
R1(config)#hostname Router_1
Router_1(config)#int fa 0/0
Router_1(config-if)#ip address 20.20.20.1 255.255.255.252
Router_1(config-if)#no sh
Router_1(config-if)#exit
Router_1(config)#int fa 1/0
Router_1(config-if)#ip address 30.30.30.2 255.255.255.252
Router_1(config-if)#no sh
Router_1(config-if)#exit
Router_1(config)#int loopback 0
Router_1(config-if)#ip address 1.1.1.1 255.255.255.255 - создаем Loopback интерфейс для дальнейших проверок;
Router_1(config-if)#exit

Router_1(config)#router ospf 1
Router_1(config-router)#network 20.20.20.0 0.0.0.3 area 0
Router_1(config-router)#network 1.1.1.1 0.0.0.0 area 0
Router_1(config-router)#network 30.30.30.0 0.0.0.3 area 2
Router_1(config-router)#exit
Router_1(config)#exit
Router_1#wr
Router_1# 


С роутерами закончили, перейдем на свитч и настроем его:

R4#conf t
Switch(config)#hostname Switch
Switch(config)#vlan 10 - создаем нужные Vlan-ы;
Switch(config-vlan)#name Vlan_DMZ - указываем их название;
Switch(config-vlan)#exit
Switch(config)#vlan 20
Switch(config-vlan)#name Vlan_Office_1
Switch(config-vlan)#exit
Switch(config)#vlan 30
Switch(config-vlan)#name Vlan_Office_2
Switch(config-vlan)#exit
Switch(config)#vlan 40
Switch(config-vlan)#name Vlan_Guests
Switch(config-vlan)#exit
Switch(config)#int fa 1/0 - данный интерфейс смотрит в сторону cisco ASA и будет в режиме trunk;
Switch(config-if)#switchport trunk encapsulation dot1q - назначаем инкапсуляцию 802.1q;
Switch(config-if)#switchport mode trunk - переводим интерфейс в режим Trunk;
Switch(config-if)#switchport trunk allowed vlan 1,10,20,30,40,1002-1005 - прописываем разрешенные vlan-ы, которые будут тут "летать" (опционально)
;
Switch(config-if)#exit
Switch(config-if)#int fa 1/1
Switch(config-if)#switchport mode access
Switch(config-if)#switchport access vlan 40 - поочередно назначаем интерфейсы в нужные vlan-ы;
Switch(config-if)#exit
Switch(config)#int fa 1/2
Switch(config-if)#switchport mode access
Switch(config-if)#switchport access vlan 30
Switch(config-if)#exit
Switch(config)#int fa 1/3
Switch(config-if)#switchport mode access
Switch(config-if)#switchport access vlan 20
Switch(config-if)#exit
Switch(config)#int fa 1/4
Switch(config-if)#switchport mode access
Switch(config-if)#switchport access vlan 10
Switch(config-if)#exit
Switch(config)#exit
Switch#wr
Switch# 


Теперь переходим к настройке cisco ASA:

ciscoasa>
ciscoasa> en
Password:
ciscoasa# conf t
ciscoasa(config)# hostname Cisco-ASA - прописываем название нашего устройства;
Cisco-ASA(config)# class-map inspection_default - если у вас нет этих команд в листинге "show run", то советую вам их прописать (это стандартные политики инспектирования трафика);
Cisco-ASA(config-cmap)# match default-inspection-traffic
Cisco-ASA(config-cmap)# policy-map type inspect dns preset_dns_map
Cisco-ASA(config-pmap)# parameters
Cisco-ASA(config-pmap-p)# message-length maximum client auto
Cisco-ASA(config-pmap-p)# message-length maximum 512
Cisco-ASA(config-pmap-p)# policy-map global_policy
Cisco-ASA(config-pmap)# class inspection_default
Cisco-ASA(config-pmap-c)# inspect dns preset_dns_map
Cisco-ASA(config-pmap-c)# inspect ftp
Cisco-ASA(config-pmap-c)# inspect h323 h225
Cisco-ASA(config-pmap-c)# inspect h323 ras
Cisco-ASA(config-pmap-c)# inspect rsh
Cisco-ASA(config-pmap-c)# inspect rtsp
Cisco-ASA(config-pmap-c)# inspect esmtp
Cisco-ASA(config-pmap-c)# inspect sqlnet
Cisco-ASA(config-pmap-c)# inspect skinny
Cisco-ASA(config-pmap-c)# inspect sunrpc
Cisco-ASA(config-pmap-c)# inspect xdmcp
Cisco-ASA(config-pmap-c)# inspect sip
Cisco-ASA(config-pmap-c)# inspect netbios
Cisco-ASA(config-pmap-c)# inspect tftp
Cisco-ASA(config-pmap-c)# inspect ip-options
Cisco-ASA(config-pmap-c)# inspect icmp
Cisco-ASA(config-pmap-c)# service-policy global_policy global -применяем политики глобально на устройстве;
Cisco-ASA(config)# int gigabitEthernet 0 - заходим на интерфейс, который будет смотреть в сторону "INTERNET";
Cisco-ASA(config-if)# nameif outside - определяем его как интерфейс "Outside";
Cisco-ASA(config-if)# ip address 30.30.30.1 255.255.255.252 - назначаем ему IP-адрес;
Cisco-ASA(config-if)# no shutdown - включаем интерфейс;
Cisco-ASA(config-if)# exit
Cisco-ASA(config)# route outside 0.0.0.0 0.0.0.0 30.30.30.2 -прописываем маршрут по умолчанию;
Cisco-ASA(config)# interface gigabitEthernet 1 - заходим на интерфейс, который смотрит в сторону свитча;
Cisco-ASA(config-if)# no shutdown - включаем его;
Cisco-ASA(config-if)# exit
Cisco-ASA(config)# interface gigabitEthernet 1.10 - "создаем" sub-интерфейс. Обращу внимание на то, что № после точки НЕ привязывается сразу к vlan-у, как это происходит на cisco роутерах;
Cisco-ASA(config-subif)# vlan 10 - отдельной командой определяем принадлежность данного sub-интерфейса нужному vlan-у;
Cisco-ASA(config-subif)# no shutdown - на всякий случай включаем его;
Cisco-ASA(config-subif)# nameif DMZ - указываем ему имя;
Cisco-ASA(config-subif)# security-level 50 - назначаем ему security-level, оговоренный выше для каждой подсети;
Cisco-ASA(config-subif)# ip address 192.168.1.1 255.255.255.0 -назначаем IP-адрес, который является шлюзом для данной сети;
Cisco-ASA(config-subif)# exit
Cisco-ASA(config)# interface gigabitEthernet 1.20
Cisco-ASA(config-subif)# vlan 20
Cisco-ASA(config-subif)# no shutdown
Cisco-ASA(config-subif)# nameif Office_1
Cisco-ASA(config-subif)# security-level 100
Cisco-ASA(config-subif)# ip address 192.168.2.1 255.255.255.0
Cisco-ASA(config-subif)# exit
Cisco-ASA(config)# interface gigabitEthernet 1.30
Cisco-ASA(config-subif)# vlan 30
Cisco-ASA(config-subif)# no shutdown
Cisco-ASA(config-subif)# nameif Office_2
Cisco-ASA(config-subif)# security-level 100
Cisco-ASA(config-subif)# ip address 192.168.3.1 255.255.255.0
Cisco-ASA(config-subif)# exit
Cisco-ASA(config)# interface gigabitEthernet 1.40
Cisco-ASA(config-subif)# vlan 40
Cisco-ASA(config-subif)# no shutdown
Cisco-ASA(config-subif)# nameif Guests
Cisco-ASA(config-subif)# security-level 10
Cisco-ASA(config-subif)# ip address 192.168.4.1 255.255.255.0
Cisco-ASA(config-subif)# exit
Cisco-ASA(config)# object network DMZ - для каждой подсети создадим свой объект (object);
Cisco-ASA(config-network-object)# subnet 192.168.1.0 255.255.255.0 -прикрепляем за каждым объектом свою подсеть;
Cisco-ASA(config-network-object)# exit
Cisco-ASA(config)# object network Office_1
Cisco-ASA(config-network-object)# subnet 192.168.2.0 255.255.255.0
Cisco-ASA(config-network-object)# nat (office_1,outside) dynamic interface - для оговоренных выше подсетей включаем NAT (в нашем случае PAT). Делается это именно здесь, так как, напомню, что с версии IOS 8.3 для cisco ASA, настройка NAT поменялась;
Cisco-ASA(config-network-object)# exit
Cisco-ASA(config)# object network Office_2
Cisco-ASA(config-network-object)# subnet 192.168.3.0 255.255.255.0
Cisco-ASA(config-network-object)# nat (office_2,outside) dynamic interface
Cisco-ASA(config-network-object)# exit
Cisco-ASA(config)# object network Guests
Cisco-ASA(config-network-object)# subnet 192.168.4.0 255.255.255.0
Cisco-ASA(config-network-object)# nat (guests,outside) dynamic interface
Cisco-ASA(config-network-object)# exit
Cisco-ASA(config)# same-security-traffic permit inter-interface - чтобы выполнить условие прохождения трафика между Office_1 и Office_2 необходима данная команда. Она разрешает прохождение трафика между разными интерфейсами с одинаковым security-level;
Cisco-ASA(config)# access-list ACCESS-FOR-GUESTS extended deny ip object Guests object Office_1 - создаем список доступа для Vlan_Guests. Этой строчкой запрещаем трафик в сеть Office_1;
Cisco-ASA(config)# access-list ACCESS-FOR-GUESTS extended deny ip object Guests object Office_2 - этой строчкой запрещаем трафик в сеть Office_2;
Cisco-ASA(config)# access-list ACCESS-FOR-GUESTS extended permit tcp object Guests object DMZ eq www - этой строчкой разрешаем доступ из Vlan_Guests на внутренний сайт компании по 80-му порту;
Cisco-ASA(config)# access-list ACCESS-FOR-GUESTS extended deny ip object Guests object DMZ - этой строчкой запрещаем любой другой трафик из Vlan_Guests в сеть DMZ;
Cisco-ASA(config)# access-list ACCESS-FOR-GUESTS extended permit ip object Guests any - этой строчкой разрешаем весь остальной трафик из Vlan_Guests (для обеспечения доступа в "INTERNET";
Cisco-ASA(config)# access-group ACCESS-FOR-GUESTS in interface Guests -привязываем созданный список доступа к интерфейсу Guests на входе;
Cisco-ASA(config)# exit
Cisco-ASA# 


Немного остановимся. На данный момент мы уже выполнили несколько условий, оговоренных выше. В частности: настроили сетевую доступность между внутренними сетями с необходимыми разрешениями (замечу, что для этого достаточно было настроить соответствующие security-level-ы и всего лишь один список доступа), обеспечили выход в "INTERNET" нужным сетям и организовали сетевую доступность до удаленного пользователя (по крайней мере до удаленного роутера). Теперь давайте это все проверим.
Зайдем для начала на машину из сети Office_1 (HOST_3):


    где:
  • 1 - внутренний web-сервер организации (SRV-WWW);
  • 2 - хост из подсети Office_2 (HOST_2);
  • 3 - хост из подсети Guests (HOST_1);
  • 4 - IP-адрес Loopback-интерфейса на роутере Router_1, который показывает, что доступ в "INTERNET" имеется.
На следующем рисунке видно, что сайт компании так же доступен и открывается:

  
Уверяю вас, результаты из подсети Office_2 такие же, так что приводить их тут не буду. Перейдем лучше на хост из подсети Guests (HOST_1) и убедимся, что доступ с него имеется только в "INTERNET" (пока еще не урезанный :)) и к внутреннему сайту компании по 80-му порту:

  
    где:
  • 1 - внутренний web-сервер организации (SRV-WWW);
  • 2 - хост из подсети Office_2 (HOST_3);
  • 3 - хост из подсети Office_1 (HOST_2);
  • 4 - IP-адрес Loopback-интерфейса на роутере Router_1, который показывает, что доступ в "INTERNET" имеется.
Проверим теперь открытие сайта компании:

  
Все работает. Двигаемся дальше. Сделаем доступным наш внутренний сайт пользователям из "INTERNET". Сделать это можно несколькими способами. Рассмотрим их. Возвращаемся на cisco ASA и делаем первым способом:

Cisco-ASA(config)# object network SRV-WWW - создаем отдельный объект для внутреннего сервера;
Cisco-ASA(config-network-object)# host 192.168.1.10 - прописываем IP-адрес внутреннего сервера;
Cisco-ASA(config-network-object)# nat (DMZ,outside) static interface service tcp 80 80 - настраиваем правило NAT (статический). Теперь при обращении к внешнему IP-адресу Cisco-ASA на 80-й порт, эти запросы будут перебрасываться на IP-адрес сервера (192.168.1.10) на порт 80;
Cisco-ASA(config-network-object)# exit
Cisco-ASA(config)# access-list OUTSIDE extended permit tcp any object SRV-WWW eq 80 - для того, чтобы NAT заработал, необходимо сделать соответствующие разрешения. Для этого создаем список доступа. Замечу, что в качестве адреса назначения мы используем именно внутренний IP-адрес, а не внешний, как это было в старых версиях IOS (8.2 и ранние);
Cisco-ASA(config)# access-group OUTSIDE in interface outside -прикрепляем созданный список к интерфейсу outside;
Cisco-ASA(config)#wr
Cisco-ASA(config)# 

  
Теперь перейдем на Remote_User (192.168.5.10) и проверим доступность внутреннего сайта:


    где:
  • 1 - успешный "ping" внешнего IP-адреса Cisco-ASA;
  • 2 - успешное открытие внутреннего сайта компании, при обращении на внешний (outside) IP-адрес Cisco-ASA;
Итак, первый способ сделали и он работает. Но у него есть небольшой недостаток. Если вам потребуется добавить еще какой-нибудь порт для проброса, то данный способ не подойдет. Он может пробрасывать только один порт. Т.е. если вы попытаетесь добавить команду с другим портом (например вот такую: nat (DMZ,outside) static interface service udp 69 69 (это проброс tftp)), то эта команда просто перезапишет существующую.
Вот тут и появляется второй способ, который позволяет пробрасывать целые группы портов на один и тот же внутренний IP-адрес. Для демонстрации этого метода я предлагаю добавить к нашей изначальной задаче еще проброс RDP (TCP 3389) и TFTP (UDP 69) портов, причем предположим, что нам нужно пробросить не один порт UDP 69, а группу портов UDP от 65 до 70 (просто для примера :)) на внутренний сервер (SRV-WWW).
Возвращаемся на Cisco-ASA:

Cisco-ASA(config)# object network SRV-WWW
Cisco-ASA(config-network-object)# no nat (DMZ,outside) static interface service tcp www www - убираем из конфигурации статический NAT, сделанный ранее;
Cisco-ASA(config-network-object)# exit
Cisco-ASA(config)# clear configure access-list OUTSIDE - данной командой мы полностью убираем список доступа OUTSIDE (создадим его потом заново) и привязку его к интерфейсу Guests. Команда clear configure очень полезная, она позволяет намного быстрее убирать ненужные блоки в конфигурации (не нужно ставить "no" перед каждой командой, которую надо удалить). Поставьте после нее знак "?" и вы увидите, что можно почистить с ее помощью;
Cisco-ASA(config)# object service TCP_3389 - создадим объекты для оговоренных портов;
Cisco-ASA(config-service-object)# service tcp source eq 3389 -добавляем в качестве источника нужный нам порт в объект;
Cisco-ASA(config-service-object)# exit
Cisco-ASA(config)# object service TCP_80
Cisco-ASA(config-service-object)# service tcp source eq 80
Cisco-ASA(config-service-object)# exit
Cisco-ASA(config)# object service RANGE_UDP_65_70
Cisco-ASA(config-service-object)# service udp source range 65 70 -добавляем группу портов (как оговорили немного выше);
Cisco-ASA(config-service-object)# exit
Cisco-ASA(config)# object-group service TCP_PORTS tcp - сразу создадим группу объектов, для дальнейшего использования в списке доступа;
Cisco-ASA(config-service-object-group)# port-object eq 3389 - каждый порт тут выступает в качестве объекта;
Cisco-ASA(config-service-object-group)# port-object eq 80
Cisco-ASA(config-service-object-group)# exit
Cisco-ASA(config)# object-group service UDP_PORTS udp
Cisco-ASA(config-service-object-group)# port-object range 65 70 - для UDP портов задаем диапазон;
Cisco-ASA(config-service-object-group)# exit
Cisco-ASA(config)# nat (DMZ,outside) source static SRV-WWW interface service TCP_3389 TCP_3389 - включаем статический NAT, тем самым обеспечивая проброс портов (теперь, все запросы, приходящие на внешний IP-адрес и на соответствующий порт, будут направляться на наш внутренний сервер на соответствующий порт). В данном случае один порт;
Cisco-ASA(config)# nat (DMZ,outside) source static SRV-WWW interface service TCP_80 TCP_80
Cisco-ASA(config)# nat (DMZ,outside) source static SRV-WWW interface service RANGE_UDP_65_70 RANGE_UDP_65_70 - а в данном случае, диапазон;
Cisco-ASA(config)# access-list OUTSIDE extended permit tcp any object SRV-WWW object-group TCP_PORTS - соответственно, для работы сделанной конфигурации нужно прописать разрешения. Для этого снова создаем список доступа OUTSIDE (в качестве портов назначения указываем группы объектов);
Cisco-ASA(config)# access-list OUTSIDE extended permit udp any object SRV-WWW object-group UDP_PORTS
Cisco-ASA(config)# access-group OUTSIDE in interface outside -прикрепляем его к интерфейсу;
Cisco-ASA(config)# exit
Cisco-ASA# wr 


Проверим нашу работу. Для этого, я дополнительно установил на SRV-WWW (192.168.1.10) маленький TFTP сервер и открыл доступ по RDP. Работу сайта и RDP будем проверять с Remote_User (192.168.5.10), а работу TFTP - сервера проверим с роутера Remote_Router (просто скопируем его конфигурацию). Идем на Remote_User:

  
Как видим, все работает. Идем на Remote_Router:

Remote_Router#copy running-config tftp:
Address or name of remote host []? 30.30.30.1
Destination filename [remote_router-confg]?
!!
1021 bytes copied in 0.836 secs (1221 bytes/sec)
Remote_Router# 


Вроде скопировалось, посмотрим появился ли этот файл на SRV-WWW в папке TFTP-сервера:


Все на месте! Ну и напоследок, посмотрим счетчики трансляций NAT на Cisco-ASA:


Из рисунка видно, что счетчики возрастают у каждого правила трансляции NAT. Пусть вас не пугает параметр untranslate_hits, он обозначает трансляцию внешнего адреса в реальный (внутренний), а translate_hits реального адреса (внутреннего) во внешний.
С очередной задачей справились. Конечно, второй способ более трудоемкий, но он позволяет пробрасывать целые группы портов, а не один. Да и в дальнейшем, при необходимости добавления новых портов их просто необходимо будет добавить в соответствующие группы объектов. Выбор за вами :).
А мы двигаемся дальше. Теперь перейдем к настройке Remote Access VPN. Пора подключить нашего удаленного пользователя к офису и обеспечить ему безопасное подключение к "INTERNET" :). Делать это, как я уже говорил в самом начале, мы будем через CLI. Так что прямо идем на консоль Cisco-ASA:

Cisco-ASA(config)# ip local pool VPN-POOL 192.168.6.1-192.168.6.254 mask 255.255.255.0 - создаем пул IP-адресов для удаленных пользователей;
Cisco-ASA(config)# object network VPN-USERS - создаем объект для этого пула;
Cisco-ASA(config-network-object)# subnet 192.168.6.0 255.255.255.0
Cisco-ASA(config-network-object)#exit
Cisco-ASA(config)# nat (outside,outside) source dynamic VPN-USERS interface - этим правилом NAT мы обеспечиваем доступ в интернет удаленным пользователям (указываем, что необходимо сделать NAT (PAT) для сети VPN-USERS, приходящей на интерфейс outside и уходящей через него же);
Cisco-ASA(config)# nat (outside,office_1) source static VPN-USERS VPN-USERS - делаем исключение из NAT удаленных пользователей, для обеспечения доступа их во внутренние сети (в старых версиях IOS это команда "nat 0");
Cisco-ASA(config)# nat (outside,office_2) source static VPN-USERS VPN-USERS
Cisco-ASA(config)# nat (outside,DMZ) source static VPN-USERS VPN-USERS
Cisco-ASA(config)# same-security-traffic permit intra-interface - без этой команды удаленные пользователи не смогут выходить в "INTERNET" через Cisco-ASA (она разрешает прохождение трафика, приходящего и уходящего через один и тот же интерфейс);
Cisco-ASA(config)# username vpnuser password cisco - создаем локального пользователя, аккаунт которого будем использовать для подключения по VPN;
Cisco-ASA(config)# crypto ikev1 policy 1 - создаем политику первой фазы VPN (IKE Phase 1);
Cisco-ASA(config-ikev1-policy)# authentication pre-share - указываем, что аутентификация будет по Pre-share ключу;
Cisco-ASA(config-ikev1-policy)# encryption 3des - указываем алгоритм и параметры шифрования;
Cisco-ASA(config-ikev1-policy)# hash sha
Cisco-ASA(config-ikev1-policy)# group 2
Cisco-ASA(config-ikev1-policy)# lifetime 86400 - задаем время жизни туннеля;
Cisco-ASA(config-ikev1-policy)# exit
Cisco-ASA(config)# crypto ikev1 enable outside - включаем IKE на интерфейсе outside;
Cisco-ASA(config)# crypto ipsec ikev1 transform-set MySET esp-3des esp-md5-hmac - создаем TRANSFORM-SET (здесь указываются параметры, которые будут использоваться для шифрования полезного трафика (IKE Phase 2));
Cisco-ASA(config)# group-policy VPNCLIENT internal - создаем групповую политику для удаленных пользователей;
Cisco-ASA(config)# group-policy VPNCLIENT attributes - заходим в настройки групповой политики и задаем необходимые параметры, которые будут "отосланы" cisco VPN-client-у при подключении;
Cisco-ASA(config-group-policy)# vpn-tunnel-protocol ikev1 - указываем какой протокол (ikev1 или ikev2) использовать;
Cisco-ASA(config-group-policy)# split-tunnel-policy tunnelall -указываем, что необходимо "заворачивать" весь трафик удаленного пользователя в VPN;
Cisco-ASA(config-group-policy)# exit
Cisco-ASA(config)# tunnel-group VPN-CLIENTS type remote-access -создаем туннельную группу и указываем, что вид VPN - Remote Access;
Cisco-ASA(config)# tunnel-group VPN-CLIENTS general-attributes -заходим в глобальные настройки туннельной группы;
Cisco-ASA(config-tunnel-general)# address-pool VPN-POOL - привязываем к ней ранее созданный пул IP-адресов;
Cisco-ASA(config-tunnel-general)# default-group-policy VPNCLIENT -привязываем к ней ранее созданную групповую политику;
Cisco-ASA(config-tunnel-general)# exit
Cisco-ASA(config)# tunnel-group VPN-CLIENTS ipsec-attributes - заходим в настройки IPSEC туннельной группы;
Cisco-ASA(config-tunnel-ipsec)# ikev1 pre-shared-key ciscocisco - здесь задаем Pre-Share ключ;
Cisco-ASA(config-tunnel-ipsec)# exit
Cisco-ASA(config)# crypto dynamic-map First_Din_map 1 set ikev1 transform-set MySET - создаем динамическую карту, к которой привязываем ранее созданный TRANSFORM-SET;
Cisco-ASA(config)# crypto dynamic-map First_Din_map 1 set reverse-route - (опционально) если у вас во внутренней сети поднят OSPF или RIP, то сеть удаленных пользователей будет включена в таблицу маршрутизации;
Cisco-ASA(config)# crypto map MyMap 1 ipsec-isakmp dynamic First_Din_map - создаем карту шифрования и привязываем к ней ранее созданную динамическую карту;
Cisco-ASA(config)# crypto map MyMap interface outside - прикрепляем карту шифрования к интерфейсу outside (crypto map можно прикреплять к интерфейсу только одну, но в саму карту можно добавлять много (под разными номерами crypto map MyMap 2, crypto map MyMap 3 и так далее);
Cisco-ASA(config)# wr 


Надеюсь пояснения к командам понятные. Если есть вопросы, пишите в комментариях или в почту. Ну а мы перейдем на Remote_User и проверим, что у нас получилось.
Проверять работу интернета и открытие сайта (http://30.30.30.1) мы не будем, это видно на предыдущих рисунках. Посмотрим лишь команду tracert и проверим путь в интернет до подключения. Затем подключимся с помощью cisco VPN client-а и посмотрим, что изменится:
До подключения:


    где:
  • 1 - IP-адрес loopback-интерфейса на роутере Router_1;
  • 2 - IP-адрес внутреннего интерфейса Remote_Router;
  • 3 - IP-адрес интерфейса роутера Router_2.
Как видно из рисунка, идем не через Cisco-ASA. Теперь подключаемся:


    где:
  • 1 - имя соединения (любое, какое вы хотите);
  • 2 - IP-адрес интерфейса outside на Cisco-ASA;
  • 3 - название туннельной группы;
  • 4 - Pre-Share ключ;
Нажимаем "Save" и затем "Connect":


Вводим логин (1) и пароль (2) для ранее созданного пользователя и нажимаем "OK". Должно произойти подключение. Осталось провести проверки:


    где:
  • 1 - новый сетевой интерфейс, который создал cisco VPN client, он получил IP-адрес из настроенного пула и является на данный момент основным для этого компьютера;
  • 2 - команда tracert показывает, что идем мы в "INTERNET" уже через Cisco-ASA (IP-адресов самой ASA нет, так как по умолчанию, они не показываются);
Проверим открытие внутреннего сайта и доступность внутренних сетей (например Office_1):


    где:
  • 1 - IP-адрес машины в сети Office_1 (HOST_3);
  • 2 - значок на панели задач, обозначающий, что на данный момент VPN-соединение установлено (когда соединения нет, то "замок" разорван).
Ну что, все работает. Сайт открывается уже по внутреннему IP-адресу и нужные внутренние сети доступны.
Осталась у нас одна задача - это ограничить скорость доступа из сети Guests до уровня 512 Kb. Как это делать я рассказывал в этом посте, но, раз уж есть задача, надо ее сделать :).
Снова возвращаемся на Cisco-ASA:

Cisco-ASA(config)# access-list GUESTS-LIMIT extended permit ip object Guests any - создаем список доступа для интересующего нас трафика (трафик относящийся к сети Guests);
Cisco-ASA(config)# access-list GUESTS-LIMIT extended permit ip any object Guests
Cisco-ASA(config)# class-map LIMIT - создаем класс;
Cisco-ASA(config-cmap)# match access-list GUESTS-LIMIT - прикрепляем к нему ранее созданный список доступа;
Cisco-ASA(config-cmap)# exit
Cisco-ASA(config)# policy-map FOR-LIMIT-SPEED - создаем политику;
Cisco-ASA(config-pmap)# class LIMIT - привязываем к политике, ранее созданный класс;
Cisco-ASA(config-pmap-c)# police input 512000 96000 conform-action transmit exceed-action drop - указываем ограничение на входящий трафик в 512 Kb;
Cisco-ASA(config-pmap-c)# police output 512000 96000 conform-action transmit exceed-action drop - указываем ограничение на исходящий трафик в 512 Kb;
Cisco-ASA(config-pmap-c)# exit
Cisco-ASA(config-pmap)# exit
Cisco-ASA(config)# service-policy FOR-LIMIT-SPEED interface Guests -привязываем политику к интерфейсу Guests;
Cisco-ASA(config)# exit
Cisco-ASA# wr
Cisco-ASA# 


Проверить мы сможем только исходящее (output) ограничение, но поверьте, будет работать и входящее (input). Для этого зайдем на HOST_1, запустим бесконечный ping на IP-адрес 1.1.1.1 и будем смотреть результат на Cisco-ASA:



Из рисунков видно, что ping проходит и счетчики на Cisco-ASA увеличиваются. А это значит, что нужный нам трафик подпадает под политику и в случае превышения придела скорости, начнет увеличиваться счетчик "drop-нутых" пакетов.
Ну что, поздравляю вас, мы закончили :). Пример получился объемным, но, думаю, весьма полезным, так как данная конфигурация весьма распространена в реальной жизни.
На всякий случай вот тут выкладываю конфигурацию Cisco-ASA.
А на этом я хочу закончить этот пост. Еще раз приношу свои извинения за столь долгий перерыв в постах, буду стараться это дело исправить. Хочу поблагодарить вас за внимание и жду вас в следующих постах!!!

Источник: go-to-easyit.com/2013/07/cisco-asa-3.html

1 комментарий:

  1. Спасибо большое за статью, и особенно за впн, очень познавательно!

    ОтветитьУдалить