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

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

А что за сервис по этим портам бегает?

 

Скорее всего это был торрент, который мы ошибочно приняли за атаку.

Share this post


Link to post
Share on other sites

А что за сервис по этим портам бегает?

 

Скорее всего это был торрент, который мы ошибочно приняли за атаку.

Да, похоже на торрент, но точно сказать не можем, т.к. не сделали дамп сырого трафика. (tcpdump -w)

Share this post


Link to post
Share on other sites

Павел, подскажите пожалуйста: когда fastnetmon выполняет скрипт уведомления, то происходит ли блокировка до завершения работы скрипта, или он выполняется в новом треде?

 

Павел, подскажите пожалуйста: когда fastnetmon выполняет скрипт уведомления, то происходит ли блокировка до завершения работы скрипта, или он выполняется в новом треде?

Отбой. :) Нашёл сам:

       // We should execute external script in separate thread because any lag in this code will be very distructive
       boost::thread exec_thread(exec_with_stdin_params, script_call_params, full_attack_description);
       exec_thread.detach();

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Баг по sFLOW забил: https://github.com/FastVPSEestiOu/fastnetmon/issues/168 но, признаться, не обещаю скорого фикса. У меня стенд "одноногий" (Экстримы в моей прошивке не умеют зеркалить оба направления, лишь входящий) и надо бы pcap дамп.

Share this post


Link to post
Share on other sites

Взять минимальный mtu в сети, это 1496, то для 100 000 килобит (100 мегабит) деленных на 1.5 килобита, то выйдет около 65000 пакетов чтобы забить весь канал.

Павел, в расчетах ошибся, 1496 байт - это 11968 бит. Соотв-но на MTU 1496 байт чтобы получить 100Мбит/c достаточно будет и 7000 пакетов.

В разных DDOS атаках размер пакетов разный, поэтому определять атаки только по числу пакетов очень сложно. Например атаки с NTP серверов идут с размером пакета в районе 400 байт.

Share this post


Link to post
Share on other sites

Мда, Павел правда ошибся в расчетах и смело приравнял мегабиты к мегабайтам и так и посчитал =) Спасибо!

Share this post


Link to post
Share on other sites

Здравствуйте!

Поставил fastnetmon на прием netflow.

Все работает пока в конфиге не поставиш enable_ban = on. При запуске падает в кору.

Вот анализ core:

 

Program terminated with signal 11, Segmentation fault.

#0 0xb735b3b7 in vfprintf () from /lib/i386-linux-gnu/i686/cmov/libc.so.6

(gdb) bt

#0 0xb735b3b7 in vfprintf () from /lib/i386-linux-gnu/i686/cmov/libc.so.6

#1 0xb737ed80 in vsnprintf () from /lib/i386-linux-gnu/i686/cmov/libc.so.6

#2 0xb766eef2 in log4cpp::StringUtil::vform(char const*, char*) () from /usr/lib/liblog4cpp.so.5

#3 0xb766043b in log4cpp::Category::_logUnconditionally(int, char const*, char*) () from /usr/lib/liblog4cpp.so.5

#4 0xb765fa1f in log4cpp::Category::info(char const*, ...) () from /usr/lib/liblog4cpp.so.5

#5 0x08070a4a in execute_ip_ban(unsigned int, map_element, map_element, std::string) ()

#6 0x080777df in recalculate_speed() ()

#7 0x08078777 in recalculate_speed_thread_handler() ()

#8 0xb77b542c in ?? () from /usr/lib/libboost_thread.so.1.49.0

#9 0xb7795c39 in start_thread () from /lib/i386-linux-gnu/i686/cmov/libpthread.so.0

#10 0xb73f0c6e in clone () from /lib/i386-linux-gnu/i686/cmov/libc.so.6

 

Компилил стандарным скриптом. Не подскажите в чем может быть проблема?

Share this post


Link to post
Share on other sites

Ну видимо в том, что execute_ip_ban() пытается логировать данные, которых нет, где-то разыменовуется нулевой указатель. Нужно больше информации для дэбага, может с -g или -g3 пересобрать.

Share this post


Link to post
Share on other sites

собрал з дебагом

gdb выдает:

#3 0xb764343b in log4cpp::Category::_logUnconditionally(int, char const*, char*) () from /usr/lib/liblog4cpp.so.5

#4 0xb7642a1f in log4cpp::Category::info(char const*, ...) () from /usr/lib/liblog4cpp.so.5

#5 0x080716db in execute_ip_ban (client_ip=client_ip@entry=3030414768, speed_element=..., average_speed_element=...,

flow_attack_details=<error reading variable: Cannot access memory at address 0x0>) at /usr/src/fastnetmon/src/fastnetmon.cpp:1860

#6 0x08079be4 in recalculate_speed () at /usr/src/fastnetmon/src/fastnetmon.cpp:1379

 

особо не вникал

в fastnetmon.cpp:1860 убрал вообще

logger.info("We run execute_ip_ban code with following params in_pps: %d out_pps: %d in_bps: %d out_bps: %d and we decide it's %s attack",

in_pps, out_pps, in_bps, out_bps, data_direction_as_string.c_str());

 

пока что работает нормально

Share this post


Link to post
Share on other sites

Здравствуйте!

Поставил fastnetmon на прием netflow.

Все работает пока в конфиге не поставиш enable_ban = on. При запуске падает в кору.

Вот анализ core:

 

Program terminated with signal 11, Segmentation fault.

#0 0xb735b3b7 in vfprintf () from /lib/i386-linux-gnu/i686/cmov/libc.so.6

(gdb) bt

#0 0xb735b3b7 in vfprintf () from /lib/i386-linux-gnu/i686/cmov/libc.so.6

#1 0xb737ed80 in vsnprintf () from /lib/i386-linux-gnu/i686/cmov/libc.so.6

#2 0xb766eef2 in log4cpp::StringUtil::vform(char const*, char*) () from /usr/lib/liblog4cpp.so.5

#3 0xb766043b in log4cpp::Category::_logUnconditionally(int, char const*, char*) () from /usr/lib/liblog4cpp.so.5

#4 0xb765fa1f in log4cpp::Category::info(char const*, ...) () from /usr/lib/liblog4cpp.so.5

#5 0x08070a4a in execute_ip_ban(unsigned int, map_element, map_element, std::string) ()

#6 0x080777df in recalculate_speed() ()

#7 0x08078777 in recalculate_speed_thread_handler() ()

#8 0xb77b542c in ?? () from /usr/lib/libboost_thread.so.1.49.0

#9 0xb7795c39 in start_thread () from /lib/i386-linux-gnu/i686/cmov/libpthread.so.0

#10 0xb73f0c6e in clone () from /lib/i386-linux-gnu/i686/cmov/libc.so.6

 

Компилил стандарным скриптом. Не подскажите в чем может быть проблема?

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

 

насколько я помню скрипт бана должен забирать данные с stdin иначе fastnetmon валится в корку.

Share this post


Link to post
Share on other sites

Всем привет! Вернулся с отпуска.

 

Lynx10, кардинально можно решить вырубив трекинг соединений: enable_connection_tracking = off. А можно мне бинарик и корку на почту pavel.odintsov@gmail.com ? Поидее, там везде передаются std::string, а они пустые ну никак не должны быть.

Share this post


Link to post
Share on other sites

Добавил возможность сохранения инфы об атаках в Redis! :) Кому интересно быть в курсе новостей, подписываемся на группу: https://groups.google.com/forum/#!forum/fastnetmon почти все пишу там сразу.

Share this post


Link to post
Share on other sites

ну вот потребовалось вновь собрать на чистой машине

FreeBSD 9.3-RELEASE-p13 amd64

boost-all-1.55.0

boost-jam-1.55.0

boost-libs-1.55.0_4

libpcap-1.7.2

libpthread-stubs-0.3_6

log4cpp-1.1_1

 

а в ответ:

Scanning dependencies of target example_plugin

[ 9%] Building CXX object CMakeFiles/example_plugin.dir/example_plugin/example_collector.cpp.o

Linking CXX static library libexample_plugin.a

[ 9%] Built target example_plugin

Scanning dependencies of target fast_library

[ 18%] Building CXX object CMakeFiles/fast_library.dir/fast_library.cpp.o

/usr/distr/fastnetmon/src/fast_library.cpp: In function 'uint64_t fast_ntoh(uint64_t)':

/usr/distr/fastnetmon/src/fast_library.cpp:37: error: 'be64toh' was not declared in this scope

/usr/distr/fastnetmon/src/fast_library.cpp: In function 'uint64_t fast_hton(uint64_t)':

/usr/distr/fastnetmon/src/fast_library.cpp:51: error: 'htobe64' was not declared in this scope

*** [CMakeFiles/fast_library.dir/fast_library.cpp.o] Error code 1

 

Stop in /usr/distr/fastnetmon/src/build.

*** [CMakeFiles/fast_library.dir/all] Error code 1

 

и через нативный порт в том же месте:

[ 45%] Building CXX object CMakeFiles/ipfix_rfc.dir/ipfix_rfc.cpp.o

/usr/distr/fastnetmon/src/FreeBSD_port/work/fastnetmon-master/src/fast_library.cpp: In function 'uint64_t fast_ntoh(uint64_t)':

/usr/distr/fastnetmon/src/FreeBSD_port/work/fastnetmon-master/src/fast_library.cpp:37: error: 'be64toh' was not declared in this scope

/usr/distr/fastnetmon/src/FreeBSD_port/work/fastnetmon-master/src/fast_library.cpp: In function 'uint64_t fast_hton(uint64_t)':

/usr/distr/fastnetmon/src/FreeBSD_port/work/fastnetmon-master/src/fast_library.cpp:51: error: 'htobe64' was not declared in this scope

*** [CMakeFiles/fast_library.dir/fast_library.cpp.o] Error code 1

1 error

*** [CMakeFiles/fast_library.dir/all] Error code 2

Linking CXX static library libipfix_rfc.a

[ 45%] Built target ipfix_rfc

1 error

*** [all] Error code 2

1 error

===> Compilation failed unexpectedly.

Try to set MAKE_JOBS_UNSAFE=yes and rebuild before reporting the failure to

the maintainer.

*** [do-build] Error code 1

 

доставил gcc, прогресс дало, но не надолго, хотя ядро с поддержкой netmap-а уже собрано.

Scanning dependencies of target netmap_plugin

[ 81%] Building CXX object CMakeFiles/netmap_plugin.dir/netmap_plugin/netmap_collector.cpp.o

/usr/distr/fastnetmon/src/FreeBSD_port/work/fastnetmon-master/src/fast_library.cpp: In function 'uint64_t fast_ntoh(uint64_t)':

/usr/distr/fastnetmon/src/FreeBSD_port/work/fastnetmon-master/src/fast_library.cpp:37: error: 'be64toh' was not declared in this scope

/usr/distr/fastnetmon/src/FreeBSD_port/work/fastnetmon-master/src/fast_library.cpp: In function 'uint64_t fast_hton(uint64_t)':

/usr/distr/fastnetmon/src/FreeBSD_port/work/fastnetmon-master/src/fast_library.cpp:51: error: 'htobe64' was not declared in this scope

*** [CMakeFiles/fast_library.dir/fast_library.cpp.o] Error code 1

Edited by varney

Share this post


Link to post
Share on other sites

Да такая же ошибка при компиляции.

 

/usr/home/work/fastnetmon/src/FreeBSD_port/work/fastnetmon-master/src/fast_library.cpp: In function 'uint64_t fast_ntoh(uint64_t)':
/usr/home/work/fastnetmon/src/FreeBSD_port/work/fastnetmon-master/src/fast_library.cpp:37: error: 'be64toh' was not declared in this scope
/usr/home/work/fastnetmon/src/FreeBSD_port/work/fastnetmon-master/src/fast_library.cpp: In function 'uint64_t fast_hton(uint64_t)':
/usr/home/work/fastnetmon/src/FreeBSD_port/work/fastnetmon-master/src/fast_library.cpp:51: error: 'htobe64' was not declared in this scope
*** [CMakeFiles/fast_library.dir/fast_library.cpp.o] Error code 1
1 error
*** [CMakeFiles/fast_library.dir/all] Error code 2
Linking CXX static library libsflow_plugin.a
[ 81%] Built target sflow_plugin
Linking CXX static library libnetmap_plugin.a
[ 81%] Built target netmap_plugin
Linking CXX static library libipfix_rfc.a
[ 81%] Built target ipfix_rfc
1 error
*** [all] Error code 2
1 error
===> Compilation failed unexpectedly.
Try to set MAKE_JOBS_UNSAFE=yes and rebuild before reporting the failure to
the maintainer.
*** [do-build] Error code 1

 

FreeBSD FreeBSD 9.3-STABLE #0 r268628: Tue Jul 15 00:43:08 MSK 2014 amd64

Edited by polmax

Share this post


Link to post
Share on other sites

polmax, varney, вытягивайте новую версию - скорее всего не хватало #include <sys/endian.h>, где и объявлены функции be64toh и htobe64 :) На FreeBSD 11 оно пробрасывается сразу, а вот на старых нужно явно указать.

Share this post


Link to post
Share on other sites

У меня так получается

2015-04-23 16:30:41,929 [iNFO] We haven't template for flowset_id: 257 but it's not an error if this message go away in 5-10 seconds. We need some time to learn it!
2015-04-23 16:30:42,933 [iNFO] We haven't template for flowset_id: 257 but it's not an error if this message go away in 5-10 seconds. We need some time to learn it!
2015-04-23 16:30:43,936 [iNFO] We haven't template for flowset_id: 257 but it's not an error if this message go away in 5-10 seconds. We need some time to learn it!
2015-04-23 16:30:44,936 [iNFO] We haven't template for flowset_id: 257 but it's not an error if this message go away in 5-10 seconds. We need some time to learn it!
2015-04-23 16:30:45,937 [iNFO] We haven't template for flowset_id: 257 but it's not an error if this message go away in 5-10 seconds. We need some time to learn it!
2015-04-23 16:30:45,937 [iNFO] We haven't template for flowset_id: 257 but it's not an error if this message go away in 5-10 seconds. We need some time to learn it!
2015-04-23 16:30:46,937 [iNFO] We haven't template for flowset_id: 257 but it's not an error if this message go away in 5-10 seconds. We need some time to learn it!
2015-04-23 16:30:47,937 [iNFO] We haven't template for flowset_id: 257 but it's not an error if this message go away in 5-10 seconds. We need some time to learn it!
2015-04-23 16:30:47,937 [iNFO] I received netflow v9 options flowset id but I haven't support for it
2015-04-23 16:30:47,937 [iNFO] We haven't template for flowset_id: 256 but it's not an error if this message go away in 5-10 seconds. We need some time to learn it!
2015-04-23 16:31:48,075 [iNFO] I received netflow v9 options flowset id but I haven't support for it
2015-04-23 16:31:48,075 [iNFO] We haven't template for flowset_id: 256 but it's not an error if this message go away in 5-10 seconds. We need some time to learn it!
2015-04-23 16:32:49,330 [iNFO] I received netflow v9 options flowset id but I haven't support for it
2015-04-23 16:32:49,330 [iNFO] We haven't template for flowset_id: 256 but it's not an error if this message go away in 5-10 seconds. We need some time to learn it!
2015-04-23 16:33:48,471 [iNFO] I received netflow v9 options flowset id but I haven't support for it
2015-04-23 16:33:48,471 [iNFO] We haven't template for flowset_id: 256 but it's not an error if this message go away in 5-10 seconds. We need some time to learn it!
2015-04-23 16:34:49,612 [iNFO] I received netflow v9 options flowset id but I haven't support for it
2015-04-23 16:34:49,612 [iNFO] We haven't template for flowset_id: 256 but it's not an error if this message go away in 5-10 seconds. We need some time to learn it!
2015-04-23 16:35:48,754 [iNFO] I received netflow v9 options flowset id but I haven't support for it
2015-04-23 16:35:48,755 [iNFO] We haven't template for flowset_id: 256 but it's not an error if this message go away in 5-10 seconds. We need some time to learn it!
2015-04-23 16:36:48,968 [iNFO] I received netflow v9 options flowset id but I haven't support for it
2015-04-23 16:36:48,968 [iNFO] We haven't template for flowset_id: 256 but it's not an error if this message go away in 5-10 seconds. We need some time to learn it!
2015-04-23 16:37:49,085 [iNFO] I received netflow v9 options flowset id but I haven't support for it
2015-04-23 16:37:49,085 [iNFO] We haven't template for flowset_id: 256 but it's not an error if this message go away in 5-10 seconds. We need some time to learn it!
2015-04-23 16:38:49,205 [iNFO] I received netflow v9 options flowset id but I haven't support for it
2015-04-23 16:38:49,206 [iNFO] We haven't template for flowset_id: 256 but it's not an error if this message go away in 5-10 seconds. We need some time to learn it!
2015-04-23 16:39:49,450 [iNFO] I received netflow v9 options flowset id but I haven't support for it
2015-04-23 16:39:49,450 [iNFO] We haven't template for flowset_id: 256 but it's not an error if this message go away in 5-10 seconds. We need some time to learn it!
2015-04-23 16:40:49,589 [iNFO] I received netflow v9 options flowset id but I haven't support for it
2015-04-23 16:40:49,589 [iNFO] We haven't template for flowset_id: 256 but it's not an error if this message go away in 5-10 seconds. We need some time to learn it!
2015-04-23 16:41:49,761 [iNFO] I received netflow v9 options flowset id but I haven't support for it
2015-04-23 16:41:49,761 [iNFO] We haven't template for flowset_id: 256 but it's not an error if this message go away in 5-10 seconds. We need some time to learn it!
2015-04-23 16:42:49,715 [iNFO] I received netflow v9 options flowset id but I haven't support for it
2015-04-23 16:42:49,715 [iNFO] We haven't template for flowset_id: 256 but it's not an error if this message go away in 5-10 seconds. We need some time to learn it!
2015-04-23 16:43:49,847 [iNFO] I received netflow v9 options flowset id but I haven't support for it
2015-04-23 16:43:49,847 [iNFO] We haven't template for flowset_id: 256 but it's not an error if this message go away in 5-10 seconds. We need some time to learn it!

Share this post


Link to post
Share on other sites

polmax, varney, вытягивайте новую версию - скорее всего не хватало #include <sys/endian.h>, где и объявлены функции be64toh и htobe64 :) На FreeBSD 11 оно пробрасывается сразу, а вот на старых нужно явно указать.

спасибо. из сорцов все успешно, нативка осталась с той же ошибкой.

Share this post


Link to post
Share on other sites

Отлично! Нативка - вы про порт https://github.com/FastVPSEestiOu/fastnetmon/blob/master/src/FreeBSD_port/Makefile ? Там поидее стягивается последний снимок репо, поидее оно тоже должно ОК работать.

Share this post


Link to post
Share on other sites

Отлично! Нативка - вы про порт, поидее оно тоже должно ОК работать.

про него самого. не собирается.

Share this post


Link to post
Share on other sites

Хм, странно, а вычищали порт из кэша?

 

А между тем, FastNetMon получил полную поддержку протокола BGP и умеет пирится с роутерами по протоколу BGP - теперь никаких костылей для реализации блокировки! :)

 

Инструкция тут: https://github.com/FastVPSEestiOu/fastnetmon/blob/master/docs/EXABGP_INTEGRATION.md

Share this post


Link to post
Share on other sites

Добавьте пожалуйста перед

set(LOG4CPP_LIBRARY_PATH log4cpp)

 

проверку, что библиотека установлена.

Share this post


Link to post
Share on other sites

Добавьте пожалуйста перед

set(LOG4CPP_LIBRARY_PATH log4cpp)

 

проверку, что библиотека установлена.

 

А на какой ос бага воспроизвелась или просто руками собирали?

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