Организация точки съема трафика с Linux сервера или маршрутизатора для анализа

Задача: Организовать съем трафика с сервера и передачу его по сети на другой сервер для последующего анализа. В простейшем случае — реализации средствами ОС Linux функции SPAN коммутаторов Cisco. Подобная задача возникает, если мы хотим провести анализ содержимого не на существующем сервере, а на выделенном сервере для анализа. В простейшем случае реализуем схему, изображенную на рисунке.

В этой схеме, мы проверяем весь трафик пользователя, проходящий через шлюз, системой обнаружения вторжений, такой как Snorm.

Для реализации такой схемы потребуется kernelspace модуль для netfilter, для реализации цели ROUTE и поддержка цели ROUTE в userspace iptables(есть из коробки в debian). Модуль ядра ipt_ROUTE.c был выброшен из patch-o-matic и не поддерживается, поэтому не собирается с новыми ядрами >=2.6.24. Я портировал его на новые ядра и выложил на google code.

Для установки нужно выполнить следующие действия:

$svn co http://iptroute.googlecode.com/svn/trunk/ iptroute

$cd iptroute

$make

$sudo make install

В результате мы установили ipt_ROUTE модуль для netfilter. Теперь нам осталось только организовать интерфейс, куда мы будем отправлять снятый трафик. Это может быть физический интерфейс, vlan-интерфейс или тунель.

Рассмотрим самый простой вариант, изображенный на рисунке:

  • eth0 — inet addr:10.10.10.2 интерфейс, смотрящий в интернет
  • eth1 — inet addr:192.168.1.1 интерфейс, смотрящий в локальную сеть
  • eth2 — inet addr:172.16.0.1 интерфейс съема, в него будет дублироваться весь трафик, который пропускает наш шлюз

    Добавляем виртуальный сервер, который будет принимать наш трафик.

    #arp -i eth2 -s 172.16.1.2 00:00:00:00:00:01

    Дублируем весь трафик, проходящий через цепочку FORWARD на адрес сервера съема 172.16.1.2:

    #iptables -t mangle -A FORWARD -j ROUTE --tee --gw 172.20.1.2

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

    Аналогичным способом легко можно анализировать трафик, идущий с веб или почтового сервера. Изначально такая схема была придумано для анализа трафика внутри шифрованных PPtP и OpenVPN туннелей на выделенном сервере.