Доступен релиз программы 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
Кто-то пробовал, на сколько удобнее NetFlow+скрипт для анализа?
Ну насколько удобнее - вопрос сложный. Netflow на мой взгляд не совсем верный путь решения данной проблемы, так как его генерация сама по себе часто сильно перегружает машину (если это, скажем, Linux BOX или не high end роутер). А кроме того, практикуемое в NetFlow сэмплирование (уплотнение) данные может привести к тому, что агент сгенерирует NetFlow об атаке уже тогда, когда ляжет вся сеть.
Спасибо за разработку полезной программы.
> Спасибо за разработку полезной программы.Спасибо за использование ! :)
NETMAP (от Luigi Rizzo). Простой и удобный opensource фреймворк для обработки трафика на скоростях 10Gbit/s или 14 Mpps
Так а чем плох полностью открытый PF_RING ? :)
Нету на FreeBSD и MacOSX
Боюсь, что тут я могу сказать лишь то, что мой софт сугубо заточен на платформу Linux. Если кто-то сможет добавить поддержку netmap - я с радостью приму эти фиксы. Но сам я не специалист ни по FreeBSD, ни по netmap.
Какой трафик сможет обработать PF_RING+FastNetMоn в pps? Понятно, что все упирается в сервер, но на каких скоростях тестировали и железе? IPT_NETFLOW может генерировать netflow для трафика в несколько Mpps не на самом топовом сервере с 10Gb NIC.
При DDoS в почти ~1Mpps все работало отлично на i7 2600, но процессоры были нагружены почти полностью. Полагаю, если прикрутить PF_RING ZC, то будет еще быстрее, но тогда потребуется приобретать лицензию.
Насколько сложно прикрутить получение данных из нетфлоу? Было бы интересное решение: на больших трафках генерировать нетфлоу, а для уменьшения нагрузки анализировать в FastNetMOn уже нетфлоу, в данном случае минусы нетфлоу нивелируются из-за больших скоростей =) В данный момент такое можно сделать с помощью nProbe, но в таком режиме он платный...
Идея отличная, но я не уверен, что смогу использовать те же парсеры для подключения к ipt_netflow, например. У меня наоборот есть мысль генерировать netflow или что-то опдобное ему - конвертировать набор байт в набор потоков от/до.
Чего только люди не придумают, лишь бы man ipcad не читать.
К IpCad данная задача не имеет ни малейшего отношения. Он считает трафик, мы - фиксируем атаки.
От забития канала не поможет.
Почему? Как раз для защиты от таких атак и писалось - просто подключите BGP blackhole к notify скрипту и как раз сможете отразить атаку до того, как будет забить канал.
А чё PF_RING уже в ядре???
А зачем ему там быть? Это же 1 легкий модуль.
>> CentOS 6 не подходит для сборкиCentOS 7 использует gcc 4.8.2
О, класс! А может попробуете собрать?
DDoS также отличается от остального трафика тем, что на атакуемые хосты идет трафик со значительно большего количества адресов чем в обычной ситуации. Само количество трафика не обязательно сильно вырастает. Если один клиент подключен на скорости 10Мбит/с, а другой на 1Гбит/с, и DDoS идет на первого клиента, то атаку можно считать успешной при сравнительно низком трафике в его сторону, но в топе мы его не увидим, т.к. у нас есть другие клиенты с большими скоростями, которые и будут находится в топе со своим обычным трафиком.
> DDoS также отличается от остального трафика тем, что на атакуемые хосты идет
> трафик со значительно большего количества адресов чем в обычной ситуации. Само
> количество трафика не обязательно сильно вырастает. Если один клиент подключен на
> скорости 10Мбит/с, а другой на 1Гбит/с, и DDoS идет на первого
> клиента, то атаку можно считать успешной при сравнительно низком трафике в
> его сторону, но в топе мы его не увидим, т.к. у
> нас есть другие клиенты с большими скоростями, которые и будут находится
> в топе со своим обычным трафиком.Да, боюсь в данном случае он ничего не покажет. Но серьезный трафик не всегда связан с высоким PPS и обычно что-то большое генерирует не более 1000 pps, поэтому при сортировке по пакетам/секунду Вы четко увидите.
Но вообще есть план, как сделать более серьезные тесты на DDoS, чем я в данный момент и занят.
Есть апдейты :)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