Дано: межсетевой экран D-Link DFL-700, через который клиент ходит в Интернет. Требуется давать детализацию по машинам внутренней сети клиента. Устройство умеет слать статичстику по syslog, сообщения следцющего формата:
EFW: CONN: prio=1 rule=allow_standard conn=close conninproto=TCP connrecivif=LAN connsrcip=192.168.1.11 connsrcport=4968 conndestif=WAN conndestip=194.67.35.191 conndestport=80 orrigsent=815 termsent1413
т.е., все нужные данные есть. Что предпочтительнее использоваить для конвертации этих данных в NetFlow для пересылки на UTM - utm5_flowgen c ключом -f, который недокументирован (или там хранится в двоичном виде часть содержимого NetFlow-пакета?)
Сбор статистики из нестандартного источника
-
- Сообщения: 3
- Зарегистрирован: Пт май 20, 2005 12:09
Есть действительно вариант использовать бинарный файл, но вашем случае проще будет написать обычный скрипт (например, на perl), который будет парсить строки из лога и запускать utm5_flowgen с нужными параметрами. В вашем случае практически всё, что надо есть в логе: источник, получатель. Количество байт видимо поле orrigsent ?
Если потребуется написание данного скрипта - мы можем выполнить эту работу за отдельную оплату.
Если потребуется написание данного скрипта - мы можем выполнить эту работу за отдельную оплату.
-
- Сообщения: 3
- Зарегистрирован: Пт май 20, 2005 12:09
Возможно, только я поэксперементировал с файлом - мне не нравится, что количество пакетов, порты источника и приемника, еще несколько полей пакета netflow берутся, видимо, из задаваемого файла (это про utm5_flowgen). Все таки попробую что-то отсюда flow-tools. Жалко, что остальной народ молчит - наверняка многие используют дилинк....
D-Link пока в качестве маршрутизаторов не сильно распространен (видимо используются в основном дешевые свитчи, беспроводные точки доступа, сетевые карты) поэтому пока мало отзывов ... да и сбор статистики через syslog не очень хорошая идея
При больших потоках и куче соединений думаю это будет узким местом.
Если у вас получиться завязать UTM5 и D-Link DFL-700 просьба скинуть небольшой отзыв о совместной работе. Заранее спасибо.

Если у вас получиться завязать UTM5 и D-Link DFL-700 просьба скинуть небольшой отзыв о совместной работе. Заранее спасибо.
-
- Сообщения: 3
- Зарегистрирован: Пт май 20, 2005 12:09
Ну вот, немного информации появилось....
Итак, схема сети: сервер с NetUp где-то в Интернете, клиентская сеть подключена к Интернет через D-Link DFL-700. Внутри сети стоит сервер с линуксом. Что делали:
- включили полный audit logging на DFL-700 (см. руководство), селектор - local0
- разрешили сислогу на лиуксе принимать пакеты по сети (ключ -r запуска), логи с селектором local0 кидаем в /var/log/firewall
- скачали и поставили flow-tools
- написали два скриптика: audit2nfc.sh - разбирает строку, генерируемую для сислога с DFL-700, со стандартного ввода и скидывает в виде двух netflow пакетов на сервер NetUp. Два пакета надо, т.к. в одной строчке лога есть и входящий и исходящий трафик.
handler-1m.sh - для запуска из крона раз в минуту - фильтрует нужную информацию из файла /var/log/firewall и передает ее первому скрипту
Текст скриптов ниже. Что можно сделать в первую очередь - непередавать каждую строку за 2 пакета, а склеивать информацию с помощью flow-merge, а потом слать на нетап. Недостаток (это от структуры лога) - невозможно понять, сколько пакетов за сессию перелано и получено
audit2nfc.sh:
#!/bin/sh
#
# Syslog DFL-700 audit line for interest
#
# May 23 16:31:15 192.168.1.1 EFW: CONN: prio=1 rule=allow_standard conn=close connipproto=TCP connrecvif=LAN connsrcip=192.168.1.3 # connsrcport=1719 conndestif=WAN conndestip=194.67.45.98 conndestport=80 origsent=933 termsent=492
#
while read mon day time dfladdr type subtype prio rule conn proto connresvif connsrcip connsrcport conndestif conndestip conndestport sent recv ; do
connsrcip=`echo $connsrcip | awk -F= '{print $2 }'`
connsrcport=`echo $connsrcport | awk -F= '{print $2 }'`
conndestip=`echo $conndestip| awk -F= '{print $2 }'`
conndestport=`echo $conndestport| awk -F= '{print $2 }'`
sent=`echo $sent| awk -F= '{print $2 }'`
recv=`echo $recv| awk -F= '{print $2 }'`
#echo "From $connsrcip:$connsrcport to $conndestip:$conndestport sent $sent bytes, received $recv bytes"
# place netup server address here
NETUP='0.0.0.0'
FLOWMASK=0x0000000000383061LL
# FLOWTYPE='flow-print'
FLOWTYPE="flow-send -V 5 192.168.1.250/$NETUP/9996"
USECS=`date --date="$mon $day $time" +%s`
PROTONUM=6
case "$proto" in
connipproto=TCP)
PROTONUM=6
;;
connipproto=UDP)
PROTONUM=17
;;
connipproto=ICMP)
PROTONUM=1
;;
*)
PROTONUM=6
esac
echo "$USECS,1,$recv,$connsrcip,$conndestip,$connsrcport,$conndestport,$PROTONUM" | flow-import -V 5 -f 2 -m $FLOWMASK| $FLOWTYPE
echo "$USECS,1,$sent,$conndestip,$connsrcip,$conndestport,$connsrcport,$PROTONUM" | flow-import -V 5 -f 2 -m $FLOWMASK| $FLOWTYPE
done
следующий файл
handler-1m.sh:
#!/bin/sh
TIMEFILT=`date --date='1 minute ago' '+%b %d %H:%M'`
grep "$TIMEFILT" /var/log/firewall | grep 'conn=close'| grep 'CONN:' | /home/chern/utm5/audit2nfc.sh
- включили полный audit logging на DFL-700 (см. руководство), селектор - local0
- разрешили сислогу на лиуксе принимать пакеты по сети (ключ -r запуска), логи с селектором local0 кидаем в /var/log/firewall
- скачали и поставили flow-tools
- написали два скриптика: audit2nfc.sh - разбирает строку, генерируемую для сислога с DFL-700, со стандартного ввода и скидывает в виде двух netflow пакетов на сервер NetUp. Два пакета надо, т.к. в одной строчке лога есть и входящий и исходящий трафик.
handler-1m.sh - для запуска из крона раз в минуту - фильтрует нужную информацию из файла /var/log/firewall и передает ее первому скрипту
Текст скриптов ниже. Что можно сделать в первую очередь - непередавать каждую строку за 2 пакета, а склеивать информацию с помощью flow-merge, а потом слать на нетап. Недостаток (это от структуры лога) - невозможно понять, сколько пакетов за сессию перелано и получено
audit2nfc.sh:
#!/bin/sh
#
# Syslog DFL-700 audit line for interest
#
# May 23 16:31:15 192.168.1.1 EFW: CONN: prio=1 rule=allow_standard conn=close connipproto=TCP connrecvif=LAN connsrcip=192.168.1.3 # connsrcport=1719 conndestif=WAN conndestip=194.67.45.98 conndestport=80 origsent=933 termsent=492
#
while read mon day time dfladdr type subtype prio rule conn proto connresvif connsrcip connsrcport conndestif conndestip conndestport sent recv ; do
connsrcip=`echo $connsrcip | awk -F= '{print $2 }'`
connsrcport=`echo $connsrcport | awk -F= '{print $2 }'`
conndestip=`echo $conndestip| awk -F= '{print $2 }'`
conndestport=`echo $conndestport| awk -F= '{print $2 }'`
sent=`echo $sent| awk -F= '{print $2 }'`
recv=`echo $recv| awk -F= '{print $2 }'`
#echo "From $connsrcip:$connsrcport to $conndestip:$conndestport sent $sent bytes, received $recv bytes"
# place netup server address here
NETUP='0.0.0.0'
FLOWMASK=0x0000000000383061LL
# FLOWTYPE='flow-print'
FLOWTYPE="flow-send -V 5 192.168.1.250/$NETUP/9996"
USECS=`date --date="$mon $day $time" +%s`
PROTONUM=6
case "$proto" in
connipproto=TCP)
PROTONUM=6
;;
connipproto=UDP)
PROTONUM=17
;;
connipproto=ICMP)
PROTONUM=1
;;
*)
PROTONUM=6
esac
echo "$USECS,1,$recv,$connsrcip,$conndestip,$connsrcport,$conndestport,$PROTONUM" | flow-import -V 5 -f 2 -m $FLOWMASK| $FLOWTYPE
echo "$USECS,1,$sent,$conndestip,$connsrcip,$conndestport,$connsrcport,$PROTONUM" | flow-import -V 5 -f 2 -m $FLOWMASK| $FLOWTYPE
done
следующий файл
handler-1m.sh:
#!/bin/sh
TIMEFILT=`date --date='1 minute ago' '+%b %d %H:%M'`
grep "$TIMEFILT" /var/log/firewall | grep 'conn=close'| grep 'CONN:' | /home/chern/utm5/audit2nfc.sh