сентября 19, 2008

netams и pf

Около года назад я давал совет на одном форуме о совместном использовании во FreeBSD пакетного фильтра PF и NETAMS (www.netams.com) для учета трафика и блокировки. На днях понадобилось вспомнить это решение. На поиск ушло много времени, поэтому сейчас сделаю заметку на более надежном хостинге.

Итак, есть сенсор netflow - pfflowd. С его помощью мы можем генерит поток netwlow о трафике, прошедшим через пакетный фильтр pf. Netams в этой схеме будет коллектором netflow и считать трафик. По сравнению с использованием IPFW и divert, в конфигурации netams поменяется только source. Однако в этом случае нетамс не может блокировать аккаунты. Решение: связать через сервис processor (например):

в конфиге нетамса

access-script "/sbin/inet.sh"

сам скрипт:

#!/bin/sh

case "$1" in

DENY)

pfctl -q -t allow_inet-T delete $3 pfctl -q -k $3

;;

ALLOW)

pfctl -q -t allow_inet -T add $3 ;;

esac

в настройках PF:

# создаем таблицу вот так:

table <allow_inet> persist file "/etc/pf/allow_inet"
# или  так:
table <allow_inet> persist


nat on $ext_if inet proto tcp from <allow_inet> to any -> $ext_if
pass in on $int_if inet proto tcp from <allow_inet> to any


Обратите внимание на  аргументы $1 - действие (DENNY|ALLOW ) и $3 - IP адрес. Они передаются скрипту нетамсом.

P.S. сейчас модно netflow генерить через ng_netflow. pfflowd - просто "элегантное" решение, которое мне нравится.

Комментариев нет: