URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 96446
[ Назад ]

Исходное сообщение
"FastNetMon 1.0.0 - программа для выявления входящих/исходящи..."

Отправлено opennews , 23-Июн-14 10:10 
Доступен релиз программы FastNetMon 1.0.0 (https://github.com/FastVPSEestiOu/fastnetmon), предназначенной для выявления входящих и исходящих DDoS-атак на основе анализа транзитного трафика. Программа разработана для фиксации серьезных всплесков интенсивности отправки пакетов (сотни тысяч пакетов в секунду), как со стороны клиентов, так и со стороны внешней сети в сторону клиентов. Данные о трафике могут собираться через PF_RING (рекомендуется), PCAP (не рекомендуется) и ULOG2 (не рекомендуется).

На выходе программа выдаёт список 10 самых активных потребителей ресурсов сети. Выборки "топ 10" можно делать как по числу пакетов в секунду так и по трафику. Поддерживается  передача управления внешнему скрипту, который сможет предпринять блокировку IP на/с которого идет атка или уведомить об атаке группу администраторов. FastNetMon умеет считать трафик по заданным диапазонам. Для хранения статистики используется БД Redis.

В настоящее время приложение уже опробовано в промышленном применении (на миррор портах, с отдельной машины) с нагрузкой в несколько гигабит входящего+исходящего трафика (в среднем примерно 550kpps и более). Потребление ресурсов CPU в такой конфигурации составляет около 10% по всем ядрам на сервере с CPU  Intel i7 2600 и Intel X540 NIC. Программа написана на языке C++11 и проверена в работе на платформах Debian, CentOS и Ubuntu. Из-за использования C++11 для сборки требуется свежий инструментарий C++ (можно собрать в Debian 7, но g++ из CentOS 6 не подходит для сборки).
<center><a href="https://raw.githubusercontent.com/FastVPSEestiOu/fastnetmon/... src="http://www.opennet.me/opennews/pics_base/0_1403502373.png" style="border-style: solid; border-color: #e9ead6; border-width: 15px;max-width:100%;" title="" border=0></a></center>

URL: https://github.com/FastVPSEestiOu/fastnetmon
Новость: http://www.opennet.me/opennews/art.shtml?num=40058


Содержание

Сообщения в этом обсуждении
"FastNetMon 1.0.0 - программа для выявления входящих/исходящи..."
Отправлено onorua , 23-Июн-14 10:10 
Кто-то пробовал, на сколько удобнее NetFlow+скрипт для анализа?

"FastNetMon 1.0.0 - программа для выявления входящих/исходящи..."
Отправлено Pavel Odintsov , 23-Июн-14 10:43 
Ну насколько удобнее - вопрос сложный. Netflow на мой взгляд не совсем верный путь решения данной проблемы, так как его генерация сама по себе часто сильно перегружает машину (если это, скажем, Linux BOX или не high end роутер). А кроме того, практикуемое в NetFlow сэмплирование (уплотнение) данные может привести к тому, что агент сгенерирует NetFlow об атаке уже тогда, когда ляжет вся сеть.

"FastNetMon 1.0.0 - программа для выявления входящих/исходящи..."
Отправлено Алексей , 23-Июн-14 19:00 
Спасибо за разработку полезной программы.

"FastNetMon 1.0.0 - программа для выявления входящих/исходящи..."
Отправлено Pavel Odintsov , 23-Июн-14 19:51 
> Спасибо за разработку полезной программы.

Спасибо за использование ! :)


"FastNetMon 1.0.0 - программа для выявления входящих/исходящи..."
Отправлено Аноним , 23-Июн-14 20:37 
NETMAP (от Luigi Rizzo). Простой и удобный opensource фреймворк для обработки трафика на скоростях 10Gbit/s или 14 Mpps

"FastNetMon 1.0.0 - программа для выявления входящих/исходящи..."
Отправлено Pavel Odintsov , 23-Июн-14 21:46 
Так а чем плох полностью открытый PF_RING ? :)

"FastNetMon 1.0.0 - программа для выявления входящих/исходящи..."
Отправлено Аноним , 23-Июн-14 22:41 
Нету на FreeBSD и MacOSX

"FastNetMon 1.0.0 - программа для выявления входящих/исходящи..."
Отправлено Pavel Odintsov , 24-Июн-14 10:32 
Боюсь, что тут я могу сказать лишь то, что мой софт сугубо заточен на платформу Linux. Если кто-то сможет добавить поддержку netmap - я с радостью приму эти фиксы. Но сам я не специалист ни по FreeBSD, ни по netmap.

"FastNetMon 1.0.0 - программа для выявления входящих/исходящи..."
Отправлено Аноним , 25-Июн-14 16:16 
Какой трафик сможет обработать PF_RING+FastNetMоn в pps? Понятно, что все упирается в сервер, но на каких скоростях тестировали и железе? IPT_NETFLOW может генерировать netflow для трафика в несколько Mpps не на самом топовом сервере с 10Gb NIC.

"FastNetMon 1.0.0 - программа для выявления входящих/исходящи..."
Отправлено Pavel Odintsov , 25-Июн-14 16:27 
При DDoS в почти ~1Mpps все работало отлично на i7 2600, но процессоры были нагружены почти полностью. Полагаю, если прикрутить PF_RING ZC, то будет еще быстрее, но тогда потребуется приобретать лицензию.  

"FastNetMon 1.0.0 - программа для выявления входящих/исходящи..."
Отправлено Аноним , 25-Июн-14 16:34 
Насколько сложно прикрутить получение данных из нетфлоу? Было бы интересное решение: на больших трафках генерировать нетфлоу, а для уменьшения нагрузки анализировать в FastNetMOn уже нетфлоу, в данном случае минусы нетфлоу нивелируются из-за больших скоростей =) В данный момент такое можно сделать с помощью nProbe, но в таком режиме он платный...

"FastNetMon 1.0.0 - программа для выявления входящих/исходящи..."
Отправлено Pavel Odintsov , 25-Июн-14 18:02 
Идея отличная, но я не уверен, что смогу использовать те же парсеры для подключения к ipt_netflow, например. У меня наоборот есть мысль генерировать netflow или что-то опдобное ему - конвертировать набор байт в набор потоков от/до.

"FastNetMon 1.0.0 - программа для выявления входящих/исходящи..."
Отправлено Аноним , 23-Июн-14 20:03 
Чего только люди не придумают, лишь бы man ipcad не читать.

"FastNetMon 1.0.0 - программа для выявления входящих/исходящи..."
Отправлено Pavel Odintsov , 24-Июн-14 10:08 
К IpCad данная задача не имеет ни малейшего отношения. Он считает трафик, мы - фиксируем атаки.

"FastNetMon 1.0.0 - программа для выявления входящих/исходящи..."
Отправлено Аноним , 23-Июн-14 20:13 
От забития канала не поможет.

"FastNetMon 1.0.0 - программа для выявления входящих/исходящи..."
Отправлено Pavel Odintsov , 23-Июн-14 20:35 
Почему? Как раз для защиты от таких атак и писалось - просто подключите BGP blackhole к notify скрипту и как раз сможете отразить атаку до того, как будет забить канал.

"FastNetMon 1.0.0 - программа для выявления входящих/исходящи..."
Отправлено pavlinux , 23-Июн-14 22:10 
А чё PF_RING уже в ядре???

"FastNetMon 1.0.0 - программа для выявления входящих/исходящи..."
Отправлено Pavel Odintsov , 23-Июн-14 22:24 
А зачем ему там быть? Это же 1 легкий модуль.

"FastNetMon 1.0.0 - программа для выявления входящих/исходящи..."
Отправлено Аноним , 23-Июн-14 22:38 
>>  CentOS 6 не подходит для сборки

CentOS 7 использует gcc 4.8.2


"FastNetMon 1.0.0 - программа для выявления входящих/исходящи..."
Отправлено Pavel Odintsov , 23-Июн-14 23:03 
О, класс! А может попробуете собрать?

"FastNetMon 1.0.0 - программа для выявления входящих/исходящи..."
Отправлено Аноним , 25-Июн-14 14:06 
DDoS также отличается от остального трафика тем, что на атакуемые хосты идет трафик со значительно большего количества адресов чем в обычной ситуации. Само количество трафика не обязательно сильно вырастает. Если один клиент подключен на скорости 10Мбит/с, а другой на 1Гбит/с, и DDoS идет на первого клиента, то атаку можно считать успешной при сравнительно низком трафике в его сторону, но в топе мы его не увидим, т.к. у нас есть другие клиенты с большими скоростями, которые и будут находится в топе со своим обычным трафиком.

"FastNetMon 1.0.0 - программа для выявления входящих/исходящи..."
Отправлено Pavel Odintsov , 25-Июн-14 16:30 
> DDoS также отличается от остального трафика тем, что на атакуемые хосты идет
> трафик со значительно большего количества адресов чем в обычной ситуации. Само
> количество трафика не обязательно сильно вырастает. Если один клиент подключен на
> скорости 10Мбит/с, а другой на 1Гбит/с, и DDoS идет на первого
> клиента, то атаку можно считать успешной при сравнительно низком трафике в
> его сторону, но в топе мы его не увидим, т.к. у
> нас есть другие клиенты с большими скоростями, которые и будут находится
> в топе со своим обычным трафиком.

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

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


"FastNetMon 1.0.0 - программа для выявления входящих/исходящи..."
Отправлено Pavel Odintsov , 30-Июн-14 22:20 
Есть апдейты :)

1) Теперь нет завязки на С++ 11, он выкинут от начала до конца и теперь все должно компилится под Debian 6/7 и CentOS 6/7.
2) Внедрил отличный лакапер - patricia из MPM пакета
3) Отошел от пересчета с сэмплирование и обсчитываю данные ежесекундно
4) Исправил лютые баги :)

Чуточку больше Changes здесь:
We recalculate data for _all_ local ip's every second. You lock DoS/DDoS with speed of light!
In attack details added nanosecond timestamps
We dropped off C++ 11 support because it's buggy. Now you can compile tool on any modern platform!
Optimize calls of banner script. In old version it can result to script hangs
Migrate to boost::threads as more reliable threads for C++
Introduce new patricia based ip lookup code
Migrate to ncruses and do not produce loooong output in console