Ещё одна важная составляющая постоянного контроля вашей сети – наличие возможности хранить актуальный статус системы. В этом разделе мы рассмотрим, как выбрать инструменты мониторинга которые могут оказаться весьма полезными. Все инструменты представленные здесь доступны либо в базовой системе, либо в системе пакетов 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 |
||||
|
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 |
Обзор правил 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
Когда 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

August 16th, 2012
admin
Опубликовано в рубрике
Метки: