Дополнительные  инструменты  для   журналирования  и статистики PF

Ещё одна важная составляющая постоянного контроля вашей сети – наличие возможности хранить  актуальный  статус  системы.  В  этом  разделе  мы  рассмотрим,  как  выбрать инструменты мониторинга которые могут оказаться  весьма полезными. Все инструменты представленные здесь доступны либо в базовой системе, либо в системе пакетов OpenBSD и FreeBSD (за исключение NetBSD).

Взгляд на вещи посредством systat                                         Если вы заинтересованы в том, чтобы получить мгновенный снимок трафика (снапшот), проходящего через вашу систему в текущий момент времени, программа systat в OpenBSD предлагает несколько полезных возможностей. В  главе 7, мы в кратце рассматривали очереди systat для просмотра трафика  назначенного очередям в нашем наборе правил ALTQ. Здесь мы рассмотрим декоторые дополнительные полезные опции.

Программа systat доступна на всех операционных системах BSD, в нескольких различных вариантах.  На  всех  системах,  systat  позволяет  работать  со   статистикой  системы, незначительно различаясь в синтаксисе и результирующем выводе. Например, на момент написания книги, несколько видов просмотра queues доступно в systat на OpenBSD, но не на FreeBSD или NetBSD.

Для  более  общего  взгляда  на  таблицу  состояний,  отличного  от  того,   который предоставляет queues, попробуйте использовать systat states, которая даёт список очень похожий на список процессов top(1). Далее представлен типовой вывод systat states:

2 users Load 0.24 0.28 0.27 (1-16 of 895)  Fri Apr 1 14:00:04 2011

PR    D    SRC                                   DEST                        STATE AGE    EXP    PKTS BYTES RATE   PEAK     AVG RU G udp   O  192.168.103.1:56729    192.168.103.9:12345 1:0     8340m 25     372K 542M  1492    4774    1137 *

tcp   I   10.168.103.15:47185    213.187.179.198:22   4:4     62377 86398 2954 613K 13264  23654   10     18 tcp   I   10.168.103.15:2796      213.187.179.198:22   4:4     62368 86219 4014  679K 0          0          11     18 tcp   I   10.168.103.15:15599    129.240.64.10:6667   4:4     61998 86375 9266 849K 0          58        14      *

tcp   O   213.187.179.198:1559  129.240.64.10:6667   4:4     61998 86375 9266 849K 0          58         14       *  1

Если состояния не умещаются на одном экране, можно пролистать изображение.

Аналогично, systat rules отображает живой вид пакетов, байтов и другую статистику для загруженного набора правил, например так:

2 users     Load 1.25 0.87 0.52 (1-16 of 239) Fri Apr 1 14:01:59 2011

RUL  ANCHOR  A       DIR   L  Q IF            PR    K      PKTS        BYTES      STATE       MAX          INFO

0

M

In

26M

12G

4946K

all max-mss 1440

1

M

Out

nfe0

4853K

3162M

94858

inet from 10.0.0.0/8 to any queue(q_def

2

M

Out

nfe0

3318K

2430M

61672

inet from 192.168.103.0/24 to any queue

3

M

Out

nfe0

tcp

6404K

4341M

134K

from any to any port = www queue(q_web,

4

M

Out

nfe0

tcp

84298

43M

1594

from any to any port = https queue(q_we

5

M

Out

nfe0

tcp

502

34677

63

from any to any port = domain queue(q_d

6

M

Out

nfe0

udp

512K

64M

257K

from any to any port = domain queue(q_d

7

M

Out

nfe0

icmp

11

1008

3

all queue(q_dns, q_pri)

8

B

Any

L

14638

1346K

0

return all

9

B

Any

Q

95

5628

0

return from <bruteforce> to any

10

P

Any

1139K

1005M

757

all flags any

11

P

In

Q

tcp

K

18538

1350K

708

inet from any to any port = ftp

12

P

Out

tcp

K

0

0

0

inet from 127.0.0.1/32 to any port = ftp

13

P

Any

L

1421

128K

134

all flags any

14

P

In

L

egres

tcp

K

1830K

87M

18933

inet from any to any port = smtp queue

15

P

In

L

egres

tcp

K

31

5240

2

from <nospamd> to any port = smtp

Обзор правил systat особенно полезен, поскольку он предлагает живое  представление полностью развёрнутого загруженного набора правил. Например, если ваш набор правил ведёт себя несколько несколько странно, данный вид может направить вас в правильном направлении поиска и показать  фактический  поток пакетов. Программа systat так же предлагает вид представления данных которые вы можете получить посредством команды pfctl  -s  status. Следующий пример  показывает часть вывода systat pf.  Вид systat  pf предлагает больше информации чем может поместиться на экран, но её  можно видеть вживую.

2 users Load 0.34 0.64 0.47 (1-16 of 51) Fri Apr 1 14:04:04 2011

TYPE pf

pf pf pf

NAME Status Since Debug Hostid

VALUE Enabled 139:05:08 err 0x82aea702

RATE

NOTES

nfe0

Bytes In

6217042900

IPv4

nfe0

Bytes In

0

IPv6

nfe0

Bytes Out

5993394114

IPv4

nfe0

Bytes Out

64

IPv6

nfe0

Packets In

12782504

IPv4,

Passed

nfe0

Packets In

0

IPv6,

Passed

nfe0

Packets In

11096

IPv4,

Blocked

nfe0

Packets In

0

IPv6,

Blocked

nfe0

Packets Out

12551463

IPv4,

Passed

nfe0

Packets Out

1

IPv6,

Passed

nfe0

Packets Out

167

IPv4,

Blocked

Программа systat предлагает несколько прочих видов, в том числе связанных с сетью, таких  как  NetStat,  vmstat  для  статистики  виртуальной памяти,  iostat  для  статистики устройств ввода/вывода Вы можете циклически переключаться между всеми видами systat используя левую и правую клавиши  управления курсором. (Смортите man systat для получения подробной информации).

Взгляд на вещи с помощью pftop                                            Если ваша система не имеет версии systat с поддержкой вида PF, вы можете отслеживать активность  вашей  сети  в  режиме  реального  времени  используя  pftop.  Эта  команда отображает снимки вашего трафика. pftop не включена в базовую систему, но доступна в качестве пакета, и в системе портов OpenBSD и FreeBSD как /sysutils/pftop, а так же в NetBSD посредством pkgsrc как sysutils/pftop. Вот пример её вывода:

pfTop: Up State 1-17/771, View: default, Order: none, Cache: 10000                   14:05:42

PR   DIR

SRC

DEST                              STATE

AGE

EXP

PKTS

BYTES

udp Out

192.168.103.1:56729

192.168.103.9:12345 SINGLE:NO_TRAFFIC

8346m

22

373K

543M

tcp

In

10.168.103.15:47185    213.187.179.198:22

ESTABLISHED:ESTABLISHED

62715

86395

3232

667K

tcp

In

10.168.103.15:2796      213.187.179.198:22

ESTABLISHED:ESTABLISHED

62706

86369

4071

686K

tcp

In

10.168.103.15:15599    129.240.64.10:6667

ESTABLISHED:ESTABLISHED

62336

86379

9318

854K

tcp

Out

213.187.179.198:15599 129.240.64.10:6667

ESTABLISHED:ESTABLISHED

62336

86379

9318

854K

tcp

In

10.168.103.15:8923      140.211.166.4:6667

ESTABLISHED:ESTABLISHED

62181

86380

15755

4821K

tcp

Out

213.187.179.198:8923   140.211.166.4:6667

ESTABLISHED:ESTABLISHED

62181

86380

15755

4821K

Вы  можете  использовать  pftop  для  сортировки  ваших  подключений  по  различным критериям, в том числе правилам PF, объёму, возрасту и адресам источника и назначения.

Визуализация вашего трафика с помощью pfstat                 Если   ваша   система   поднята,   работает   и   обрабатывает   данные,   графическое представление  данных  о  потоках  информации  станет   полезной   возможностью  для просмотра и анализа данных. Один из способов графического отображения данных PF – программа   pfstat,   разработанная   Даниэлем   Хартмеером   с   целью   извлечения   и представления статистических данных, автоматически генерируемых PF. Инструмент pfstat доступен через систему пакетов OpenBSD или в качестве порта net/pfstat, через систему

портов FreeBSD как sysutils/pfstat, и через pkgsrc в NetBSD, как sysutils/pfstat.

Программа pfstat собирает данные, которые вы определяете в файле  конфигурации и представляет эти данные как файлы формата JPG или PNG.  источником данных может быть либо PF работающий на локальной системе, через устройство /dev/pf, либо данные собранные с удалённого компьютера под управлением демона pfstatd.

Для   настройки   pfstat,   в   должны   решить,   какие   части   данных   PF   требуется визуализировать и каким образом, а затем написать конфигурационный файл и запустить задание cron для сбора данных и генерации ваших графиков. Программа поставляется с подробно комментированным файлом конфигурации и полезной man-страницей. Пример конфигурации  может  быть  полезной  отправной  точкой  для  написания  собственного конфигурационного файла. Например, следующий фрагмент  pfstat.conf весьма близок к

первоначальному примеру конфигурации{1}:

collect 8 = global states inserts diff collect 9 = global states removals diff collect 10 = global states searches diff

image "/var/www/users/peter/bsdly.net/pfstat-states.jpg" { from 1 days to now

width 980 height 300 left

graph 8 "inserts" "states/s" color 0 192 0 filled, graph 9 "removals" "states/s" color 0 0 255 right

graph 10 "searches" "states/s" color 255 0 0

}

Конфигурация начинается с тремя объявлениями collect, где каждому из рядов данных присваивается уникальный цифровой идентификатор. В данном случае, мы захватываем число вставок (insertions), удалений (removals) и поисков (searches) в таблице состояний. Далее определяются параметры изображения, которое отображает указанные данные. В строке  указывается  период  отображения  (from  1  days  to  now,  означает,  что  будут отображаться только данные собранные в течение последних 24 часов). width (ширина) и height (высота) указывают на размер изображения измеряемый в пикселях для каждого направления. Объявление graph указывает, как  отображаются ряды данных и легенды графиков. Сбор состояний вставки, удаления и поиска производится один раз в минуту, а затем данные графика собираются в суточное отображение примерно так, как показано на рисунке 8-1.

Рисунок 8-1 Статистика таблицы состояний по 24-часовой шкале времени.

График может быть изменён, в целях более детального представления одних и тех же данных. Например, чтобы увидеть данные за последний час с  большим разрешением, измените  период  на  from  1  hours  to  now  и  размерность  на  width  600  height  300. Примерный результат должен быть подобен рисунку 8-2.

Рисунок 8-2. Статистика таблицы состояний, 1-часовая шкала времени.

Домашняя  страница  pfstat  http://www.benzedrine.cx/pfstat.html  содержит   несколько примеров, с демонстрациями в виде живых графических данных    с  доменного шлюза benzedrine.cx. Читая примеры и используя знания своего  трафика, вы должны суметь создать конфигурацию pfstat, которая хорошо  подойдёт к потребностям вашего сайта (развёртывания).

Сбор данных NetFlow с помощью pflow(4)                             NetFlow   –  метод  сбора  и  анализа  сетевых  данных,  который  породил   множество вспомогательных инструментов  для  записи  и  анализа  данных  о  TCP/IP  соединениях. NetFlow изначально появился в Cisco, и с течением  времени стал важной особенностью

различного сетевого оборудования, как инструмент управления и анализа сети.

Модель    данных    NetFlow    определяет    сетевой    поток    как    однонаправленную последовательность пакетов с одними и теми же IP адресами источника и назначения и протоколами. Например, TCP соединения  определяются в данных NetFlow в виде двух потоков: по одному в каждом направлении.

Данные    PF    могут    быть    доступны    для    инструментов    NetFlow    посредством псевдоинтерфейса pflow(4), который впервые появился в  OpenBSD  4.5 с опцией pflow state. По существу, всю информацию которую вы ожидаете найти в записи потока NetFlow стиля легко выводится из данных PF хранимых в таблице состояний, а интерфейс pflow предоставляет простой  способ экспорта данных таблицы состояний PF в очищенном и хорошо  документированном формате. Как и при прочем журналировании, вы  должны обеспечить получение данных NetFlow из набора правил PF базируясь на основе правил.

Система сетевого мониторинга основанная на NetFlow состоит из нескольких отдельных частей. Данные NetFlow получаются от одного или нескольких  сенсоров генерирующих данные о сетевом трафике. Сенсоры передают  данные  о потоках в коллектор который хранит  получаемые  данные.   Наконец   система  анализа  и  отчётности  извлекает  и обрабатывает данные. {2}

Установка сенсора NetFlow                                                      Для   установки  сенсора  NetFlow  требуется  два  компонента:  одно   или   несколько настроеных устройств pflow(4), и, по крайней мере, одно правило passв наборе правил с включённой опцией pflow state. Интерфейсы  pflow создаются с двумя обязательными параметрами: IP адресом источника и IP адресом назначения потока и номером порта. Вот

пример команды ifconfig для файла /etc/hostname.pflow0:

flowsrc 192.0.2.1 flowdst 192.0.2.105:3001

Из командной строки можете сделать так:

$ sudo ifconfig pflow0 create flowsrc 192.0.2.1 flowdst 192.0.2.105:3001

В обоих случаях, эта команда устанавливает хоств для отправки данных NetFlow с адреса источника  192.0.2.1  на  коллектор,  который  слушает  данные   NetFlow  на  адресе 192.0.2.105, на порту UDP 3001.

Примечание

Можно настроить несколько устройств pflow с отдельными направлениями потока. Тем не менее, в настоящее время невозможно указать, основываясь на правилах, какое устройство pflow должно получать генерируемые данные.

После включения устройства pflow, укажите в /etc/pf.conf правила pass которые должны предоставлять   данные   NetFlow   сенсору.   Например,   если   ваша   основная   задача заключается  в  сборе  данных  о  почтовом  трафике  клиентов  хостов  IPv4,  следующее правило установит необходимый сенсор:

pass out log inet proto tcp from <client> to port $email \ label client-email keep state (pflow)

Когда pflow впервые появился в PF, немедленной реакцией ранних пользователей стало то, что они хотели добавить pflow ко всем правилам pass из ранних наборов правил. Это привело   разработчика   PF,   Брауэра   Хеннинга,   к   введению   ещё   одной   полезной возможности PF  –  установке  состояния по  умолчанию  которое применяется  для  всех правил, если не указано иное. Например, если вы добавите следующую строку в начале вашего  набора правил, все правила pass в конфигурации будут генерировать  данные NetFlow, которые будут экспортироваться через устройства pflow:

set state-defaults pflow

Создав по крайней мере одно устройство pflow и одно правило в pf.conf, генерирующее данные  для  экспорта  через  устройство  pflow,  вы  практически  закончите  настройку сенсора.  Однако,  возможно,  вам   понадобится  добавить  правило,  которое  позволит передачу UDP данных в  поток с IP адреса который вы указали как источник потока данных в IP адрес коллектора и целевой порт для назначения потока. После того, как вы завершите этот последний шаг, вам следует переключить внимание на сбор данных для последующей обработки.

Сбор, отчётность и анализ данных NetFlow                            Если  ваша  система  имеет  инфраструктуру сбора  и  анализа  данных  основанную  на NetFlow,  возможно, вы  уже  добавили все  необходимые  настройки  конфигурации  для системы сбора и анализа данных PF. Если среда  анализа данных потока у вас ещё не

настроена, вам доступны несколько вариантов.

Система пакетов OpenBSD предлает три коллектора и анализатора пакетов NetFlow: flow- tools, flowd и  nfdump3. Все три системы разработаны  преданными ии  компетентными разработчиками  и   сообществами,  и   имеют   множество   дополнений,   в   том   числе графических  web-интерфейсов.  flow-tools  –  является  основнм  инструментом  анализа потока во многих  развёртываниях. Фанаты nfdump указывают на анализатор пакетов nfsen  который объединяет инструменты nfdump в мощный и гибкий фронтенд с  web интерфейсом.

Выбор коллектора

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

Независимо от вашего выбора коллектора NetFlow, журналирование должно выполняться со следующей оговоркой: подробная информация  журналирования  трафика  требует  хранения.  В  случае  NetFlow,  каждый  поток  будет  генерировать  запись фиксированного размера, и по неофициальным данным, даже скромный  набор профилей на загруженных системах может генерировать  гигабайт  данных  NetFlow  в  день.  Объём   памяти,  необходимый  вам,  прямо  пропорционален  количеству соединений и тому как долго вы храните исходные данные NetFlow. Наконец следует помнить о правовых аспектах.

Коллекторы обычно предлагают некоторые возможности фильтрации, позволяющие отбросить данные о специфических хостах или сетях, или даже отбросить некоторые части записей NetFlow, глобально или для указанных хостов и сетей.

Чтобы проиллюстрировать некоторые основы сбора данных NetFlow и то, как извлекать подмножество собранных данных для дальнейшего анализа, мы будем использовать flowd, достаточно  длительное  время  разрабатываемого  Дамьеном  Миллером  (Damien  Miller), одним  из  разработчивков  OpenBSD  и  доступном   посредством  системы  пакетов  (на OpenBSD в качестве net/flowd, а на FreeBSD как net-mgmt/flowd). Я решил использовать flowd в основном потому, что она была разработана как маленькая, простая и безопасная система. Как  вы  увидите далее, flowd по прежнему удаётся быть весьма полезным и гибким инструментом. Оперирование с потоком данных посредством других инструментов будут оличаться только в некоторых деталях, однако основные принципы остаются теми же.

В сравнении с другими пакетами коллекторов NetFlow, flowd очень компактен и состоит только из двух исполняемых программ (демона коллектора flowd и программы фильтрации и представления потока flowd-reader), библиотеки  поддержки и файла конфигурации. Документация программы весьма краткая  но адекватная, образец файла /etc/flowd.conf содержит  большое  количество   подробных  комментариев.  Основываясь  на  странице руководства и  комментариях в образце конфигурационного файла вы потратите совсем

немного времени на создание полезной конфигурации коллектора.

После удаления строк комментариев (используем команду grep -v \# /etc/flowd.conf или аналогичную), базовый файл конфигурации flowd может выглядеть следующим образом:

logfile "/var/log/flowd" listen on 192.0.2.105:3001 flow source 192.0.2.1

store ALL

Хотя эта конфигурация содержит не больше информации чем конфигурация интерфейса pflow при настройке сенсора, она включает два важных пункта:

•     Строка logfile сообщает нам, где будут храниться собранные данные (и показывает, что flowd стремится хранить все данные в одном файле).

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

Запустив демон flowd с этой конфигурацией, практически сразу вы увидите рост файла

/var/log/flowd, показывающий, что сетевой трафик проходит через шлюз и записи потоков собираются  коллектором.  Через  некоторое  время  вы  сможете  посмотреть  на  данные

используя программу flowd-reader. Для примера с сохранением всех полей,  данные для

одного поиска имени с хоста в NAT локальной сети выглядят в flowd-reader примерно так:

$ sudo flowd-reader /var/log/flowd

FLOW recv_time 2011-04-01T21:15:53.607179 proto 17 tcpflags 00 tos 00 agent [213.187.179.198] src [192.168.103.254]:55108 dst [192.168.103.1]:53 packets 1 octets 62

FLOW recv_time 2011-04-01T21:15:53.607179 proto 17 tcpflags 00 tos 00 agent [213.187.179.198] src [192.168.103.1]:53 dst [192.168.103.254]:55108 packets 1 octets 129

Обратите внимание, что поиск генерирует два потока: по одному в каждом направлении. Первый  поток  определяется  главным  образом  по  времени  получения,  далее  следует используемый протокол (протокол 17 это UDP, как вам может подсказать /etc/protocols). Оба флага соединения TCP и TOS сняты, и коллектор получает данные от нашего шлюза 192.0.2.1.  Адрес  источника   потока  192.168.103.254,  порт  источника  55108,  адрес назначения  192.168.103.1 и порт 53, т.е. порт DNS. Поток состоял из одного пакета с полезной нагрузкой в 62 октета. В то же время коллектором был получен обратный поток, и мы видим, что этот поток имеет обратные значения  источника и назначения, с чуть большей полезной загрузкой в 129 октетов.  Выходной формат flowd-reader поддаётся разбору с помощью регулярных  выражений для последующей обработки инструментами отчётности или графопостроителями.

Вы можете подумать, что эти данные – всё что можно узнать о наборе сетевых потоков, однако реально можно извлечь и более подробную информацию. Например, с помощью опции  -v  программы  flowd-reader  можно  получить  более  подробный  вывод,  который выглядит примерно так:

FLOW recv_time 2011-04-01T21:15:53.607179 proto 17 tcpflags 00 tos 00 agent [213.187.179.198] src [192.168.103.254]:55108 dst [192.168.103.1]:53 gateway [0.0.0.0] packets 1 octets 62 in_if 0 out_if 0 sys_uptime_ms 1w5d19m59s.000 time_sec 2011-04-01T21:15:53 time_nanosec 103798508 netflow ver 5 flow_start 1w5d19m24s.000 flow_finish 1w5d19m29s.000 src_AS 0 src_masklen 0 dst_AS 0 dst_masklen 0 engine_type 10752 engine_id 10752 seq 5184351 source 0 crc32 759adcbd

FLOW recv_time 2011-04-01T21:15:53.607179 proto 17 tcpflags 00 tos 00 agent [213.187.179.198] src [192.168.103.1]:53 dst [192.168.103.254]:55108 gateway [0.0.0.0] packets 1 octets 129 in_if 0 out_if 0 sys_uptime_ms 1w5d19m59s.000 time_sec 2011-04-01T21:15:53 time_nanosec 103798508 netflow ver 5 flow_start 1w5d19m24s.000 flow_finish 1w5d19m29s.000 src_AS 0 src_masklen 0 dst_AS 0 dst_masklen 0 engine_type 10752 engine_id 10752 seq 5184351 source 0 crc32 f43cbb22

Поле gateway указывает, что сенсор сам служит шлюзом для этого  соединения. Вы увидите список учавствующих интерфейсов (in_if и out_if),  время непрерывной работы сенсора (sys_uptime_ms), а так же множество  других параметров, таких как AS номера (src_as и dst_as – как я понимаю  речь  идёт о номерах автономных систем источника и

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

Вам не следует полагаться на внешние программы для начальной  фильтрации  данных собранных с вашего датчика pflow. flowd предлагает широкий спектр фильтров, которые позволяют хранить только необходимые данные. Один из подходов – ввести выражения фильтрации в flowd.conf, как показано в следующем примере:

logfile "/var/log/flowd.compact" listen on 192.0.2.105:3001

flow source 192.0.2.1 store SRC_ADDR

store DST_ADDR store SRCDST_PORT store PACKETS

store OCTETS

internalnet = "192.168.103.0/24" unwired = "10.168.103.0/24" discard src $internalnet

discard dst $internalnet discard src $unwired discard dst $unwired

Вы  можете  хранить  только  некоторые  поля  в  записях  потока.  Для   примера,  в конфигурации  которая  содержит  только  один  коллектор  или  агент,  поле  agent  не содержит никакой полезной информации и сохраняться не должно. В этой конфигурации мы будем хранить только адрес источника,  получателя, порт, число пакетов и число октетов.

Вы можете ограничить хранимые данные ещё больше. Макросы internaknet и  unwired расширяются  для  двух  натированных  локальных  сетей,  а   четыре   строки  discard следующие за  определением макросов означают, что  flowd  отбрасывает  все  данные, получаемые  о  потоках  с  любых  источников  и  назначений  в  любой  из  этих  сетей. Результатом станет более  компактный  набор данных, учитывающий ваши конкретные потребности, и  вы  будете видеть только маршрутизируемые адреса и адреса сенсоров внешнего интерфейса шлюза:

$ sudo flowd-reader /var/log/flowd.compact | head

FLOW src [193.213.112.71]:38468 dst [192.0.2.1]:53 packets 1 octets 79

FLOW src [192.0.2.1]:53 dst [193.213.112.71]:38468 packets 1 octets 126

FLOW src [200.91.75.5]:33773 dst [192.0.2.1]:53 packets 1 octets 66

FLOW src [192.0.2.1]:53 dst [200.91.75.5]:33773 packets 1 octets 245

FLOW src [200.91.75.5]:3310 dst [192.0.2.1]:53 packets 1 octets 75

FLOW src [192.0.2.1]:53 dst [200.91.75.5]:3310 packets 1 octets 199

FLOW src [200.91.75.5]:2874 dst [192.0.2.1]:53 packets 1 octets 75

FLOW src [192.0.2.1]:53 dst [200.91.75.5]:2874 packets 1 octets 122

FLOW src [192.0.2.1]:15393 dst [158.37.91.134]:123 packets 1 octets 76

FLOW src [158.37.91.134]:123 dst [192.0.2.1]:15393 packets 1 octets 76

Даже с опцией -v, вывод flowd-reader показывает только то, что явно указано в настройке фильтрации:

$ sudo flowd-reader -v /var/log/flowd.compact | head LOGFILE /var/log/flowd.compact

FLOW src [193.213.112.71]:38468 dst [192.0.2.1]:53 packets 1 octets 79

FLOW src [192.0.2.1]:53 dst [193.213.112.71]:38468 packets 1 octets 126

FLOW src [200.91.75.5]:33773 dst [192.0.2.1]:53 packets 1 octets 66

FLOW src [192.0.2.1]:53 dst [200.91.75.5]:33773 packets 1 octets 245

FLOW src [200.91.75.5]:3310 dst [192.0.2.1]:53 packets 1 octets 75

FLOW src [192.0.2.1]:53 dst [200.91.75.5]:3310 packets 1 octets 199

FLOW src [200.91.75.5]:2874 dst [192.0.2.1]:53 packets 1 octets 75

FLOW src [192.0.2.1]:53 dst [200.91.75.5]:2874 packets 1 octets 122

FLOW src [192.0.2.1]:15393 dst [158.37.91.134]:123 packets 1 octets 76

К счастью, flowd не заставляет вас делать применять все ваши решения фильтрации в тот момент когда коллектор получает поток данных от  сенсоров.  Использование флага -f позволит   указать   отдельный   файл   с    заявлениями   фильтрации   на   извлечение определённых данных из  большого  набора собранных данных потока. Например, чтобы увидеть HTTP трафик нашего web-сервера, вы можете написать фильтр, который хранит

только потоки с адреса вашего web-сервера и TCP порта назначения с номером 80, или адреса web-сервера и TCP порта 80 как источника:

webserver = 192.0.2.227 discard all

accept dst $webserver port 80 proto tcp accept src $webserver port 80 proto tcp store RECV_TIME

store SRC_ADDR store DST_ADDR store PACKETS store OCTETS

Предположив, что вы храните фильтр в towebserver.flowdfilter, вы можете извлечь трафик, соответствующий вашим критериям фильтрации из /var/log/flowd:

$ sudo flowd-reader -v -f towebserver.flowdfilter /var/log/flowd | tail FLOW recv_time 2011-04-01T21:13:15.505524 src [89.250.115.174] dst [192.0.2.227] packets 6 octets 414

FLOW recv_time 2011-04-01T21:13:15.505524 src [192.0.2.227] dst [89.250.115.174] packets 4 octets 725

FLOW recv_time 2011-04-01T21:13:49.605833 src [216.99.96.53] dst [192.0.2.227] packets 141 octets 7481

FLOW recv_time 2011-04-01T21:13:49.605833 src [192.0.2.227] dst [216.99.96.53] packets 212 octets 308264

FLOW recv_time 2011-04-01T21:14:04.606002 src [91.121.94.14] dst [192.0.2.227] packets 125 octets 6634

FLOW recv_time 2011-04-01T21:14:04.606002 src [192.0.2.227] dst [91.121.94.14] packets 213 octets 308316

FLOW recv_time 2011-04-01T21:14:38.606384 src [207.46.199.44] dst [192.0.2.227] packets 10 octets 642

FLOW recv_time 2011-04-01T21:14:38.606384 src [192.0.2.227] dst [207.46.199.44] packets 13 octets 16438

FLOW recv_time 2011-04-01T21:15:14.606768 src [213.187.176.94] dst [192.0.2.227] packets 141 octets 7469

FLOW recv_time 2011-04-01T21:15:14.606768 src [192.0.2.227] dst [213.187.176.94] packets 213 octets 308278

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

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

Источник: Книга о PF, by Peter N.M. Hansteen, Перевод выполнил Михайлов Алексей aka iboxjo

Похожие посты:

Вы можете оставить комментарий, или ссылку на Ваш сайт.

Оставить комментарий