Jump to content
Калькуляторы

FastNetMon - программа для выявления входящих/исходящих атак

Рад, что разобрались!

 

Эти функции представляют собой возможность блокировать именно паразитный трафик силами BGP Flow spec, если он поддерживается роутерами. В этом режиме вместо BGP Blackhole (блокирующего весь трафик) используется BGP Flowspec, который блокирует именно трафик атаки и сам узел продолжает работать. 

Share this post


Link to post
Share on other sites

Привет! Тоже думаем поставить fastnetmon у себя.

А можно поконкретнее по схеме слива на него трафика через оптический делитель?:

Share this post


Link to post
Share on other sites

Добрый день!

 

Через оптический делитель работать должно без проблем, PF_RING/Netmap/AF_PACKET прожуют в районе 2-4 гигабит без проблем. В Advanced версии много оптимизаций и без проблем до 10/40G отрабатывает на хорошем железе. 

Share this post


Link to post
Share on other sites

Добрый день, Павел.

 

Установили в своей сети fastnetmon и настроили сбор sflow. В ядре сети используем коммутаторы Extreme. Некоторые стыки у нас дотянуты по сети через QinQ и при этом в sflow прилетает пакет с двумя vlan, которые fastnetmon не умеет разбирать. Можете сделать функционал распаковки двойного vlan?

 

Беглым взглядом по исходникам нашёл вот этот кусок в sflow_collector.cpp, который нужно исправить)

void decode_link_layer(SFSample* sample) {
    ...
    if (type_len == 0x8100) {
        /* VLAN  - next two bytes */
        uint32_t vlanData = (ptr[0] << 8) + ptr[1];
        uint32_t vlan = vlanData & 0x0fff;
        uint32_t priority = vlanData >> 13;
        ptr += 2;

        /*  _____________________________________ */
        /* |   pri  | c |         vlan-id        | */
        /*  ------------------------------------- */
        /* [priority = 3bits] [Canonical Format Flag = 1bit] [vlan-id = 12 bits] */
        // sf_log(sample,"decodedVLAN %u\n", vlan);
        // sf_log(sample,"decodedPriority %u\n", priority);
        sample->in_vlan = vlan;
        /* now get the type_len again (next two bytes) */
        type_len = (ptr[0] << 8) + ptr[1];
        ptr += 2;
    }
    ...
}

 

Share this post


Link to post
Share on other sites

Добрый день!

 

К сожалению, с QnQ не все так просто - для его кодирования разные вендоры используют разные ethertype. Например, https://forums.juniper.net/t5/Ethernet-Switching/Q-in-Q-0x8100-or-0x9100/td-p/105870 

 

И чтобы это сделать красиво - нужно делать парсер конфигурируемым, а это довольно сложно. 

 

Чтобы не потерялось, лучше всего завести тикет https://github.com/pavel-odintsov/fastnetmon/issues и приаттачить pcap дамп с указанием модели и вендора, с которого он собран, чтобы было на что опираться при модификации парсера. 

 

Share this post


Link to post
Share on other sites

За прошедшие два месяца мы значительно улучшили функционал хранилища трафика - https://fastnetmon.com/fastnetmon-advanced-traffic-persistency/ Теперь установка подсистемы traffic visibility намного проще. 

 

Для Community версии было добавлено целых два новых плагина, один для Juniper https://github.com/pavel-odintsov/fastnetmon/tree/master/src/juniper_plugin, другой для улучшенной интеграции с Mikrotik https://github.com/DollyTeam/Dolly-Fastnetmon 

Share this post


Link to post
Share on other sites

А тем временем мы выпустили стабильный релиз FastNetMon Community edition 1.1.4! :) Обновление через новую установку: https://fastnetmon.com/install/ При обновлении рекомендую сделать бэкап /etc/fastnetmon.conf, иначе установщик его перетрет.

Share this post


Link to post
Share on other sites

Павел, добрый день!

Запустили FNM в режиме Mirroring - сливаем на него трафик с одного из наших BGP-аплинков.

В первую очередь, FNM планируем использовать для предотвращения UDP-атак, поскольку в целом TCP от интернета закрыт в целом.

В качестве тестирования настроили параметры для "бана" - 5 Мбит / протокол UDP

Тем не менее наблюдаем интересную картину:

- в бан может попасть и tcp

- по наблюдениям, если случается бан - то в какой-то короткий промежуток времени (1-2 минуты) генерится сразу еще несколько банов. То есть единичный бан вообще отсутствует, если случается бан - то сразу несколько.

Так же есть вопрос по поводу ассиметричной маршутизации - у нас имеется пара бордеров, каждый со своим набором BGP-аплинков. Соответственно входящий и исходящий трафик может идти разными путями. 

Будет ли в этом случае FNM считать трафик подходящим под условия для бана? Сейчас мы мониторинг только incoming.

Насколько я понимаю, FNM способен отслеживать потоки, к примеру поток голосового (RTP) трафика, тем самым понимает, что входящий UDP - это не трафик атаки, а "нормальный" трафик. 

Спасибо

root@fcli> show hostgroup global
ban_for_bandwidth: disabled
ban_for_flows: disabled
ban_for_icmp_bandwidth: disabled
ban_for_icmp_pps: disabled
ban_for_pps: disabled
ban_for_tcp_bandwidth: disabled
ban_for_tcp_pps: disabled
ban_for_udp_bandwidth: enabled
ban_for_udp_pps: disabled
description:
enable_ban: enabled
name: global
networks:
threshold_flows: 0
threshold_icmp_mbps: 0
threshold_icmp_pps: 0
threshold_mbps: 0
threshold_pps: 100
threshold_tcp_mbps: 0
threshold_tcp_pps: 0
threshold_udp_mbps: 5
threshold_udp_pps: 1000

 

fnm_log.txt

Share this post


Link to post
Share on other sites

@m.chupin Добрый день! Для Advanced версии лучше создать запрос в поддержку: support@fastnetmon.zendesk.com 

 

Так как Вы используете Flow Spec, то в бан может попасть любой другой трафик, вне зависимости от того, какой именно порог активировал срабатывание детектора.

 

Логика следующая:

  • Превышение порога (по любому протоколу)
  • Захват 500 пакетов по всем протоколам (вне зависимости от того, какой порог превышен)
  • Запуск анализатора
  • Выбор наиболее полно покрывающего правила на основании трафика в сэмпле

Share this post


Link to post
Share on other sites
В 16.12.2018 в 15:26, pavel.odintsov сказал:

За прошедшие два месяца мы значительно улучшили функционал хранилища трафика - https://fastnetmon.com/fastnetmon-advanced-traffic-persistency/ Теперь установка подсистемы traffic visibility намного проще. 

 

Для Community версии было добавлено целых два новых плагина, один для Juniper https://github.com/pavel-odintsov/fastnetmon/tree/master/src/juniper_plugin, другой для улучшенной интеграции с Mikrotik https://github.com/DollyTeam/Dolly-Fastnetmon 

Добрый день. Использовал ли кто плагин для Juniper? А то на гите висит как test.

Share this post


Link to post
Share on other sites

Плагин для реализации Juniper очень базовый и простой - https://github.com/pavel-odintsov/fastnetmon/blob/master/src/juniper_plugin/fastnetmon_juniper.php

 

Все это можно сделать силами BGP интеграции, которая имеется искаропки.

Share this post


Link to post
Share on other sites

Павел, есть ли у Вас планы по интеграции fastnetmon в prometheus?
Мне кажется было бы очень хорошо, если бы fastnetmon содержал в себе веб сервер, который отдавал бы статистику по url

Еще сейчас работаю над grafana loki, очень классная штука и было бы тоже хорошо, иметь возможность строить графики работы fastnetmon налету.
Посмотрите на эту реализацию: https://itnext.io/grafana-loki-the-logqls-prometheus-like-counters-aggregation-functions-and-dnsmasq-s-1e622c25c7e4

Я себе сейчас запустил связку dnsdist + grafana loki + grafana cloud agent, выглядит очень классно.

Это огромное поле для новых возможностей.
 

Share this post


Link to post
Share on other sites

Доброго дня, господа. Есть кто-то, кто возьмется настроить связку FNM на серваке Убунту 20.04 и МХ204 ? не бесплатно, естественно. Все предложения в личку.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now