Мостовая фильтрация для man-in-the- средний сетевой узел

Я вставляю свой сетевой узел между двумя устаревшими устройствами, которые обмениваются сообщениями tcp и udp с использованием выделенных портов в обоих направлениях. Моему новому узлу необходимо прозрачно протолкнуть некоторые сообщения tcp / udp и перехватить другие сообщения tcp / udp для обработки на уровне приложения перед отправкой обработанных сообщений. Схема для этой конфигурации типа "человек посередине":

[legacy1] - [mitm] - [legacy2]

с этими интерфейсами

  • legacy1 находится на 192.168.1.2
  • legacy2 находится на 192.168.1.3
  • mitm (слева) 192.168. 1.3 для перехваченных сообщений, перемещающихся вправо, и невидимый для пересылаемых сообщений
  • mitm (справа) - 192.168.1.2 для перехваченных сообщений, перемещающихся влево, и невидим для пересылаемых сообщений

На машине MITM работает Ubuntu 16.04.

Достаточно ли iptables (на 3-м уровне), хотя я хочу установить мост (на 2-м уровне)? Что лучше: ebtables или nftables?

0
задан 24 August 2019 в 02:31
1 ответ

Вы упоминаете мост (L2), но согласно вашей диаграмме вы выполняете маршрутизацию (L3), поскольку кажется, что есть два одинаковых подсети (скажем, 192.168.1.0/24), одна из которых включает legacy1 и mitm-left, а вторая включает legacy2 и mitm-right.

Вам, вероятно, потребуется ...

изменить ваши настройки

# create bridge between mitm-left and mitm-right
ip l a name br0 type bridge
ip l set br0 up
ip l set eth0 up
ip l set eth0 master br0
ip l set eth1 up
ip l set eth1 master br0

# add IP within the subnet that legacy1 and legacy2 is part of
ip a a 192.168.1.0/24 dev br0

# now ensure that netfilter works on the l2 bridge
modprobe br_netfilter
echo 1 > /proc/sys/net/bridge/bridge-nf-call-iptables

Последние две строки являются разовыми изменениями, вы должны сделать их постоянными, чтобы обеспечить:

  • загрузку модуля ядра br_netfilter при каждом запуске
  • включение возможностей bridge-nf-call в iptables (т.е. по echo 'net.bridge.bridge-nf-call-iptables = 1' >> /etc/sysctl.conf)[12177 visibleresult

    Эта настройка позволяет netfilter части ядра Linux фильтр / журнал / правила NAT для мостового трафика.

    Теперь вы можете:

    • использовать инструмент iptables для установки правил netfilter для обработки / изменения пакетов IPv4 / IPv6.
    • использовать инструмент ebtables для установки правил netfilter для обработки / изменить любые другие фреймы.
    • используйте инструмент nftables для установки правил netfilter (если ваш дистрибутив достаточно актуален).

    Что касается вашего последнего вопроса - так как есть много примеров а также поддержку iptables / ebtables, я бы пошел с ними. Nftables может обеспечить лучшую производительность, но я полагаю, что ваша установка не требует высокой производительности.

1
ответ дан 4 December 2019 в 15:38

Теги

Похожие вопросы