Обеспечение сетевой безопасности сети некоторой организации в EVE-NG
Сетевая безопасность – это комплекс аппаратных, программных и организационных мер для защиты целостности, конфиденциальности и доступности данных в сети.
Zone-Based Firewall (ZBF) – это архитектурный подход к настройке межсетевого экрана, который радикально упрощает управление политиками безопасности в сетях с большим количеством интерфейсов.
Чтобы понять ценность ZBF, нужно вспомнить, как работают старые firewall-ы (например, классический Cisco IOS или ранние настройки iptables).
В традиционной модели правила привязываются к интерфейсам и направлению движения (in/out).
К примеру, есть роутер с 4 портами: LAN, WAN, DMZ (сервера), GUEST (гостевой Wi-Fi). Чтобы разрешить LAN ходить в WAN, нужно писать правила на интерфейсе LAN (на вход) и на WAN (на выход). Если у вас 10 VLAN (бухгалтерия, IT, видеонаблюдение, гости), то для каждой пары «Источник-Назначение» нужно писать правила на каждом физическом или логическом интерфейсе.
С ростом числа интерфейсов количество правил растет экспоненциально. Администратор легко ошибается, забыв прописать трафик на выходе из зоны или перепутав in/out. ZBF решает эту проблему через абстракцию.
Появляется понятие «зона». Это логическая группа интерфейсов, имеющих одинаковый уровень доверия. Например, интерфейсы VLAN 10 (User), VLAN 20 (Mgmt) и VLAN 30 (Printers) можно объединить в зону INSIDE (доверенная сеть). Порты GE0/0 (Провайдер 1) и GE0/1 (Провайдер 2) – в зону OUTSIDE (недоверенная сеть). Серверная стойка – в зону DMZ.
А также понятие «политика» (policy). Правила теперь применяются между зонами, а не между интерфейсами. Вы пишете одно правило: «Из зоны INSIDE в зону OUTSIDE разрешить HTTP/HTTPS». Неважно, сколько интерфейсов входит в эти зоны: правило сработает для всех VLAN внутри и для всех провайдеров снаружи.
Если трафик пытается пройти из зоны A в зону B, и для этой пары нет разрешающего правила, трафик уничтожается (Drop). Если трафик идет между интерфейсами, находящимися в одной зоне, по умолчанию он часто разрешен.
ZBF всегда работает как Stateful Firewall. Если вы разрешили запрос из LAN в WAN, обратный трафик (ответ от сервера) будет пропущен автоматически, даже если явного правила из WAN в LAN нет. Это обеспечивается отслеживанием сессий (Conntrack).
Параметры сетевых устройств
| Template | Name/prefix | Icon | CPU | RAM (MB) | Ethernets |
|---|---|---|---|---|---|
| Cisco vIOS Router | ISP | Router-2D-Gen-White-S.svg | 1 | 512 | 4 |
| Cisco vIOS Router | RTR-FW | Router-2D-Gen-White-S.svg | 1 | 512 | 4 |
| Cisco vIOS Router | RTR-Local | Router-2D-Gen-White-S.svg | 1 | 512 | 4 |
| Cisco vIOS Router | RTR-Branch | Router-2D-Gen-White-S.svg | 1 | 512 | 4 |
| Cisco vIOS Switch | SW-L0 | Switch-2D-L3-Generic-S.svg | 1 | 512 | 8 |
| Cisco vIOS Switch | SW-L1 | Switch-2D-L3-Generic-S.svg | 1 | 512 | 8 |
| Cisco vIOS Switch | SW-Branch | Switch-2D-L3-Generic-S.svg | 1 | 512 | 8 |
| Cisco ISRv | ISP-DNS | Server-2D-DNS-S.svg | 2 | 4096 | 4 |
| Cisco ISRv | RTR-DNS | Server-2D-DNS-S.svg | 2 | 4096 | 4 |
| Virtual PC (VPCS) | vPC-L0 | PC-2D-Desktop-Generic-S.svg | – | – | – |
| Virtual PC (VPCS) | vPC-L1 | PC-2D-Desktop-Generic-S.svg | – | – | – |
| Virtual PC (VPCS) | vPC-L2 | PC-2D-Desktop-Generic-S.svg | – | – | – |
| Virtual PC (VPCS) | vPC-L3 | PC-2D-Desktop-Generic-S.svg | – | – | – |
| Virtual PC (VPCS) | vPC-B0 | PC-2D-Desktop-Generic-S.svg | – | – | – |
| Virtual PC (VPCS) | vPC-B1 | PC-2D-Desktop-Generic-S.svg | – | – | – |
| Virtual PC (VPCS) | vPC-Admin | PC-2D-Desktop-Generic-S.svg | – | – |
Параметры сетевых устройств
| Наименование узла | Интерфейс | IP-адрес | Маска подсети | Шлюз по умолчанию |
|---|---|---|---|---|
| ISP | Gi0/0 | DHCP | DHCP | DHCP |
| ISP | Gi0/1 | 53.53.53.1 | 255.255.255.0 | – |
| ISP | Gi0/2 | 101.1.1.1 | 255.255.255.252 | – |
| ISP | Gi0/3 | 202.1.1.1 | 255.255.255.252 | – |
| ISP-DNS | Gi1 | 53.53.53.53 | 255.255.255.0 | 53.53.53.1 |
| RTR-FW | Gi0/0 | 101.1.1.2 | 255.255.255.252 | 101.1.1.1 |
| RTR-FW | Gi0/1 | 10.0.0.1 | 255.255.255.252 | – |
| RTR-FW | Gi0/2 | 172.16.53.1 | 255.255.255.0 | – |
| RTR-FW | Tunnel0 | 1.1.1.1 | 255.255.255.252 | – |
| RTR-Local | Gi0/0 | 10.0.0.2 | 255.255.255.252 | – |
| RTR-Local | Gi0/1 | – | – | – |
| RTR-Local | Gi0/1.10 | 192.168.10.1 | 255.255.255.0 | – |
| RTR-Local | Gi0/1.20 | 192.168.20.1 | 255.255.255.0 | – |
| RTR-Local | Gi0/1.30 | 192.168.30.1 | 255.255.255.0 | – |
| RTR-Local | Gi0/1.40 | 192.168.40.1 | 255.255.255.0 | – |
| RTR-Local | Gi0/1.99 | 192.168.99.1 | 255.255.255.0 | – |
| RTR-Branch | Gi0/0 | 202.1.1.2 | 255.255.255.252 | 202.1.1.1 |
| RTR-Branch | Gi0/1 | – | – | – |
| RTR-Branch | Gi0/1.10 | 172.16.10.1 | 255.255.255.0 | – |
| RTR-Branch | Gi0/1.20 | 172.16.20.1 | 255.255.255.0 | – |
| RTR-Branch | Tunnel0 | 1.1.1.2 | 255.255.255.252 | – |
| SW-L0 | Gi0/0 | trunk | – | – |
| SW-L0 | Gi0/1 | VLAN 10 | – | – |
| SW-L0 | Gi0/2 | VLAN 20 | – | – |
| SW-L0 | Gi1/2 | EtherChannel | – | – |
| SW-L0 | Gi1/3 | EtherChannel | – | – |
| SW-L1 | Gi0/0 | VLAN 30 | – | – |
| SW-L1 | Gi0/1 | VLAN 40 | – | – |
| SW-L1 | Gi1/0 | VLAN 99 | – | – |
| SW-L1 | Gi1/2 | EtherChannel | – | – |
| SW-L1 | Gi1/3 | EtherChannel | – | – |
| SW-Branch | Gi0/0 | trunk | – | – |
| SW-Branch | Gi0/1 | VLAN 10 | – | – |
| SW-Branch | Gi0/2 | VLAN 20 | – | – |
| RTR-DNS | Gi1 | 172.16.53.53 | 255.255.255.0 | 172.16.53.1 |
| vPC-L0 | NIC | DHCP | DHCP | DHCP |
| vPC-L1 | NIC | DHCP | DHCP | DHCP |
| vPC-L2 | NIC | DHCP | DHCP | DHCP |
| vPC-L3 | NIC | DHCP | DHCP | DHCP |
| vPC-B0 | NIC | DHCP | DHCP | DHCP |
| vPC-B1 | NIC | DHCP | DHCP | DHCP |
| vPC-Admin | NIC | 192.168.99.10 | 255.255.255.0 | 192.168.99.1 |
Топология сети

На топологии можно заметить облако «INTERNET», которое не является устройством. Это абстрактный объект, который позволяет данной виртуальной сети организовать физической выход в сеть Интернет.
Чтобы поставить это облако, необходимо нажать на вкладку «Add an object»:

Выбрать пункт «Network»:

И выставить в соответствии с изображением ниже:

После нажать кнопку «Save». Появится облако «INTERNET», которое необходимо будет добавить к топологии.
Настройка сети
Настройка маршрутизатора ISP:
Would you like to enter the initial configuration dialog? [yes/no]: no
Router>enable
Router#config terminal
Router(config)#hostname isp
isp(config)#access-list 1 permit any
isp(config)#ip nat inside source list 1 interface gi0/0 overload
isp(config)#interface gi0/0
isp(config-if)#ip address dhcp
isp(config-if)#ip nat outside
isp(config-if)#no shutdown
isp(config-if)#exit
isp(config)#interface gi0/1
isp(config-if)#ip address 53.53.53.1 255.255.255.0
isp(config-if)#ip nat inside
isp(config-if)#no shutdown
isp(config-if)#exit
isp(config)#interface gi0/2
isp(config-if)#ip address 101.1.1.1 255.255.255.252
isp(config-if)#ip nat inside
isp(config-if)#no shutdown
isp(config-if)#exit
isp(config)#interface gi0/3
isp(config-if)#ip address 202.1.1.1 255.255.255.252
isp(config-if)#ip nat inside
isp(config-if)#no shutdown
isp(config-if)#exit
isp(config)#ip route 172.16.53.0 255.255.255.0 101.1.1.2
isp(config)#do write
Проверка:
do ping 8.8.8.8

Настройка маршрутизатора ISP-DNS, который имитирует DNS-сервер сети провайдера:
Would you like to enter the initial configuration dialog? [yes/no]: no
Would you like to terminate autoinstall? [yes]: no
Router>enable
Router#config terminal
Router(config)#hostname isp-dns
isp-dns(config)#interface gi1
isp-dns(config-if)#ip address 53.53.53.53 255.255.255.0
isp-dns(config-if)#no shutdown
isp-dns(config-if)#exit
isp-dns(config)#ip route 0.0.0.0 0.0.0.0 53.53.53.1
isp-dns(config)#ip domain-name internet.global
isp-dns(config)#ip name-server 8.8.8.8
isp-dns(config)#ip name-server 77.88.8.8
isp-dns(config)#ip dns server
isp-dns(config)#do write
Настройка маршрутизатора RTR-FW:
Would you like to enter the initial configuration dialog? [yes/no]: no
Router>enable
Router#config terminal
Router(config)#hostname rtr-fw
rtr-fw(config)#ip domain-name ditk.local
rtr-fw(config)#access-list 1 permit any
rtr-fw(config)#ip nat inside source list 1 interface gi0/0 overload
rtr-fw(config)#interface gi0/0
rtr-fw(config-if)#ip address 101.1.1.2 255.255.255.252
rtr-fw(config-if)#ip nat outside
rtr-fw(config-if)#no shutdown
rtr-fw(config-if)#exit
rtr-fw(config)#ip route 0.0.0.0 0.0.0.0 101.1.1.1
rtr-fw(config)#interface gi0/1
rtr-fw(config-if)#ip address 10.0.0.1 255.255.255.252
rtr-fw(config-if)#ip nat inside
rtr-fw(config-if)#no shutdown
rtr-fw(config-if)#exit
rtr-fw(config)#interface gi0/2
rtr-fw(config-if)#ip address 172.16.53.1 255.255.255.0
rtr-fw(config-if)#ip nat inside
rtr-fw(config-if)#no shutdown
rtr-fw(config-if)#exit
rtr-fw(config)#do write
Настройка маршрутизатора RTR-DNS, который имитирует DNS-сервер некоторой организации:
Would you like to enter the initial configuration dialog? [yes/no]: no
Would you like to terminate autoinstall? [yes]: no
Router>enable
Router#config terminal
Router(config)#hostname rtr-dns
rtr-dns(config)#ip domain-name ditk.local
rtr-dns(config)#interface gi1
rtr-dns(config-if)#ip address 172.16.53.53 255.255.255.0
rtr-dns(config-if)#no shutdown
rtr-dns(config-if)#exit
rtr-dns(config)#ip route 0.0.0.0 0.0.0.0 172.16.53.1
rtr-dns(config)#ip name-server 53.53.53.53
rtr-dns(config)#ip host rtr-fw.ditk.local 101.1.1.2
rtr-dns(config)#ip host rtr-branch.ditk.local 202.1.1.2
rtr-dns(config)#ip host rtr-dns.ditk.local 172.16.53.53
rtr-dns(config)#ip dns server
rtr-dns(config)#do write
Настройка маршрутизатора RTR-Local:
Would you like to enter the initial configuration dialog? [yes/no]: no
Router>enable
Router#config terminal
Router(config)#hostname rtr-local
rtr-local(config)#ip domain-name ditk.local
rtr-local(config)#interface gi0/0
rtr-local(config-if)#ip address 10.0.0.2 255.255.255.252
rtr-local(config-if)#no shutdown
rtr-local(config-if)#exit
rtr-local(config)#interface gi0/1
rtr-local(config-if)#no shutdown
rtr-local(config-if)#exit
rtr-local(config)#interface gi0/1.10
rtr-local(config-subif)#encapsulation dot1q 10
rtr-local(config-subif)#ip address 192.168.10.1 255.255.255.0
rtr-local(config-subif)#exit
rtr-local(config)#interface gi0/1.20
rtr-local(config-subif)#encapsulation dot1q 20
rtr-local(config-subif)#ip address 192.168.20.1 255.255.255.0
rtr-local(config-subif)#exit
rtr-local(config)#interface gi0/1.30
rtr-local(config-subif)#encapsulation dot1q 30
rtr-local(config-subif)#ip address 192.168.30.1 255.255.255.0
rtr-local(config-subif)#exit
rtr-local(config)#interface gi0/1.40
rtr-local(config-subif)#encapsulation dot1q 40
rtr-local(config-subif)#ip address 192.168.40.1 255.255.255.0
rtr-local(config-subif)#exit
rtr-local(config)#interface gi0/1.99
rtr-local(config-subif)#encapsulation dot1q 99
rtr-local(config-subif)#ip address 192.168.99.1 255.255.255.0
rtr-local(config-subif)#exit
rtr-local(config)#ip dhcp pool VLAN10
rtr-local(dhcp-config)#network 192.168.10.0 255.255.255.0
rtr-local(dhcp-config)#default-router 192.168.10.1
rtr-local(dhcp-config)#dns-server 53.53.53.53
rtr-local(dhcp-config)#exit
rtr-local(config)#ip dhcp pool VLAN20
rtr-local(dhcp-config)#network 192.168.20.0 255.255.255.0
rtr-local(dhcp-config)#default-router 192.168.20.1
rtr-local(dhcp-config)#dns-server 53.53.53.53
rtr-local(dhcp-config)#exit
rtr-local(config)#ip dhcp pool VLAN30
rtr-local(dhcp-config)#network 192.168.30.0 255.255.255.0
rtr-local(dhcp-config)#default-router 192.168.30.1
rtr-local(dhcp-config)#dns-server 53.53.53.53
rtr-local(dhcp-config)#exit
rtr-local(config)#ip dhcp pool VLAN40
rtr-local(dhcp-config)#network 192.168.40.0 255.255.255.0
rtr-local(dhcp-config)#default-router 192.168.40.1
rtr-local(dhcp-config)#dns-server 53.53.53.53
rtr-local(dhcp-config)#exit
rtr-local(config)#ip dhcp excluded-address 192.168.10.1
rtr-local(config)#ip dhcp excluded-address 192.168.20.1
rtr-local(config)#ip dhcp excluded-address 192.168.30.1
rtr-local(config)#ip dhcp excluded-address 192.168.40.1
rtr-local(config)#do write
Настройка коммутатора SW-L0:
Switch>enable
Switch#config terminal
Switch(config)#hostname sw-l0
sw-l0(config)#ip domain-name ditk.local
sw-l0(config)#vlan 10
sw-l0(config-vlan)#name VLAN10
sw-l0(config-vlan)#exit
sw-l0(config)#vlan 20
sw-l0(config-vlan)#name VLAN20
sw-l0(config-vlan)#exit
sw-l0(config)#vlan 30
sw-l0(config-vlan)#name VLAN30
sw-l0(config-vlan)#exit
sw-l0(config)#vlan 40
sw-l0(config-vlan)#name VLAN40
sw-l0(config-vlan)#exit
sw-l0(config)#vlan 99
sw-l0(config-vlan)#name VLAN99
sw-l0(config-vlan)#exit
sw-l0(config)#interface gi0/0
sw-l0(config-if)#switchport trunk encapsulation dot1q
sw-l0(config-if)#switchport mode trunk
sw-l0(config-if)#exit
sw-l0(config)#inteface gi0/1
sw-l0(config-if)#switchport access vlan 10
sw-l0(config-if)#switchport mode access
sw-l0(config-if)#exit
sw-l0(config)#inteface gi0/2
sw-l0(config-if)#switchport access vlan 20
sw-l0(config-if)#switchport mode access
sw-l0(config-if)#exit
sw-l0(config)#interface range gi1/2-3
sw-l0(config-if-range)#shutdown
sw-l0(config-if-range)#switchport trunk encapsulation dot1q
sw-l0(config-if-range)#switchport mode trunk
sw-l0(config-if-range)#channel-protocol lacp
sw-l0(config-if-range)#channel-group 1 mode active
sw-l0(config-if-range)#exit
sw-l0(config)#interface port-channel 1
sw-l0(config-if)#switchport trunk encapsulation dot1q
sw-l0(config-if)#switchport mode trunk
sw-l0(config-if)#exit
sw-l0(config)#interface range gi1/2-3
sw-l0(config-if-range)#no shutdown
sw-l0(config-if-range)#exit
sw-l0(config)#do write
Настройка коммутатора SW-L1:
Switch>enable
Switch#config terminal
Switch(config)#hostname sw-l1
sw-l1(config)#ip domain-name ditk.local
sw-l1(config)#vlan 30
sw-l1(config-vlan)#name VLAN30
sw-l1(config-vlan)#exit
sw-l1(config)#vlan 40
sw-l1(config-vlan)#name VLAN40
sw-l1(config-vlan)#exit
sw-l1(config)#vlan 99
sw-l1(config-vlan)#name VLAN99
sw-l1(config-vlan)#exit
sw-l1(config)#inteface gi0/0
sw-l1(config-if)#switchport access vlan 30
sw-l1(config-if)#switchport mode access
sw-l1(config-if)#exit
sw-l1(config)#inteface gi0/1
sw-l1(config-if)#switchport access vlan 40
sw-l1(config-if)#switchport mode access
sw-l1(config-if)#exit
sw-l1(config)#inteface gi1/0
sw-l1(config-if)#switchport access vlan 99
sw-l1(config-if)#switchport mode access
sw-l1(config-if)#exit
sw-l1(config)#interface range gi1/2-3
sw-l1(config-if-range)#shutdown
sw-l1(config-if-range)#switchport trunk encapsulation dot1q
sw-l1(config-if-range)#switchport mode trunk
sw-l1(config-if-range)#channel-protocol lacp
sw-l1(config-if-range)#channel-group 1 mode active
sw-l1(config-if-range)#exit
sw-l1(config)#interface port-channel 1
sw-l1(config-if)#switchport trunk encapsulation dot1q
sw-l1(config-if)#switchport mode trunk
sw-l1(config-if)#exit
sw-l1(config)#interface range gi1/2-3
sw-l1(config-if-range)#no shutdown
sw-l1(config-if-range)#exit
sw-l1(config)#do write
Проверка на SW-L0:
do show vlan brief

do show interface trunk

Проверка на SW-L1:
do show vlan brief

do show interface trunk

На vPC-L0:
set pcname vPC-L0
ip dhcp
show ip

На vPC-L1:
set pcname vPC-L1
ip dhcp
show ip

На vPC-L2:
set pcname vPC-L2
ip dhcp
show ip

На vPC-L3:
set pcname vPC-L3
ip dhcp
show ip

На vPC-Admin:
set pcname vPC-Admin
ip 192.168.99.10/24 192.168.99.1
ip dns 172.16.53.53
show ip

Теперь необходимо донастроить маршрутизатор RTR-FW. Следует настроить протокол динамической маршрутизации, чтобы компьютеры получили возможность выходить в Интернет, после чего необходимо будет настроить Base Zone Firewall (BZF) для формирования зон.
rtr-fw>enable
rtr-fw#config terminal
rtr-fw(config)#router ospf 1
rtr-fw(config-router)#router-id 1.1.1.1
rtr-fw(config-router)#passive-interface default
rtr-fw(config-router)#no passive-interface gi0/1
rtr-fw(config-router)#default-information originate
rtr-fw(config-router)#area 0 authentication message-digest
rtr-fw(config-router)#exit
rtr-fw(config)#interface gi0/1
rtr-fw(config-if)#ip ospf message-digest-key 1 md5 P@ssw0rd
rtr-fw(config-if)#ip ospf 1 area 0
rtr-fw(config-if)#exit
rtr-fw(config)#do write
На маршрутизаторе RTR-Local:
rtr-local>enable
rtr-local#config terminal
rtr-local(config)#router ospf 1
rtr-local(config-router)#router-id 1.1.1.2
rtr-local(config-router)#passive-interface default
rtr-local(config-router)#no passive-interface gi0/0
rtr-local(config-router)#area 0 authentication message-digest
rtr-local(config-router)#exit
rtr-local(config)#interface gi0/0
rtr-local(config-if)#ip ospf message-digest-key 1 md5 P@ssw0rd
rtr-local(config-if)#ip ospf 1 area 0
rtr-local(config-if)#exit
rtr-local(config)#interface gi0/1.10
rtr-local(config-subif)#ip ospf 1 area 0
rtr-local(config)#interface gi0/1.20
rtr-local(config-subif)#ip ospf 1 area 0
rtr-local(config)#interface gi0/1.30
rtr-local(config-subif)#ip ospf 1 area 0
rtr-local(config)#interface gi0/1.40
rtr-local(config-subif)#ip ospf 1 area 0
rtr-local(config)#interface gi0/1.99
rtr-local(config-subif)#ip ospf 1 area 0
rtr-local(config)#do write
Проверка на маршрутизаторе RTR-FW:
do show ip route ospf

Проверка на маршрутизаторе RTR-Local:
do show ip route ospf

Продолжение настройки маршрутизатора RTR-FW:
rtr-fw>enable
rtr-fw#config terminal
rtr-fw(config)#zone security PUBLIC
rtr-fw(config-sec-zone)#exit
rtr-fw(config)#zone security LOCAL
rtr-fw(config-sec-zone)#exit
rtr-fw(config)#zone security DMZ
rtr-fw(config-sec-zone)#exit
rtr-fw(config)#zone-pair security LOCAL-TO-PUBLIC source LOCAL destination PUBLIC
rtr-fw(config-sec-zone-pair)#exit
rtr-fw(config)#zone-pair security LOCAL-TO-DMZ source LOCAL destination DMZ
rtr-fw(config-sec-zone-pair)#exit
rtr-fw(config)#zone-pair security PUBLIC-TO-DMZ source PUBLIC destination DMZ
rtr-fw(config-sec-zone-pair)#exit
rtr-fw(config)#zone-pair security DMZ-TO-PUBLIC source DMZ destination PUBLIC
rtr-fw(config-sec-zone-pair)#exit
rtr-fw(config)#class-map type inspect match-all DNS-TRAFFIC
rtr-fw(config-cmap)#match protocol dns
rtr-fw(config-cmap)#match access-group name DNS-ONLY
rtr-fw(config-cmap)#exit
rtr-fw(config)#ip access-list extended ANY-ACCESS
rtr-fw(config-ext-nacl)#permit ip any any
rtr-fw(config-ext-nacl)#exit
rtr-fw(config)#class-map type inspect match-all ANY-TRAFFIC
rtr-fw(config-cmap)#match access-group name ANY-ACCESS
rtr-fw(config-cmap)#exit
rtr-fw(config)#policy-map type inspect LOCAL-TO-PUBLIC-POLICY
rtr-fw(config-pmap)#class type inspect ANY-TRAFFIC
rtr-fw(config-pmap-c)#inspect
rtr-fw(config-pmap-c)#exit
rtr-fw(config-pmap)#exit
rtr-fw(config)#policy-map type inspect LOCAL-TO-DMZ-POLICY
rtr-fw(config-pmap)#class type inspect DNS-TRAFFIC
rtr-fw(config-pmap-c)#inspect
rtr-fw(config-pmap-c)#exit
rtr-fw(config-pmap)#class class-default
rtr-fw(config-pmap-c)#drop
rtr-fw(config-pmap-c)#exit
rtr-fw(config-pmap)#exit
rtr-fw(config)#policy-map type inspect PUBLIC-TO-DMZ-POLICY
rtr-fw(config-pmap)#class type inspect DNS-TRAFFIC
rtr-fw(config-pmap-c)#inspect
rtr-fw(config-pmap-c)#exit
rtr-fw(config-pmap)#class class-default
rtr-fw(config-pmap-c)#drop
rtr-fw(config-pmap-c)#exit
rtr-fw(config-pmap)#exit
rtr-fw(config)#policy-map type inspect DMZ-TO-PUBLIC-POLICY
rtr-fw(config-pmap)#class type inspect ANY-TRAFFIC
rtr-fw(config-pmap-c)#inspect
rtr-fw(config-pmap-c)#exit
rtr-fw(config-pmap)#exit
rtr-fw(config)#zone-pair security LOCAL-TO-PUBLIC
rtr-fw(config-sec-zone-pair)#service-policy type inspect LOCAL-TO-PUBLIC-POLICY
rtr-fw(config-sec-zone-pair)#exit
rtr-fw(config)#zone-pair security LOCAL-TO-DMZ
rtr-fw(config-sec-zone-pair)#service-policy type inspect LOCAL-TO-DMZ-POLICY
rtr-fw(config-sec-zone-pair)#exit
rtr-fw(config)#zone-pair security PUBLIC-TO-DMZ
rtr-fw(config-sec-zone-pair)#service-policy type inspect PUBLIC-TO-DMZ-POLICY
rtr-fw(config-sec-zone-pair)#exit
rtr-fw(config)#zone-pair security DMZ-TO-PUBLIC
rtr-fw(config-sec-zone-pair)#service-policy type inspect DMZ-TO-PUBLIC-POLICY
rtr-fw(config-sec-zone-pair)#exit
rtr-fw(config)#ip access-list extended DNS-ONLY
rtr-fw(config-ext-nacl)#permit udp any host 172.16.53.53 eq 53
rtr-fw(config-ext-nacl)#permit tcp any host 172.16.53.53 eq 53
rtr-fw(config-ext-nacl)#exit
rtr-fw(config)#interface gi0/0
rtr-fw(config-if)#zone-member security PUBLIC
rtr-fw(config-if)#exit
rtr-fw(config)#interface gi0/1
rtr-fw(config-if)#zone-member security LOCAL
rtr-fw(config-if)#exit
rtr-fw(config)#interface gi0/2
rtr-fw(config-if)#zone-member security DMZ
rtr-fw(config-if)#exit
rtr-fw(config)#do write
Настройка маршрутизатора RTR-Branch:
Would you like to enter the initial configuration dialog? [yes/no]: no
Router>enable
Router#config terminal
Router(config)#hostname rtr-branch
rtr-branch(config)#ip domain-name ditk.local
rtr-branch(config)#access-list 1 permit any
rtr-branch(config)#ip nat inside source list 1 interface gi0/0 overload
rtr-branch(config)#interface gi0/0
rtr-branch(config-if)#ip address 202.1.1.2 255.255.255.252
rtr-branch(config-if)#ip nat outside
rtr-branch(config-if)#no shutdown
rtr-branch(config-if)#exit
rtr-branch(config)#interface gi0/1
rtr-branch(config-if)#no shutdown
rtr-branch(config-if)#exit
rtr-branch(config)#interface gi0/1.10
rtr-branch(config-subif)#encapsulation dot1q 10
rtr-branch(config-subif)#ip address 172.16.10.1 255.255.255.0
rtr-branch(config-subif)#ip nat inside
rtr-branch(config-subif)#exit
rtr-branch(config)#interface gi0/1.20
rtr-branch(config-subif)#encapsulation dot1q 20
rtr-branch(config-subif)#ip address 172.16.20.1 255.255.255.0
rtr-branch(config-subif)#ip nat inside
rtr-branch(config-subif)#exit
rtr-branch(config)#ip dhcp pool VLAN10
rtr-branch(dhcp-config)#network 172.16.10.0 255.255.255.0
rtr-branch(dhcp-config)#default-router 172.16.10.1
rtr-branch(dhcp-config)#dns-server 53.53.53.53
rtr-branch(dhcp-config)#exit
rtr-branch(config)#ip dhcp pool VLAN20
rtr-branch(dhcp-config)#network 172.16.20.0 255.255.255.0
rtr-branch(dhcp-config)#default-router 172.16.20.1
rtr-branch(dhcp-config)#dns-server 53.53.53.53
rtr-branch(dhcp-config)#exit
rtr-branch(config)#ip dhcp excluded-address 172.16.10.1
rtr-branch(config)#ip dhcp excluded-address 172.16.20.1
rtr-branch(config)#ip route 0.0.0.0 0.0.0.0 202.1.1.1
rtr-branch(config)#do write
Настройка коммутатора SW-Branch:
Switch>enable
Switch#config terminal
Switch(config)#hostname sw-branch
sw-branch(config)#ip domain-name ditk.local
sw-branch(config)#vlan 10
sw-branch(config-vlan)#name VLAN10
sw-branch(config-vlan)#exit
sw-branch(config)#vlan 20
sw-branch(config-vlan)#name VLAN20
sw-branch(config-vlan)#exit
sw-branch(config)#interface gi0/0
sw-branch(config-if)#switchport trunk encapsulation dot1q
sw-branch(config-if)#switchport mode trunk
sw-branch(config-if)#exit
sw-branch(config)#interface gi0/1
sw-branch(config-if)#switchport access vlan 10
sw-branch(config-if)#switchport mode access
sw-branch(config-if)#exit
sw-branch(config)#interface gi0/2
sw-branch(config-if)#switchport access vlan 20
sw-branch(config-if)#switchport mode access
sw-branch(config-if)#exit
sw-branch(config)#do write
На vPC-B0:
set pcname vPC-B0
ip dhcp
show ip

На vPC-B1:
set pcname vPC-B1
ip dhcp
show ip

Теперь стоит заняться настройкой GRE VPN с шифрованием (IPsec) и динамической маршрутизацией на базе протокола OSPF. На маршрутизаторе RTR-Branch:
rtr-branch>enable
rtr-branch#config terminal
rtr-branch(config)#crypto isakmp policy 10
rtr-branch(config-isakmp)#authentication pre-share
rtr-branch(config-isakmp)#encryption aes 256
rtr-branch(config-isakmp)#hash sha256
rtr-branch(config-isakmp)#group 14
rtr-branch(config-isakmp)#lifetime 28800
rtr-branch(config-isakmp)#exit
rtr-branch(config)#crypto isakmp key P@ssw0rd address 101.1.1.2
rtr-branch(config)#crypto ipsec transform-set TS esp-aes 256 esp-sha256-hmac
rtr-branch(cfg-crypto-trans)#exit
rtr-branch(config)#access-list 101 permit gre host 202.1.1.2 host 101.1.1.2
rtr-branch(config)#crypto map CMAP 10 ipsec-isakmp
rtr-branch(config-crypto-map)#set peer 101.1.1.2
rtr-branch(config-crypto-map)#set transform-set TS
rtr-branch(config-crypto-map)#set pfs group14
rtr-branch(config-crypto-map)#match address 101
rtr-branch(config-crypto-map)#exit
rtr-branch(config)#interface tunnel0
rtr-branch(config-if)#ip address 1.1.1.2 255.255.255.252
rtr-branch(config-if)#ip mtu 1400
rtr-branch(config-if)#ip tcp adjust-mss 1360
rtr-branch(config-if)#tunnel source gi0/0
rtr-branch(config-if)#tunnel destination 101.1.1.2
rtr-branch(config-if)#ip ospf message-digest-key 1 md5 P@ssw0rd
rtr-branch(config-if)#ip ospf 1 area 0
rtr-branch(config-if)#exit
rtr-branch(config)#interface gi0/0
rtr-branch(config-if)#crypto map CMAP
rtr-branch(config-if)#exit
rtr-branch(config)#interface gi0/1.10
rtr-branch(config-subif)#ip ospf 1 area 0
rtr-branch(config-subif)#exit
rtr-branch(config)#interface gi0/1.20
rtr-branch(config-subif)#ip ospf 1 area 0
rtr-branch(config-subif)#exit
rtr-branch(config)#router ospf 1
rtr-branch(config-router)#router-id 1.1.1.3
rtr-branch(config-router)#passive-interface default
rtr-branch(config-router)#no passive-interface tunnel0
rtr-branch(config-router)#area 0 authentication message-digest
rtr-branch(config-router)#exit
rtr-branch(config)#do write
Настройка на маршрутизаторе RTR-FW:
rtr-fw>enable
rtr-fw#config terminal
rtr-fw(config)#crypto isakmp policy 10
rtr-fw(config-isakmp)#authentication pre-share
rtr-fw(config-isakmp)#encryption aes 256
rtr-fw(config-isakmp)#hash sha256
rtr-fw(config-isakmp)#group 14
rtr-fw(config-isakmp)#lifetime 28800
rtr-fw(config-isakmp)#exit
rtr-fw(config)#crypto isakmp key P@ssw0rd address 202.1.1.2
rtr-fw(config)#crypto ipsec transform-set TS esp-aes 256 esp-sha256-hmac
rtr-fw(cfg-crypto-trans)#exit
rtr-fw(config)#access-list 101 permit gre host 101.1.1.2 host 202.1.1.2
rtr-fw(config)#crypto map CMAP 10 ipsec-isakmp
rtr-fw(config-crypto-map)#set peer 202.1.1.2
rtr-fw(config-crypto-map)#set transform-set TS
rtr-fw(config-crypto-map)#set pfs group14
rtr-fw(config-crypto-map)#match address 101
rtr-fw(config-crypto-map)#exit
rtr-fw(config)#interface tunnel0
rtr-fw(config-if)#ip address 1.1.1.1 255.255.255.252
rtr-fw(config-if)#ip mtu 1400
rtr-fw(config-if)#ip tcp adjust-mss 1360
rtr-fw(config-if)#tunnel source gi0/0
rtr-fw(config-if)#tunnel destination 202.1.1.2
rtr-fw(config-if)#ip ospf message-digest-key 1 md5 P@ssw0rd
rtr-fw(config-if)#ip ospf 1 area 0
rtr-fw(config-if)#exit
rtr-fw(config)#interface gi0/0
rtr-fw(config-if)#crypto map CMAP
rtr-fw(config-if)#exit
rtr-fw(config)#router ospf 1
rtr-fw(config-router)#no passive-interface tunnel0
rtr-fw(config-router)#exit
rtr-fw(config)#do write
После этих действий OSPF соседство будет установлено, однако связи между конечными устройствами не будет! Чтобы это поправить, нужно в Zone Base Firewall (ZBF) добавить недостающие правила:
rtr-fw>enable
rtr-fw#config terminal
rtr-fw(config)#zone security VPN
rtr-fw(config-sec-zone)#exit
rtr-fw(config)#interface tunnel0
rtr-fw(config-if)#zone-member security VPN
rtr-fw(config-if)#exit
rtr-fw(config)#policy-map type inspect LOCAL-TO-VPN-POLICY
rtr-fw(config-pmap)#class type inspect ANY-TRAFFIC
rtr-fw(config-pmap-c)#inspect
rtr-fw(config-pmap-c)#exit
rtr-fw(config-pmap)#exit
rtr-fw(config)#policy-map type inspect VPN-TO-LOCAL-POLICY
rtr-fw(config-pmap)#class type inspect ANY-TRAFFIC
rtr-fw(config-pmap-c)#inspect
rtr-fw(config-pmap-c)#exit
rtr-fw(config-pmap)#exit
rtr-fw(config)#policy-map type inspect PUBLIC-TO-LOCAL-POLICY
rtr-fw(config-pmap)#class type inspect ANY-TRAFFIC
rtr-fw(config-pmap-c)#inspect
rtr-fw(config-pmap-c)#exit
rtr-fw(config-pmap)#class class-default
rtr-fw(config-pmap-c)#drop
rtr-fw(config-pmap-c)#exit
rtr-fw(config-pmap)#exit
rtr-fw(config)#zone-pair security LOCAL-TO-VPN source LOCAL destination VPN
rtr-fw(config-sec-zone-pair)#service-policy type inspect LOCAL-TO-VPN-POLICY
rtr-fw(config-sec-zone-pair)#exit
rtr-fw(config)#zone-pair security VPN-TO-LOCAL source VPN destination LOCAL
rtr-fw(config-sec-zone-pair)#service-policy type inspect VPN-TO-LOCAL-POLICY
rtr-fw(config-sec-zone-pair)#exit
rtr-fw(config)#zone-pair security PUBLIC-TO-LOCAL source PUBLIC destination LOCAL
rtr-fw(config-sec-zone-pair)#service-policy type inspect PUBLIC-TO-LOCAL-POLICY
rtr-fw(config-sec-zone-pair)#exit
rtr-fw(config)#do write
Проверка на маршрутизаторе RTR-FW:
do show crypto ipsec sa detail

do show crypto isakmp policy

do show ip route ospf

Проверка на маршрутизаторе RTR-Branch:
do show crypto ipsec sa detail

do show crypto isakmp policy

do show ip route ospf

Проверка на vPC-L0:
ping ya.ru

Так как у vPC-Admin используется локальный DNS-сервер, стоит проверить работоспособность:
ping ya.ru -с 2
ping rtr-fw.ditk.local -с 2
ping rtr-branch.ditk.local -с 2
ping rtr-dns.ditk.local -с 2

Ping до RTR-DNS и не должен доходить, однако, как видно на скриншоте, IP-адрес корректный DNS-сервер отдал.