Обеспечение сетевой безопасности сети некоторой организации в EVE-NG

· 20 мин чтения

Сетевая безопасность – это комплекс аппаратных, программных и организационных мер для защиты целостности, конфиденциальности и доступности данных в сети.

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-сервер отдал.