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

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

Да, фича делалась именно для такого случая :) Чудесная замена yes на on везде решит вашу проблему :)

И вправду решило) Запутался в on/off, yes/no

Share this post


Link to post
Share on other sites

Я эту "фичу" исправлю, честно-честно :( Я уже и не помню, что мне в голову ударило сделать on и no вместо хотя бы on/off no/yes... :)

Share this post


Link to post
Share on other sites

Я эту "фичу" исправлю, честно-честно :( Я уже и не помню, что мне в голову ударило сделать on и no вместо хотя бы on/off no/yes... :)

Павел вам нужно поработать над документацией. Потому что даже в вашем гите не сказано где лежит тот же самый конфиг. Я конечно понимаю что программа предназначена для узкого круга специалистов, но тем не менее это болезнь всех Русских программистов, что у вас документация с примерами отсутствует что в соседней теме theNOC project тоже документация и примеры отсутствуют. Хотя оба продукта очень интересные и аналогов у них нету.

Share this post


Link to post
Share on other sites

Отличные новости! Начинаем бета-тестирование бинарных сборок под все ключевые платформы: https://github.com/FastVPSEestiOu/fastnetmon/blob/master/docs/PACKAGES_INSTALL.md !!! Фидбэк велкам :)

Share this post


Link to post
Share on other sites

Я эту "фичу" исправлю, честно-честно :( Я уже и не помню, что мне в голову ударило сделать on и no вместо хотя бы on/off no/yes... :)

Павел вам нужно поработать над документацией. Потому что даже в вашем гите не сказано где лежит тот же самый конфиг. Я конечно понимаю что программа предназначена для узкого круга специалистов, но тем не менее это болезнь всех Русских программистов, что у вас документация с примерами отсутствует что в соседней теме theNOC project тоже документация и примеры отсутствуют. Хотя оба продукта очень интересные и аналогов у них нету.

 

Рекомендую подписаться на рассылку https://groups.google.com/forum/#!forum/fastnetmon и почитать архивы + подписаться на IRC. Функции новые и добавляются буквально каждую неделю и описываются именно там, обычно документация еще никуда не дублируется.

Share this post


Link to post
Share on other sites

Установлена dev версия из git.

Linux debian8 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt11-1+deb8u3 (2015-08-04) x86_64 GNU/Linux

 

В выводе клиента выводится статистика всегда для [max_ips_in_list + 1] IP адресов.

 

Куда посмотреть?

/etc/fastnetmon.conf

...

# Netmap traffic capture (very fast but need patched drivers)

mirror_netmap = on

 

# Port mirroring could be sampled

netmap_sampling_ratio = 1

...

###

### Client configuration

###

 

# Field used for sorting in client, could be: packets, bytes or flows

sort_parameter = packets

# How much IP's we will list for incoming and outgoing channel eaters

max_ips_in_list = 10

 

==========================================================

 

FastNetMon 1.1.3 master FastVPS Eesti OU © VPS and dedicated: http://FastVPS.host

IPs ordered by: packets

Incoming traffic 685494 pps 5665 mbps 0 flows

xxx.xxx.99.70 17325 pps 166 mbps 0 flows

xxx.xxx.99.93 17071 pps 157 mbps 0 flows

xxx.xxx.99.153 16270 pps 159 mbps 0 flows

xxx.xxx.99.66 15595 pps 164 mbps 0 flows

xxx.xxx.99.77 14381 pps 147 mbps 0 flows

xxx.xxx.99.103 14308 pps 148 mbps 0 flows

xxx.xxx.99.35 14228 pps 129 mbps 0 flows

xxx.xxx.99.131 13611 pps 116 mbps 0 flows

xxx.xxx.99.114 13539 pps 103 mbps 0 flows

xxx.xxx.99.140 12653 pps 131 mbps 0 flows

xxx.xxx.65.11 0 pps 0 mbps 0 flows

 

Outgoing traffic 481688 pps 1979 mbps 0 flows

xxx.xxx.99.70 12689 pps 35 mbps 0 flows

xxx.xxx.99.114 10749 pps 48 mbps 0 flows

xxx.xxx.99.71 9813 pps 45 mbps 0 flows

xxx.xxx.99.35 9773 pps 35 mbps 0 flows

xxx.xxx.99.131 9673 pps 34 mbps 0 flows

xxx.xxx.99.66 9317 pps 17 mbps 0 flows

xxx.xxx.99.28 9019 pps 73 mbps 0 flows

xxx.xxx.99.50 8926 pps 41 mbps 0 flows

xxx.xxx.99.81 8565 pps 48 mbps 0 flows

xxx.xxx.99.153 8216 pps 12 mbps 0 flows

xxx.xxx.65.11 0 pps 0 mbps 0 flows

 

Internal traffic 10 pps 0 mbps

 

Other traffic 14 pps 0 mbps

 

Screen updated in: 0 sec 987 microseconds

Traffic calculated in: 0 sec 2580 microseconds

Total amount of IPv6 packets related to our own network: 0

Total amount of not processed packets: 4488318

Edited by shaytan

Share this post


Link to post
Share on other sites

Установлена dev версия из git.

Linux debian8 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt11-1+deb8u3 (2015-08-04) x86_64 GNU/Linux

 

В выводе клиента выводится статистика всегда для [max_ips_in_list + 1] IP адресов.

 

Куда посмотреть?

/etc/fastnetmon.conf

...

# Netmap traffic capture (very fast but need patched drivers)

mirror_netmap = on

 

# Port mirroring could be sampled

netmap_sampling_ratio = 1

...

###

### Client configuration

###

 

# Field used for sorting in client, could be: packets, bytes or flows

sort_parameter = packets

# How much IP's we will list for incoming and outgoing channel eaters

max_ips_in_list = 10

 

==========================================================

 

FastNetMon 1.1.3 master FastVPS Eesti OU © VPS and dedicated: http://FastVPS.host

IPs ordered by: packets

Incoming traffic 685494 pps 5665 mbps 0 flows

xxx.xxx.99.70 17325 pps 166 mbps 0 flows

xxx.xxx.99.93 17071 pps 157 mbps 0 flows

xxx.xxx.99.153 16270 pps 159 mbps 0 flows

xxx.xxx.99.66 15595 pps 164 mbps 0 flows

xxx.xxx.99.77 14381 pps 147 mbps 0 flows

xxx.xxx.99.103 14308 pps 148 mbps 0 flows

xxx.xxx.99.35 14228 pps 129 mbps 0 flows

xxx.xxx.99.131 13611 pps 116 mbps 0 flows

xxx.xxx.99.114 13539 pps 103 mbps 0 flows

xxx.xxx.99.140 12653 pps 131 mbps 0 flows

xxx.xxx.65.11 0 pps 0 mbps 0 flows

 

Outgoing traffic 481688 pps 1979 mbps 0 flows

xxx.xxx.99.70 12689 pps 35 mbps 0 flows

xxx.xxx.99.114 10749 pps 48 mbps 0 flows

xxx.xxx.99.71 9813 pps 45 mbps 0 flows

xxx.xxx.99.35 9773 pps 35 mbps 0 flows

xxx.xxx.99.131 9673 pps 34 mbps 0 flows

xxx.xxx.99.66 9317 pps 17 mbps 0 flows

xxx.xxx.99.28 9019 pps 73 mbps 0 flows

xxx.xxx.99.50 8926 pps 41 mbps 0 flows

xxx.xxx.99.81 8565 pps 48 mbps 0 flows

xxx.xxx.99.153 8216 pps 12 mbps 0 flows

xxx.xxx.65.11 0 pps 0 mbps 0 flows

 

Internal traffic 10 pps 0 mbps

 

Other traffic 14 pps 0 mbps

 

Screen updated in: 0 sec 987 microseconds

Traffic calculated in: 0 sec 2580 microseconds

Total amount of IPv6 packets related to our own network: 0

Total amount of not processed packets: 4488318

xxx.xxx.65.11

Это случайно не локальный IP?

Share this post


Link to post
Share on other sites

xxx.xxx.65.11

Это случайно не локальный IP?

Нет, и в конфете отключено:

# With this option enabled we could add local IP addresses and aliases to monitoring list

# Works only for Linux

monitor_local_ip_addresses = no

Share this post


Link to post
Share on other sites

shaytan, а можете наложить патчик на fastnetmon.cpp вот такой:

 

-element_number > max_ips_in_list
+element_number >= max_ips_in_list

 

И после этого пересобрать? Должно помочь.

Share this post


Link to post
Share on other sites

shaytan, а можете наложить патчик на fastnetmon.cpp вот такой:

 

-element_number > max_ips_in_list
+element_number >= max_ips_in_list

 

И после этого пересобрать? Должно помочь.

 

Да, помогло.

 

Еще вопрос, о чем говорит постоянное увеличение значения счетчика в выводе fastnetmon_client?

Total amount of not processed packets: 4796354

Edited by shaytan

Share this post


Link to post
Share on other sites

Спасибо за тест, исправил в основной версии.

 

Означает, что это либо IPv6 трафик либо ARP либо еще что-то в чем нет понятия IP адреса.

Share this post


Link to post
Share on other sites

Спасибо за тест, исправил в основной версии.

 

Означает, что это либо IPv6 трафик либо ARP либо еще что-то в чем нет понятия IP адреса.

 

200000pps? Не может быть.

Еще заметил что FNM не весь трафик мониторит. По Outgoing traffic все правильно показывает, а по Incoming traffic примерно 20% не показывает. Это при условии что мониторится порт между Cisco и JuniperMX, А если снимать трафик между Cisco и Cisco то все точно показывает.

 

Как проверить что FNM не может разобрать?

 

PS. Сейчас с аплинками используем BGP FlowSpec в ручном режиме, как добьемся правильных значений трафика в FNM, хотим поднять BGP FS с FSN для автоматической блокировки.

Edited by shaytan

Share this post


Link to post
Share on other sites

Это не pps, это суммарное число пакетов с момента запуска.

 

А трафик чистый или vlan/qnq/mpls между циской и джуном летает? А режим захвата какой - PF_RING / netmap / sflow / netflow?

 

Какие у Вас крутые аплинки - я такое еще не встречал, чтобы все умели :)

 

Чтобы эффективно юзать флоу спек с оператором, нужна одна полезняшка от оператора. И если Вы ее начнете просить заранее - это сильно упростит интеграцию. Так как число правил Flow Spec дают жестко лимитированое, то со стороны оператора нужно выпросить SNMP или иной механизм, чтобы видеть динамику работы правил флоу спека. То есть, нужно фиксировать, какие правила отбивают трафик, а какие уже бесполезны и их нужно снимать.

Share this post


Link to post
Share on other sites

Павел подскажите, как происходит определение атак типа amplification и как fastnetmon об этом уведомляет?

Как определяется атака по pps, если на программу сливается sFlow и конфиг выглядит примерно так

Global default sampling rate: 32768

Global default counter polling interval: 86400

Edited by FATHER_FBI

Share this post


Link to post
Share on other sites

У sFLOW слишком большой sampling rate. Разумные цифры обеспечивающие точный обсчет можно найти вот тут, например: http://blog.sflow.com/2009/06/sampling-rates.html

 

Global default counter polling interval: 86400 - вот это не интересует вовсе, так как нагрузку по ифейсам мы не собираем сейчас в принципе.

 

Если включен режим DPI, то в логе при успешном обнаружении атаки будет описан flow spec анонс, который был бы выброшен в данном случае. Определение амплификаций идет по внутренностям пакетов.

 

Логика описана вот здесь: https://github.com/FastVPSEestiOu/fastnetmon/blob/master/src/fastnetmon.cpp#L3313 Она довольно слабая, нужно дообучение на реальных атаках. Если они есть - всегда с радостью приму шаблоны новых атак.

Share this post


Link to post
Share on other sites

Это не pps, это суммарное число пакетов с момента запуска.

 

А трафик чистый или vlan/qnq/mpls между циской и джуном летает? А режим захвата какой - PF_RING / netmap / sflow / netflow?

 

Какие у Вас крутые аплинки - я такое еще не встречал, чтобы все умели :)

 

Чтобы эффективно юзать флоу спек с оператором, нужна одна полезняшка от оператора. И если Вы ее начнете просить заранее - это сильно упростит интеграцию. Так как число правил Flow Spec дают жестко лимитированое, то со стороны оператора нужно выпросить SNMP или иной механизм, чтобы видеть динамику работы правил флоу спека. То есть, нужно фиксировать, какие правила отбивают трафик, а какие уже бесполезны и их нужно снимать.

 

Павел, я в pps указал скорость увеличения этого счетчика.

Режим захвата netmap, трафик dot1q.

Думаю может перейти на jflow с JuniperMX, т.к. статистику надо собирать с двух бордеров, которые еще установленны на двух разных площадках.

Share this post


Link to post
Share on other sites

У sFLOW слишком большой sampling rate. Разумные цифры обеспечивающие точный обсчет можно найти вот тут, например: http://blog.sflow.com/2009/06/sampling-rates.html

 

Global default counter polling interval: 86400 - вот это не интересует вовсе, так как нагрузку по ифейсам мы не собираем сейчас в принципе.

 

Если включен режим DPI, то в логе при успешном обнаружении атаки будет описан flow spec анонс, который был бы выброшен в данном случае. Определение амплификаций идет по внутренностям пакетов.

 

Логика описана вот здесь: https://github.com/FastVPSEestiOu/fastnetmon/blob/master/src/fastnetmon.cpp#L3313 Она довольно слабая, нужно дообучение на реальных атаках. Если они есть - всегда с радостью приму шаблоны новых атак.

Какая будет примерная прогрешность если sample ratio: 8192?

Просто хочется понять как вообще происходит подсчет pps, тупо вычисляет количество пришедших пакетов и получает цифру pps или пытается кореллировать эту цифру с sample ratio?

И как вычисляется mbps?

Потому что если на 10G поставить sample ratio 2048, мне кажется ни одна железка не справится, она умрет или сгорит:-)

Просто хочется понять какая погрешность при sFlow, потому что когда трафика много, нечем принять mirror.

Share this post


Link to post
Share on other sites

Дык проще включить экспорт графика в Grahite из FNM и с самого свича по SNMP и сравнить :) Логика простая - sampling ration выдирается из потока и на него умножается число пакетов/байт полученное с/на конкретный хост за секунду. Но в sFLOW режиме стоит понимать, что никакого DPI или Flow Spec ожидать не стоит, внутренностей пакета, которые можно детально проанализировать в этом случае не хватает. Далеко не всегда можно разобраться что за протокол по куску хидера.

 

По поводу сэмплинга и смерти свича - честно говоря, я такое не проверял, по-хорошему, конечно поставить генератор на line rate (тот же Moongen) и посмотреть, как будет вести себя свич.

Share this post


Link to post
Share on other sites

Если тут остались те, что до сих пор боится поставить софт, то специально для Вас с наводки FATHER_FBI написал ПОЛНЫЙ гайд по проекту: https://github.com/FastVPSEestiOu/fastnetmon/raw/master/docs/FastNetMon_Reference_Russian.pdf :)

Share this post


Link to post
Share on other sites

Ога, именно так.

 

Тогда надо разбирать где FNM теряет трафик.

На порт сейчас отправляется 10G/1.5Mpps, а FNM суммарно показывает:

Incoming traffic 645931 pps 5040 mbps 0 flows

Outgoing traffic 482239 pps 2032 mbps 0 flows

 

При этом 8 ядер равномерно загружены всего на 10-11%

Share this post


Link to post
Share on other sites

а там все интересно, "Total amount of not processed packets: 61096601" и растет на скорости 200kpps.

 

Как фикс предложил включить отладку для случая Netmap:

 

Приведу пример с netmap:

в файле src/netmap_plugin/netmap_collector.cpp

 

 

Нужно изменить вот этот кусок кода:

   if (packet_header.extended_hdr.parsed_pkt.ip_version != 4 && packet_header.extended_hdr.parsed_pkt.ip_version != 6) {
       return false;
   }

 

На:

 

  if (packet_header.extended_hdr.parsed_pkt.ip_version != 4 && packet_header.extended_hdr.parsed_pkt.ip_version != 6) {
       char print_buffer[512];
       fastnetmon_print_parsed_pkt(print_buffer, 512, (u_char*)buffer, &packet_header);
       logger.info("%s", print_buffer);

       return false;
   }

 

 

После этого он отпечатает в лог /var/log/fastnetmon.log содержимое пакетов. И станет понятно, почему так происходит.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.