Я не так давно делал подборку инструментов для учёта трафика в сети. Сейчас наиболее функциональное и бесплатное решение - Akvorado. У него одна существенная особенность. Он на базе Elasticsearch и очень прожорлив до ресурсов.
Сразу скажу, для чего подобные продукты могут быть полезны, даже если у вас очень простая инфраструктура. Банально, хочется понимать, что вообще происходит в сети и желательно хотя бы с небольшой ретроспективой. Когда всё нормально работает, вроде как и не нужна никакая статистика. А если что-то идёт не так и где-то тормозит? А у вас нет ничего, что анализировало бы трафик. Надо идти на шлюз, что-то там запускать, смотреть в консоли кто куда ходит и из-за чего всё тормозит. Может и не из-за сети.
Упомянутой в начале подборке очень не хватает в составе Xenoeye. Это полностью бесплатный Netflow/IPFIX/sFlow коллектор и анализатор от российских разработчиков. Я его запустил у себя и попробовал. Очень классное решение, особенно для небольших инфраструктур. Расскажу обо всё по порядку.
Сразу перечислю основные особенности Xenoeye:
▪️Полностью бесплатное решение.
▪️Есть готовый LXC контейнер и шаблон на его базе для Proxmox, ничего вручную устанавливать не надо.
▪️Для базовой функциональности достаточно просто запустить контейнер и смотреть графики в Grafana.
▪️Простые и гибкие настройки для детализации по объектам и событиям.
▪️Относительно небольшое для такого рода продуктов потребление ресурсов.
По Xenoeye особо нет инструкций или подробного описания, кроме статьи на хабре от разработчика. Я сначала бегло посмотрел репозиторий и немного приуныл, так как показалось, что надо долго и муторно разбираться с системой. Потом заметил шаблон для Proxmox и решил развернуть систему из него.
Вот прямая ссылка на шаблон. Скачал в Proxmox и развернул в привилегированном контейнере. Установил туда openssh-server, чтобы можно было подключиться по SSH.
Зашёл в систему, открыл документацию и не очень понял, что надо сделать, чтобы начать собирать трафик. Открыл конфигурацию, посмотрел её, закрыл. Посмотрел список открытых портов, которые слушает приложение. Увидел там открытый порт UDP 2056. Сходил на свой Mikrotik, в раздел IP ⇨ Traffic Flow ⇨ Targets и добавил IP адрес LXC контейнера Xenoeye и порт 2056.
Оказалось, этого достаточно. То есть после запуска контейнера система полностью готова к приему Netflow потока. Все базовые настройки там уже сделаны, службы запущены.
Далее пошёл на 3000-й порт контейнера. Там уже запущена Grafana с несколькими обзорными дашбордами, которых для общего представления о том, что происходит, достаточно.
Более детальную статистику с выделением нужных вам подсетей, хостов или направлений можно сделать самостоятельно. В репозитории есть документация на русском языке с примерами. Настраивается всё довольно просто.
Данные хранятся в PostgreSQL, а дашборды в Grafana рисуются запросами напрямую в базу. Соответственно, вывести себе на дашборд вы можете всё, что угодно, предварительно создав нужные вам сущности в конфигурации. Покажу пример из документации.
Допустим, вам надо отследить тех, кто из вашей сети ходит на внешние SSH сервера. Описываете такие хосты в отдельном файле конфигурации /var/lib/xenoeye/mo/ssh_scanners/mo.conf
:
{
"filter": "src net my-nets and dst port 22",
"fwm": [
{
"name": "hosts",
"fields": ["packets", "src host", "dst host", "proto"]
}
]
}
После этого отсортированный список IP адресов можно получить одним SQL запросом:
$ select src_host, count(src_host) from (select distinct src_host, dst_host from ssh_scanners where time >= now() - interval '1 day' order by src_host desc) as x group by src_host order by count desc;
То же самое можно сделать для исходящих SMTP запросов не с ваших почтовых серверов и т.д.
Я для своей небольшой тестовой сети из нескольких хостов запустил контейнер с 2 CPU и 4 Gb RAM. Нагрузки почти никакой не было. Можно было и в 2 раза меньше ресурсов выделить.
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки, а разработчикам ⭐️ в 4️⃣
———
ServerAdmin: 📱 Telegram | 🌐 Сайт | 📲 MAX
#netflow #gateway