Задача: Организовать съем трафика с сервера и передачу его по сети на другой сервер для последующего анализа. В простейшем случае — реализации средствами ОС 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-интерфейс или тунель.
Рассмотрим самый простой вариант, изображенный на рисунке:
Добавляем виртуальный сервер, который будет принимать наш трафик.
#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 туннелей на выделенном сервере.