Перейти к содержимому
Калькуляторы

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

Забейте пожалуйста иссю вот тут https://github.com/FastVPSEestiOu/fastnetmon/issues Сейчас доберусь до дома с ENOG9 и починю :)

Изменено пользователем pavel.odintsov

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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());

 

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

 

Баг найден и пофикшен! Теперь проблем на 32 битных платформах быть не должно! Попробуйте, пожалуйста, сейчас с кодом из Git, в релиз 1.1.2 фиксы не вошли.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В Git версии добавлена поддержка сэмплированного потока для NetFLOW v5.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Нашел все таки свою проблему, как бы неплохо было проверять наличие bash при запуске fastnetmon и если его нет в системе то ругаться в логи, незаметил сразу этот момент, сори.

 

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

notify_script_pass_details = yes

 

 

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

 

 

Сейчас активно протестил на speedtest.net, скрипт срабатывает, на 1г канале долетает до 70к ппс, при том что в настройках забито 20к, тут возможно стоит все таки реализовать формулу с burst в течении которого можно всетаки делать превышение pps.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Так это не скрипт, это бинарик в общем случае, так что как-либо проверить без запуска не получится. Спидтест можно победить растянув время расчета average: average_calculation_time = 5

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Redis сейчас оторван и не работает, он был в тулзе раньше, когда она еще и трафик считала, но со временем мне эта идея нравится перестала - потому что это совершенно отдельная задача и приделывать к монитору атак эту фичу мне расхотелось :)

Ааа.. я пропустил что-то этот месседж. т.е. теперь тока графит?

если да, то наверно надо бы и выризать эту опцию, чтобы больше никого не смущать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Редис используется - но только для сохранения деталей об атаке.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Здравствуйте, Павел.

Тестирую вашу систему. Столкнулся с проблемой - настроил sflow на коммутаторе Qtech 2850, и после команды

sflow destination 10.230.84.193 6343 

где 10.230.84.193 - адрес сервера fastnetmon

fastnetmon падает, в логах ошибка:

2015-06-11 23:07:13,023 [ERROR] Internal error!!!

 

Пример пакетов из wireshark, логи и конфиг тут: https://yadi.sk/d/JsESdayZhJG4z

Может быть я что-то неверно указал в конфиге?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Добрый день!

 

Завалился парсер sFLOW, дело не в конфиге, ошибка блин.... я даже не думал, что ее можно выбить :)

 

Просьба, сделать pcap дамп этого трафика и дать мне:

tcpdump -w /root/sflow_data.pcap -n 'udp dst port 6343'

 

Можно почтой pavel.odintsov@gmail.com

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Починено :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Flow трекинг по дефалту выключен, включается спец параметром в конфиге, попробуйте вот так:

enable_connection_tracking = on

 

А вот что с трафиком в байтах, не понятно, давайте добьемся работы визуализации flow, а следом решим проблему с мегабитами.

 

Павел, у меня аналогичная проблема:

Поставил на CentOS 7 из RPM.

Конфиг:

enable_ban = on
ban_time = 1900
ban_for_pps = on
ban_for_bandwidth = on
ban_for_flows = on
threshold_pps = 20000
threshold_mbps = 1000
threshold_flows = 3500
ban_details_records_count = 500
check_period = 1
sort_parameter = packets
redis_host = 127.0.0.1
max_ips_in_list = 7
notify_script_path = /usr/local/bin/notify_about_attack.sh
redis_enabled = no
#interfaces = eno16777728
netflow = on
netflow_port = 2055
netflow_host = 0.0.0.0
sflow = off
mirror = off
mirror_netmap = off
pcap = off
average_calculation_time = 5
average_calculation_time_for_subnets = 20
enable_connection_tracking = on
enable_pf_ring_zc_mode = off
process_incoming_traffic = on
process_outgoing_traffic = on
networks_list_path = /etc/fastnetmon.nets
enable_subnet_counters = on
print_average_traffic_counts = off

Показывает pps и flows, mbps по нулям. :(

 

P.S. Ещё обнаружил, что игнорируется параметр networks_list_path - чтобы там небыло написано всегда ищет только /etc/networks_list

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А как она будет работать, если Вы удалили все интерфейсы #interfaces = eno16777728 ? :) Укажите нужный ифейс и перезапустите тулкит.

 

networks_list_path - исправлено в Git версии: https://github.com/FastVPSEestiOu/fastnetmon/blob/master/docs/DEV_VERSION.md

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А как она будет работать, если Вы удалили все интерфейсы #interfaces = eno16777728 ? :) Укажите нужный ифейс и перезапустите тулкит.

Это я уже факультативно пробовал. Если я правильно понял вашу программу, то в случае netflow она просто слушает порт 2055 на всех интерфейсах (0.0.0.0:2055) и параметр interfaces на это не влияет. :)

Но таки раскоментировал и перезапустил - всё по прежнему, считает только pps и flows, mbps по нулям.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А, NetFlow, да ему ифейс не нужен. Трафик сэмплированный? Какой версии флоу?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

netflow v9.

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

 

upd: для проверки направил его на nfcapd - байты считает.

 

Date flow start          Duration Proto      Src IP Addr:Port          Dst IP Addr:Port   Packets    Bytes Flows
2015-06-19 16:01:48.636     0.000 UDP     69.116.224.174:27032 ->    XX.XXX.206.70:53           1       80     1
2015-06-19 16:01:48.636     0.000 TCP       83.216.94.69:57208 ->    XX.XXX.207.71:80           1       48     1
2015-06-19 16:01:48.684     0.000 UDP     121.94.103.218:22680 ->    XX.XXX.208.94:53           1       79     1
2015-06-19 16:01:48.684     0.000 UDP    115.140.206.163:46013 ->    XX.XXX.208.94:53           1       79     1
2015-06-19 16:01:48.700     0.000 UDP     91.136.113.171:9917  ->    XX.XXX.208.94:53           1       75     1
2015-06-19 16:01:48.700     0.000 UDP       86.77.240.25:39605 ->    XX.XXX.208.94:53           1       75     1
2015-06-19 16:01:48.724     0.000 UDP      105.50.181.33:34183 ->   XX.XXX.208.143:53           1       65     1
2015-06-19 16:01:48.724     0.000 TCP     88.192.240.215:24108 ->    XX.XXX.207.49:80           1       60     1
2015-06-19 16:01:48.776     0.000 UDP       17.26.99.230:33818 ->    XX.XXX.208.94:53           1       67     1
2015-06-19 16:01:48.812     0.000 UDP    124.232.142.220:49078 ->   XX.XXX.116.204:53           1       58     1
2015-06-19 16:01:48.856     0.000 UDP        71.28.34.53:44653 ->   XX.XXX.208.143:53           1       79     1
2015-06-19 16:01:48.936     0.000 UDP     128.10.143.157:36275 ->    XX.XXX.206.70:53           1       72     1
2015-06-19 16:01:48.948     0.000 TCP     88.192.240.215:24109 ->    XX.XXX.207.49:80           1       60     1
2015-06-19 16:01:48.972     0.000 TCP     198.100.145.72:80    ->   XX.XXX.116.145:65515        1       44     1
2015-06-19 16:01:43.328     5.804 TCP      14.201.190.97:53031 ->    XX.XXX.207.49:80           6      384     1
2015-06-19 16:01:58.424     0.092 TCP      164.0.124.210:37237 ->    XX.XXX.207.49:80           2      100     1

Изменено пользователем UAVpilot

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Сэмплирование в случае v9/IPFIX очень сложно выдернуть из потока, поэтому надо забить в /etc/fastnetmon.conf:

netflow_sampling_ratio = ваш_сэмплинг_ратио

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Попробовал netflow_sampling_ratio и на маршрутизаторе пробовал менять тип семплирования - пофиг.

Попробовал выключить семплирование - байтики появились

 

Однако есть сомнения по прочему трафику:

Other traffic           48982526762 pps 377315 mbps

При реальном трафике примерно на порядок меньшем (in+out). Но в данном случае это не принципиально, как-нибудь на досуге проверю.

Спасибо!

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Other Tarffic - это все кроме IPv4, но счетчики как-то крупноваты, мягко говоря. Какой дивайс генерирует флоу? Машина 64 битная?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Можете на pavel.odintsov at gmail.com скинуть дамп флоу?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Приветствую :)

 

Павел, при решении своей маленькой задачки организации реакции на DDoS я столкнулся с тем, что при использовании клиента информация по каждому IP адресу или сети выводится на основе сию секундных данных. Т.е. если я использую Netflow данные с маршрутизаторов Cisco, где минимальный timeout для активной сессии составляет 60 сек (т.е. раз в 60 секунд маршрутизатор отсылает данные об активной сессии), то в момент когда fastnetmon получает эти данные он вычисляет не "чистый" pps, т.е. количество пакетов за 1 секунду, а количество пакетов за 60 сек. Это вводит в заблуждение, т.к. в течение 59 секунд загрузка нулевая, а на 60 секунде в 60 раз больше фактической. Очевидно, что fastnetmon не может знать с какой частотой информацию о сессиях ему посылает Netflow сенсор, поэтому и ведет себя так, т.е. основываясь на сию секундных данных.

 

Для реакции ("бана") есть решение, которое позволяет усреднить и тем самым корректно обсчитывать данные:

average_calculation_time = 60
average_calculation_time_for_subnets = 65

А вот для вычислением среднего текущего сетевого трафика в клиентской части приложения, увы, такого решения я не нашел. Было бы здорово, если при выставлении параметра, отвечающего за частоту обновления отображаемой информации в клиентской части приложения, мы сразу бы получали усредненные значения (т.е. каждые 60 сек выводим данные усредненные за 60 сек):

# How often we redraw client's screen
check_period = 60

 

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

Изменено пользователем olegarhiy

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Крутой рисерч! Блеск :)

 

А у вас точно последняя версия? Просто в 1.1.2 уже везде используются усредненные графики и клиент отображает именно их, а не абсолютные значения. Они как раз должны обсчитываться корректно и не мотаться сильно (ибо они же берутся и для бана).

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Спасибо :)

Версия (branch) 1.1.2. Только что обновился, но ничего не изменилось (устанавливаю с помощью fastnetmon_install.pl на Debian Wheezy). Отмечу, что версия в клиенте отображается как "FastNetMon v1.0".

Изменено пользователем olegarhiy

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Извиняюсь, выпал на некоторе время в отпуск. :)

 

Other Tarffic - это все кроме IPv4, но счетчики как-то крупноваты, мягко говоря. Какой дивайс генерирует флоу? Машина 64 битная?

netflow генерит Cisco C7606 (nfdump считает трафик правильно). fastnetmon работает на 64-биной машине.

 

И если позволите несколько пожеланий:

1. Хотелось-бы иметь промежуточные итоги по интерфейсам в случае работы с несколькими сетевыми интерфейсами (в netflow есть id интерфейса). Это было-бы полезно при наличии нескольких каналов разной ёмкости. Например у меня скачёк входящего трафика на 1Gbit/s на некоторых считается серьёзной перегрузкой, а на других практически незаметен.

2. Возможность отключить в fastnetmon_client (fastnetmon.dat) показ входящего и исходящего трафика. Например меня совершенно не интересует исходящий трафик в fastnetmon. :)

3. Возможность задавать формат файлов в /var/log/fastnetmon_attacks, например чтобы дату поставить перед адресом для удобства сортировки. Или даже чтоб можно было делать подкаталоги по датам или по ip.

 

Последние два пункта не существенны т.к. в принцие решаются внешними средствами.

 

P.S. Спасибо за fastnetmon! :)

 

Upd: поставил 1.1.3 - Other Tarffic стал походить на правду.

Изменено пользователем UAVpilot

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Не получается собрать fastnetmon с redis на 7 centos.

#uname -a
Linux mirror.xxxxxx.xx 3.10.0-229.4.2.el7.x86_64 #1 SMP Wed May 13 10:06:09 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

#yum install hiredis-devel hiredis -y
]Package hiredis-devel-0.12.1-1.el7.x86_64 already installed and latest version
Package hiredis-0.12.1-1.el7.x86_64 already installed and latest version

Соответствующие ремарки в CMakeLists.txt сняты.

# whereis hiredis
hiredis: /usr/include/hiredis

Итог:

CMake Error at CMakeLists.txt:174 (find_package):
 By not providing "FindHiredis.cmake" in CMAKE_MODULE_PATH this project has
 asked CMake to find a package configuration file provided by "Hiredis", but
 CMake did not find one.
 Could not find a package configuration file provided by "Hiredis" with any
 of the following names:
  HiredisConfig.cmake
   hiredis-config.cmake
Add the installation prefix of "Hiredis" to CMAKE_PREFIX_PATH or set
 "Hiredis_DIR" to a directory containing one of the above files.  If
 "Hiredis" provides a separate development package or SDK, be sure it has
 been installed.
-- Configuring incomplete, errors occurred!

Что я делаю не так?

Можно ли сделать сборку RPM для 7го центоса включая полный комплект поддерживаемого функционала.

P/S - Редис нужен для отправки системой детальной информации по атаке непосредственно клиенту по его запросу.

Изменено пользователем Rolex

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Rolex, поправлено. Работаю над тем, чтобы внести Redis в стандартные фичи :) Переключитесь на с DEV ветку https://github.com/FastVPSEestiOu/fastnetmon/blob/master/docs/DEV_VERSION.md и сделайте что и раньше - раскомментируйте строчки.

 

UAVpilot, а можно дамп трафика на pavel.odintsov@gmail.com?

 

Фича 2 - уже есть:

process_incoming_traffic = on
process_outgoing_traffic = off

 

Фича 3 - скажите, какие переменные нужны и я добавлю :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

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

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.