Создание сетевого ответвителя с использованием готового оборудования (прозрачный мост Linux)

TL;DR: Цель состоит в том, чтобы построить сетевой кран используя Линукс-мосткоторый можно использовать для прослушивания сетевого трафика и создания устройства, которое также можно использовать для участия красных команд.


В настоящее время я использую ПК-маршрутизатор с четырьмя портами Ethernet, как показано на рисунке ниже, но фактическое оборудование не имеет значения. Я намерен воспроизвести свою настройку на другом оборудовании с двойной (гигабитной) сетью Ethernet — подумайте об одноплатных компьютерах, таких как Orange Pi и т. д.

Текущая настройка:

ПортИнтерфейсМАК
ЛВС1enp3s000:90:27:б4:40:58
ЛВС2enp4s000:90:27:б4:40:59
ЛВС3enp6s000:90:27:б4:40:5а
ЛВС4enp7s000:90:27:б4:40:5б

Маршрутизатор

В этом примере enp3s0 — это интерфейс управления для SSH и т. д., enp6s0 и enp7s0 — интерфейсы моста. ОС — Debian 11 (яблочко) с Network Manager.

Я создал мост с помощью nmcli следующим образом:

# create bridge
nmcli connection add type bridge ifname br0 con-name br0  bridge.stp no ipv4.method disabled ipv6.method disabled autoconnect no

# allow all kinds of traffic
nmcli connection modify br0 bridge.group-forward-mask 65528

# add slave interfaces
nmcli connection add type ethernet ifname enp6s0 con-name br0-enp6s0 master br0
nmcli connection add type ethernet ifname enp7s0 con-name br0-enp7s0 master br0

# start the bridge
nmcli con up br0

Тогда я просто использую: tcpdump -n -i br0или же tshark на самом устройстве, чтобы сразу нюхать трафик.

Сетевой менеджер тоже для удобства, потому что в какой-то момент я могу захотеть сбросить мост и переназначить интерфейсы для другой цели. Я также могу запустить предварительные сценарии в /etc/NetworkManager/dispatcher.d/pre-up.d/, если это необходимо.

Поскольку у меня чистый мост уровня 2 без IP-адресов, я ожидаю, что он будет «почти» тихим. Путем настройки значения group_fwd_mask Я также стараюсь ретранслировать типы трафика, которые по умолчанию не передаются мостом Linux, например, CDP или EAP (Источник).

Однако я знаю, что мост все еще может генерировать некоторый трафик либо сам по себе, либо в ответ на запросы, например трафик ARP. Действительно, когда я запускаю мост, он отправляет несколько пакетов IGMPv3, как показано ниже (36:04:5f:8d:ac:55 — MAC-адрес, автоматически назначенный мосту):

Wireshark

Поэтому мой вопрос: как я могу сделать мост полностью тихий а также пассивныйи добиться полного изоляция моста от других интерфейсов, присутствующих на устройстве. Другими словами, настоящий сетевой ответвитель не должен вводить никаких собственных кадров. Я понимаю, что есть много вариантов, но я не уверен, какой из них использовать.

Некоторые из идей, которые я имел в виду:

  • Используйте VLAN для мостовых интерфейсов, но я думаю, что это не поможет, когда мостовые интерфейсы сами по себе генерируют нежелательный трафик.
  • Запуск Network Manager в другом пространство имен
  • Использовать тк или же nftables отбрасывать нежелательные кадры, поступающие на мост, на основе MAC-адреса

Проект, который несколько похож на то, что я делаю, это фантап. Но это скорее инструмент «человек посередине», который работает путем клонирования IP-адреса «жертвы». Кроме того, phantap адаптирован для OpenWRT, и вместо этого я использую обычные дистрибутивы Systemd, такие как Debian.

Я посмотрел на phantap, и он делает как минимум две вещи, которые могут иметь отношение к изоляции:

  • он использует nftables (источник)
  • он использует следующий предварительный сценарий для моста (источник):
BRIDGE=br-phantap

if [ "$ACTION" = add -a "$DEVICENAME" == "$BRIDGE" ]; then
    echo "phantap: Configuring bridge $BRIDGE (hotplug)..." > /dev/kmsg
    echo 65528 > /sys/class/net/$BRIDGE/bridge/group_fwd_mask
    ip link set dev $BRIDGE arp off multicast off allmulticast off
    echo "phantap: Bridge $BRIDGE configured (hotplug)" > /dev/kmsg
fi

Вопросы

  • Есть ли ip link set dev $BRIDGE arp off multicast off allmulticast off приведенного выше утверждения достаточно, чтобы эффективно «заглушить» мост?
  • Следует ли сделать то же самое и на ведомых интерфейсах?
  • Имеет ли смысл добавить больше правил фильтрации, например, используя tc или nftables?
  • Что насчет IP-ссылка изолирована вариант?
  • Есть ли какие-либо полезные опции, которые я упустил из виду, например bridge.vlan-фильтрация вариант?
  • Мост — лучший способ добраться сюда? Могут ли другие типы интерфейсов, такие как macvlan, достичь намеченной цели?

Дополнительные ссылки и сопутствующие вопросы

vlan bridge ethernet tap изолированная сеть

0

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *