Фильтрация L2-уровня (Transparent Firewall)
Техподдержка Фактор-ТСВ интерфейсах bridge возможно производить фильтрацию на уровне Ethernet фреймов. Для этого используются списки bridge access-list. В bridge access-list также присутствует возможность фильтровать трафик на L3/L4 уровне.
В приведенном примере применена типовая схема коммутации № 3
Создание bridge access-list в целом аналогично созданию ip access-list, однако критерии src/dst/proto будут проверять соответствующие поля в заголовке Ethernet, а не IP.
Пример создания bridge access-list:
NX-1(config)# bridge access-list mylist
NX-1(config-bracl-mylist)# deny src a8:5e:45:6d:e5:68
В данной конфигурации фильтр запрещает траффик с источником mac-адреса ПК-1
В отличие от ip access-list - bridge access-list может использоваться только на конкретном интерфейсе bridge.
В Dionis-NX доступны следующие точки привязки bridge access-list:
- local-in - В этом случае фильтроваться будут фреймы, которые получены в одном из портов сетевого моста, но покидают его (например, фреймы, предназначенные самому маршрутизатору, или фреймы, которые покинут маршрутизатор через порт, не входящий в сетевой мост).
- local-out - В этом случае фильтроваться будут фреймы, которые попадают в сетевой мост из другого интерфейса или из самого маршрутизатора.
- Forward - В этом случае фильтроваться будут фреймы, которые получены в одном из портов сетевого моста и уходят через порт того же сетевого моста.
Пример привязки bridge access-list:
NX-1(config)# interface bridge 0
NX-1(config-if-bridge0)# bridge access-group mylist forward
Теперь, если запустить ping с ПК-1 на ПК-2, весь траффик будет сбрасываться, т.к. mac-адрес ПК-1 запрещен правилами фильтрациями и проверим что трафик не проходит через интерфейс bridge 0 командой «tcpdump bridge 0 proto icmp verbose»:
NX-1# tcpdump bridge 0 proto icmp verbose
tcpdump: listening on bridge0, link-type EN10MB (Ethernet), capture size 262144 bytes
08:03:32.009278 IP 192.168.1.2 > 192.168.1.3: ICMP echo request, id 1, seq 115, length 40
08:03:36.999073 IP 192.168.1.2 > 192.168.1.3: ICMP echo request, id 1, seq 116, length 40
08:03:40.129778 IP 192.168.1.2 > 192.168.1.3: ICMP echo request, id 1, seq 117, length 40
08:03:44.222915 IP 192.168.1.2 > 192.168.1.3: ICMP echo request, id 1, seq 118, length 40
Как мы можем видеть с ПК-1 видны были ICMP- пакеты, но на них не приходил ответ т.к. они не доходили до ПК-2.
При задании протокола IPv4 становятся доступны параметры, позволяющие анализировать заголовок IP. Аналогично, при задании протокола IPv6 можно анализировать заголовок IP6.
NX-1(config)# bridge access-list mylist
NX-1(config-bracl-mylist)# deny IPv4 ip-src 192.168.1.2/24
Для проверки выполнения правил фильтрации следует запустить процедуру PING между ПК-1 и ПК-2:
NX-1(config-if-bridge0)# do tcpdump bridge 0
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on bridge4, link-type EN10MB (Ethernet), capture size 262144 bytes
08:35:11.895826 ARP, Request who-has 192.168.1.3 (08:35:71:f0:0d:81 (oui Unknown)) tell 192.168.1.2, length 46
08:35:11.901096 IP 192.168.1.2 > 192.168.1.3: ICMP echo request, id 1, seq 145, length 40
08:35:16.902453 IP 192.168.1.2 > 192.168.1.3: ICMP echo request, id 1, seq 146, length 40
08:35:21.900838 IP 192.168.1.2 > 192.168.1.3: ICMP echo request, id 1, seq 147, length 40
08:35:26.901234 IP 192.168.1.2 > 192.168.1.3: ICMP echo request, id 1, seq 148, length 40
Результат проверки фильтрации IP-датаграмм в части проверки по типу IPv4 заголовка стоит считать выполненным, если обмен данными или его блокирование выполняются в соответствии со значениями, указанными в правилах фильтрации.
Bridge access-list имеет возможность фильтровать трафик по протоколу VLAN (802.1Q)
К примеру, чтобы запретить любой трафик кроме тегированного необходимо составить стенд согласно Схеме коммутации 5 (вместо NX-1 и NX-3 можно использовать управляемые коммутаторы, а NX-2 используется в роли Bridge), и в новом созданном bridge access-list добавить следующие параметры:
NX-2(config)# bridge access-list vlan
NX-2(config-bracl-vlan)# permit 802_1Q
NX-2(config-bracl-vlan)# deny
NX-2(config)# interface bridge 0
NX-2(config-if-bridge0)# bridge access-group vlan forward
В bridge 0 были добавлены интерфейсы ethernet 3 и ethernet 4
NX-2(config-if-bridge0)# port ethernet 3
NX-2(config-if-bridge0)# port ethernet 4
На NX-1 и NX-3 были настроены VLAN-интерфейсы, с VLAN id 20 (О том, как настроить VLAN-интерфейсы см. пункт 7.7) Для того, чтобы проверить, что через bridge идет тегированный трафик необходимо отправить ICMP пакеты между NX-1 и NX-3 и с помощью утилиты «tcpdump» прослушать трафик который идет через bridge:
NX-2# tcpdump bridge 0 ether verbose
tcpdump: listening on bridge0, link-type EN10MB (Ethernet), capture size 262144 bytes
19:42:43.914295 08:35:71:f0:0d:81 (oui Unknown) > 08:35:71:f3:b1:fc (oui Unknown), ethertype 802.1Q (0x8100), length 102: vlan 20, p 0, ethertype IPv4, (tos 0x0, ttl 64, id 60753, offset 0, flags [DF], proto ICMP (1), length 84)
192.168.10.3 > 192.168.10.1: ICMP echo request, id 6412, seq 9, length 64
19:42:43.914400 08:35:71:f3:b1:fc (oui Unknown) > 08:35:71:f0:0d:81 (oui Unknown), ethertype 802.1Q (0x8100), length 102: vlan 20, p 0, ethertype IPv4, (tos 0x0, ttl 64, id 63680, offset 0, flags [none], proto ICMP (1), length 84)
192.168.10.1 > 192.168.10.3: ICMP echo reply, id 6412, seq 9, length 64
19:42:45.930279 08:35:71:f0:0d:81 (oui Unknown) > 08:35:71:f3:b1:fc (oui Unknown), ethertype 802.1Q (0x8100), length 102: vlan 20, p 0, ethertype IPv4, (tos 0x0, ttl 64, id 61178, offset 0, flags [DF], proto ICMP (1), length 84)
192.168.10.3 > 192.168.10.1: ICMP echo request, id 6412, seq 10, length 64
19:42:45.930414 08:35:71:f3:b1:fc (oui Unknown) > 08:35:71:f0:0d:81 (oui Unknown), ethertype 802.1Q (0x8100), length 102: vlan 20, p 0, ethertype IPv4, (tos 0x0, ttl 64, id 63751, offset 0, flags [none], proto ICMP (1), length 84)
192.168.10.1 > 192.168.10.3: ICMP echo reply, id 6412, seq 10, length 64
19:42:47.946099 08:35:71:f0:0d:81 (oui Unknown) > 08:35:71:f3:b1:fc (oui Unknown), ethertype 802.1Q (0x8100), length 102: vlan 20, p 0, ethertype IPv4, (tos 0x0, ttl 64, id 61578, offset 0, flags [DF], proto ICMP (1), length 84)
192.168.10.3 > 192.168.10.1: ICMP echo request, id 6412, seq 11, length 64
19:42:47.946218 08:35:71:f3:b1:fc (oui Unknown) > 08:35:71:f0:0d:81 (oui Unknown), ethertype 802.1Q (0x8100), length 102: vlan 20, p 0, ethertype IPv4, (tos 0x0, ttl 64, id 63909, offset 0, flags [none], proto ICMP (1), length 84)
192.168.10.1 > 192.168.10.3: ICMP echo reply, id 6412, seq 11, length 64
Для полной проверки необходимо отправить ICMP пакеты между NX-1 и NX-3 без тега, прослушивая bridge 0 на NX-2 аналогичным образом:
NX-2# tcpdump bridge 0 ether proto icmp verbose
tcpdump: listening on bridge0, link-type EN10MB (Ethernet), capture size 262144 bytes
0 packets captured
0 packets received by filter
0 packets dropped by kernel
Результатами проверок подтверждено что bridge access-list имеет возможность фильтровать трафик по протоколу 802.1Q.