Jump to content
Калькуляторы

PF и traffic mirror

Добрый день.

Есть машинка с

# uname -a
FreeBSD  8.0-STABLE-201001 amd64

 

на которой стоит snort для ловли атак, вируснобольных, и прочего безобразия из сети.

Для анализа трафика с роутеров сделан mirror на вторую сетевуху snort'а исходящего трафика от абонентов в инет.

Помимо этого хотим ещё считать количество пакетов средствами PF, что бы в дальнейшем запихивать в таблицы и рассылать для блокировки на маршрутизаторах.

Но, pf совсем не видит трафик, который миррориться на сетевуху.

Добавили в sysctl:

net.inet.ip.forwarding=1

Всё равно пусто.

Правила PF:

table <spammers> persist
table <web> persist
pass in quick on em0 proto tcp from 10.0.0.0/8 to any port 25 flags S/SA keep state \
        (max-src-conn 1, max-src-conn-rate 1/90, overload <spammers> flush global)
pass in quick on em0 proto tcp from 10.0.0.0/8 to any port 80 flags S/SA keep state \
        (max-src-conn 1, max-src-conn-rate 1/90, overload <spammers> flush global)

 

Сетевуха на которую трафик сыпется em0.

Для неё включен только promisc.

pftop показывает соответственно:

 
pfTop: Up Rule 1-2/2, View: rules, Cache: 10000                                                                      

RULE  ACTION   DIR LOG Q IF     PR        K     PKTS    BYTES   STATES   MAX INFO
   0  Pass     In      Q em0    tcp       K        0        0        0       inet from 10.0.0.0/8 to any port = smtp  flags S
   1  Pass     In      Q em0    tcp       K        0        0        0       inet from 10.0.0.0/8 to any port = http  flags S

 

Пробовали поставить сетевухе em0 MAC шлюза по умолчанию для пакетов, которые на неё миррорятся.

И всё равно PF ничего не видит.

Единственное что видит PF - это стейты по ssh порту к себе (только там сетевуха уже em1, для управления).

 

Соответственно вопрос, куда же всё таки копать, что бы pf мог обрабатывать зеркалируемый трафик на em0 ?

Share this post


Link to post
Share on other sites

ИМХО никак.

ПФ следит за сессиями через себя, в вашем случае он просто игнорит траффик, ибо стейтов в нём он создать не может.

Посмотрите как пф работает на машине-бридже, может там что то будет толковое по вашей ситуации.

Share this post


Link to post
Share on other sites

"А ларчик просто открывался"

Когда смотрел трафик на em0 tcpdump'om, то никакие фильтры не применялись, например

tcpdump -ni em0 net 10.5

выводил пустоту, показывал только через grep.

Потом дошло, трафик то я зеркалирую теггированный, соотвественно:

tcpdump -ni vlan net 10.5

выдал что нужно.

Ну и в rc.conf:

cloned_interfaces="vlan999"
ifconfig_vlan999="ether MAC vlan 999 vlandev em0"

и в pf начали создаваться стейты зеркалируемого трафика.

Вроде всё круто, но тут следующая проблема:

правила:

pass in quick on vlan999 proto tcp from 10.0.0.0/8 to any port 25 flags S/SA keep state\
        (max-src-conn 1, max-src-conn-rate 1/90, overload <spammers> flush global)
pass in quick on vlan999 proto tcp from 10.0.0.0/8 to any port 80 flags S/SA keep state\
        (max-src-conn 1, max-src-conn-rate 1/90, overload <web> flush global)

не срабатывают (таблички spammers и web пустые).

Что собственно и не удивительно: опции max-src-conn и max-src-conn-rate только для соединений, прошедших тройное рукопожатие.

pfctl -sa | grep IP

....
IP -> 0.0.0.0 ( states 15, connections 0, rate 0.0/90s )
....

 

Остаётся только считать просто количество пакетов, но при этом нигде не нашёл как засовывать превышения в таблички :(

p.s. пробовал делать mirror не только исходящего трафика, а всего - результат тот же.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this