Это старая версия документа.


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

Мониторинг в реальном времени

Для мониторинга трафика в реальном времени можно использовать утилиту jnettop:

sudo jnettop

Или, как вариант, vnstat с ключём –live:

sudo vnstat --live

Можно также воспользоваться достаточной удобной утилитой с псевдографическим интерфейсом, которая называется iptraf:

sudo iptraf

Журналирование активности средствами iptables

Стандартный пакетный фильтр iptables иногда может быть очень полезен для анализа какого-то конкретного типа трафика. iptables позволяет записывать в системный журнал активность по выбранным критериям. Например, с помощью iptables можно легко отследить, какой компьютер посылает данные во внешнюю сеть по 25 порту (SMTP), таким образом вычислив заражённый компьютер в локальной сети.

Для записи данных в файл журнала предназначено действие LOG (и более мощное ULOG). Подробный его синтаксис и возможные параметры можно посмотреть в документации по iptables.

Важным аспектом является то, что iptables сам не ведёт файлы журналов. Вместо этого действие LOG отправляет информацию системному демону журналирования, и уже он записывает её в журнал, коим чаще всего является /var/log/syslog. В итоге получается каша, в которой очень непросто разобраться. Поскольку iptables сам не занимается ведением журнала, то перенаправить запись в отдельный файл средствами самого iptables невозможно.

К счастью, в Ubuntu существует простой способ рассортировать данные по нужным журналам средствами используемой системы журналирования rsyslog. Достаточно при записи в журнал добавлять некий уникальный префикс. Например, вот так:

sudo iptables -t filter -A FORWARD -s 192.168.0.0/16 -m tcp -p tcp --dport 25 -j LOG --log-prefix "iptables: "

Теперь все записи в журнале, соответствующие этому критерию, будут начинаться с «iptables: ». Осталось добавить правило сортировки в систему журналирования. Для этого можно создать файл /etc/rsyslog.d/10-iptables.conf со следующим содержанием:

:msg, contains, "iptables: "    -/var/log/iptables.log
& ~

Вторая строчка означает, что дальнейшую работу с этой записью производить не надо, т.е. она не должна попадать в другие журналы.

После создания нового файла конфигурации не забудьте переконфигурировать rsyslog:

sudo /etc/init.d/rsyslog reload

Теперь вся активность, соответствующая добавленному правилу iptables, будет записываться в файл /var/log/iptables.log. Если вы хотите надолго оставить журналирование, то не забудьте добавить этот файл в систему ротации логов logrotate, а то в какой-то момент у вас может закончиться место на диске.

Подробней про управление записью журнала можно почитать в документации по rsyslog.

Netflow - мониторинг с ведением статистики

Для мониторинга с ведением статистики одним из популярных решений является технология Netflow.

Для сбора статистики с помощью Netflow необходимо на нужные интерфейсы повесить специальные Netflow-сенсоры, которые будут собирать информацию и передавать Netflow-коллектору, который может располагаться на другой машине.

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

В качестве сенсоров можно использовать доступные в стандартных репозиториях fprobe или softflowd.

Коллектор Nfdump и визуализатор данных Nfsen

Nfdump и Nfsen - это коллектор с сопутствующими утилитами и веб-интерфейс визуализации собранных данных. Nfdump доступен в стандартных репозиториях Ubuntu, а Nfsen можно скачать с официального сайта http://nfsen.sourceforge.net/. Там же можно посмотреть скриншоты, чтобы составить представление о том, что такое Nfsen.

В качестве сенсора для этой связки можно использовать любой доступный, например fprobe или softflowd.

Nfdump можно поставить через любой пакетный менеджер, например, командой

sudo apt-get install nfdump

Nfsen необходимо распаковать куда-нибудь на сервер из архива с исходными текстами и выполнить несколько несложных операций. Для начала необходимо поставить все нужные для работы пакеты:

sudo apt-get install apache2 libapache2-mod-php5 librrds-perl libmailtools-perl

После этого зайти в папку etc/ в директории, куда вы распаковали Nfsen, и переименовать находящийся там файл nfsen-dist.conf в nfsen.conf. Это основной конфигурационный файл Nfsen. Его необходимо отредактировать под ваши нужды. Ниже приведены только опции, которые нужно изменить для базовой конфигурации Nfsen:

# Директория, куда установится Nfsen.
$BASEDIR = "/srv/nfsen";
# Местоположение утилит Nfdump для Ubuntu и Debian
$PREFIX  = '/usr/bin';

# Пользователь для запуска nfcapd - демона-коллектора
$USER    = "www-data";

# Пользователь и группа для запуска веб-интерфейса
$WWWUSER  = "www-data";
$WWWGROUP = "www-data";

# Источники сбора данных - имя, локальный порт, на котором слушать, цвет графика
%sources = (
  'router1'    => { 'port' => '9995', 'col' => '#0000ff', 'type' => 'netflow' },
  'router2'    => { 'port' => '9996', 'col' => '#00ff00', 'type' => 'netflow' },
);

Подробную документацию по доступным возможностям можно почитать на официальном сайте Nfsen.

После редактирования конфига можно установить Nfsen. Для этого достаточно из директории, куда вы его распаковали, выполнить команду

./install.pl etc/nfsen.conf

Всё, что осталось, это запустить Nfsen. В примере выше в качестве директории для установки Nfsen указан путь /srv/nfsen/. В этом случае для запуска можно использовать команду

/srv/nfsen/bin/nfsen start

Чтобы интегрировать Nfsen в систему качестве автоматически запускаемого сервиса выполните две примерно такие команды:

ln -s /srv/nfsen/bin/nfsen /etc/init.d/nfsen
update-rc.d nfsen defaults 20

Теперь, если вы оставили настройки веб-сервера по умолчанию, веб-интерфейс должен быть доступен по адресу http://yourserver/nfsen/nfsen.php.

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

Ссылки