Состоялся (https://github.com/FastVPSEestiOu/fastnetmon/releases/tag/v1...) релиз программы FastNetMon 1.1.2 (https://github.com/FastVPSEestiOu/fastnetmon), предназначенной для выявления входящих и исходящих DDoS-атак на основе анализа транзитного трафика. Программа разработана для фиксации серьезных всплесков интенсивности отправки пакетов (сотни тысяч пакетов в секунду), как со стороны клиентов, так и со стороны внешней сети в сторону клиентов. Данные о трафике могут собираться через PF_RING, PCAP, ULOG2, Netmap, NetFlow, sFLOW. На выходе выводится список 10 самых активных потребителей ресурсов сети, как по числу пакетов в секунду, так и по трафику. Для хранения статистики используется БД Redis. Программа написана на языке C++.За прошедшие почти 10 месяцев с релиза 1.0.0 была проделана очень большая работа по улучшению программы. Из основных изменений стоит отметить следующие:
- Возможность выявлять самые популярные виды атак: syn_flood, icmp_flood, udp_flood, ip_fragmentation_flood
- Поддержка протокола Netflow v5, v9 и v10 (IPFIX)
- Возможность применения протокола sFLOW v5, который поддерживается большинством современных сетевых коммутаторов
- Поддержка использования netmap (поддерживаются Linux и FreeBSD, для Linux предоставляется специальная версия (https://github.com/pavel-odintsov/ixgbe-linux-netmap) драйвера ixgbe) для захвата пакетов. Данный режим обеспечивает наивысшую производительность захвата трафика наряду с PF_RING ZC.
- Добавлена поддержка PF_RING ZC (к сожалению, этот режим требует отдельной лицензии на библиотеку PF_RING)
Другие изменения:
- Добавлена возможность сбора netflow на основе шаблонов с нескольких устройств (в том числе - виртуальных, в пределах одного шасси)
- Базовая поддержка IPv6 в модуле Netflow, коллектор может прослушивать IPv6 интерфейс, анализ протокола пока не поддерживается
- Информация об атаке теперь включает очень большое число полей, среди которых - используемые протоколы, типы пакетов, флаги TCP и многое другое, все это позволяет идентифицировать атаки максимально точно
- Вместо ежесекундного расчета используется усреднение скорости атаки за Х последних секунд, что позволяет минимизировать ложные срабатывания
- Добавлена возможность сохранения отпечатков атаки в отдельных файлах
- Добавлена возможность указывать лимит с которого трафик считается атакой в числе потоков, пакетов/секунду и байт/секунду.
- Добавлена интеграция с проектом ExaBGP, с помощью которого можно анонсировать блокируемые IP адреса непосредственно на BGP роутеры собственной сети либо напрямую аплинку
- Добавлена поддержка плагинов, теперь возможна разработка собственных систем захвата трафика в дополнение к имеющимся
- Добавлены init файлы для систем на базе systemd
- Добавлена возможность разблокировки IP после истечения заданного периода времени
- Добавлена возможность сохранения данных об атаке в Redis
- Добавлена поддержка распаковки протокола L2TP в режиме захвата с зеркальных портов
- Модернизация процесса разработки:переход на систему сборки cmake, использование системы непрерывной интеграции Travis CI, отказ от использования функциональности С++ 11 (из соображений переносимости). Также стоит отметить подключение (https://gitter.im/FastVPSEestiOu/fastnetmon) проекта Gitter для эффективного обсуждения вопросов, касающихся проекта. и в дополнение к нему добавлен классический список рассылки (https://groups.google.com/forum/#!forum/fastnetmon);
- Добавлена поддержка следующих систем:
Fedora 21,
Debian 6/7/8,
CentOS 6/7,
FreeBSD 9/10/11,
DragonflyBSD 4,
OS X 10.10;
Бинарный пакеты собраны для следующих систем :
CentOS 6 (https://github.com/FastVPSEestiOu/fastnetmon/tree/master/pac...),
CentOS 7 (https://github.com/FastVPSEestiOu/fastnetmon/tree/master/pac...),
Fedora 21 (https://github.com/FastVPSEestiOu/fastnetmon/tree/master/pac...),
FreeBSD (https://github.com/FastVPSEestiOu/fastnetmon/tree/master/src...). Для других Linux систем рекомендуется использовать автоматический установщик (https://github.com/FastVPSEestiOu/fastnetmon/blob/master/doc...).
Новая версия позволяет достичь очень высокой производительности. Скорость обработки sFLOW/Netflow почти неограниченная (до десятков и сотен гигабит секунду). Для режима PF_RING (не ZC) максимально достигнутая скорость в районе ~3mpps/5GE. Наивысшей скорости можно добиться используя системы захвата трафика PF_RING ZC или netmap, обе библиотеки позволяют обрабатывать до 10 и более миллионов пакетов в секунду на зеркальных портах (10GE+). При очень высокой скорости рекомендуется отключать режим трекинга соединений, который очень сильно нагружает процессорные ресурсы. Все изменения приведены для Intel i7 2600 и сетевой карты Intel 82599.
URL: https://github.com/FastVPSEestiOu/fastnetmon/releases/tag/v1...
Новость: http://www.opennet.me/opennews/art.shtml?num=42346
Т.е. ребята просто написали обычный биллинг на плюсах используя внешние сенсоры?!
ты б прочитал бы что ли... до половины хотя бы...
Ну ... вот блок из второй половины:
- Вместо ежесекундного расчета используется усреднение скорости атаки за Х последних секунд, что позволяет минимизировать ложные срабатывания
- Добавлена возможность сохранения отпечатков атаки в отдельных файлах
- Добавлена возможность указывать лимит с которого трафик считается атакой в числе потоков, пакетов/секунду и байт/секунду.
- Добавлены init файлы для систем на базе systemd
- Добавлена возможность разблокировки IP после истечения заданного периода времени
Нет. У нас даже парсеры sFLOW/NetFLOW свои, кроме этого основной режим - все же прямой захват данных с порта. И он работает _очень_ быстро. Проворачивает 10GE играючи. На соответствующем железе (класса Xeon e5 2670v3 x 2) легко провернет 40GE.
Охренеть. В репе бинарные пакеты и исходники перемешанные с FreeBSD'шными портами. Если разработчики так относятся к репозиторию, то боюсь представить что у них в коде. Собрал, запустил, fastnetmon завершается без каких-либо сообщений. --help не работает. Нет слов, сначала научитесь писать и оформлять софт, потом пишите новости о своих поделках.
* читаешь код (шоб не бояться представить что в нем)
* показываешь им где их код-г*но, показываешь как нужно
на основании вышенаписаного пишешь usage(), засылаешь им падч.
или ты ждешь пока тебя проплатят на это дело, ананим?;-)
Бредишь? Аноним достаточно четко указал, что по его мнению не так. Пользователь не обязан писать за других, так же как не обязан петь дифирамбы в честь разработчиков и пользоваться их продуктом, если видит, что разработчики написали г*но.
> Бредишь? Аноним достаточно четко указал, что по его мнению не так. Пользователь
> не обязан писать за других, так же как не обязан петь
> дифирамбы в честь разработчиков и пользоваться их продуктом, если видит, что
> разработчики написали г*но.Все пожелания учтены =) Но где находятся логи явно написано в документации и можно было бы ради разнообразия её прочесть :)
тут преимущественно писатели. хорошо если написанное собой читают.
>Пользователь не обязан писать за других, так же как не обязан петь дифирамбы в честь разработчиков и пользоваться их продуктом, если видит, что разработчики написали г*но.Да - но наcpaть на форуме то - от ОБЯЗАН!
А вообще такие "пользователи" как ты обязаны платить и каятся, чего ты тут делаешь - на OpenNet, а не на MS\Apple?
> Охренеть. В репе бинарные пакеты и исходники перемешанные с FreeBSD'шными портами. Если
> разработчики так относятся к репозиторию, то боюсь представить что у них
> в коде. Собрал, запустил, fastnetmon завершается без каких-либо сообщений. --help не
> работает. Нет слов, сначала научитесь писать и оформлять софт, потом пишите
> новости о своих поделках.Да, я понимаю, что бинарные пакеты в репо - не лучшая идея. Но активно идет процесс добавления этих пакетов в официальные деревья репозиториев и по мере активности этого процесса из репо они будут удаляться.
По поводу --help - учту, забил себе: https://github.com/FastVPSEestiOu/fastnetmon/issues/244
Чтобы понять - почему завершается, откройте лог: /var/log/fastnetmon.log, тулкит обязательно напишет мотивы =)
> Да, я понимаю, что бинарные пакеты в репо - не лучшая идея. Но активно идет процесс добавления этих пакетов в официальные деревья репозиториев и по мере активности этого процесса из репо они будут удаляться.А в истории репы, надо думать, они останутся навсегда, и тем кому нужны исходники придётся качать мегабайты этого мусора? Или таки будете filter-branch делать из-за чего всем у кого есть изменения на ваш код придётся делать rebase? Думать надо о таких вещах с самого начала. Но заклинаю, лучше сделайте filter-branch и удалите всю эту дрянь сейчас, чем потом.
> Чтобы понять - почему завершается, откройте лог: /var/log/fastnetmon.log, тулкит обязательно напишет мотивы =)
Дорогой вы мой человек, а кто же разрешит ему из-под юзера в /var/log писать? Или вы думаете что я буду вашу поделку от рута запускать?
> Дорогой вы мой человек, а кто же разрешит ему из-под юзера в /var/log писать? Или вы думаете что я буду вашу поделку от рута запускать?А ты на порт под гестом собрался вешаться?
Порты-то повесить можно, если принимать netflow/sflow только, но самый интересный режим - netmap требует только рута, тут без вариантов. PF_RING можно заставить работать под cap_admin/cap_net_admin, но netmap никак.
Что, серьезно, DDoS сложно обнаружить? Сколько было атак, ни разу с такой проблемой не сталкивался. Через тот же NetFlow секундное дело определить не только атаку, но и ее тип.
*Nfsen
> Что, серьезно, DDoS сложно обнаружить? Сколько было атак, ни разу с такой
> проблемой не сталкивался. Через тот же NetFlow секундное дело определить не
> только атаку, но и ее тип.Вопрос не в том, как обнаружить атаку визуально. А в том, как сделать это автоматически и очень быстры.
Последнее время крайне популярны ОЧЕНЬ мощные атаки (в десятки гигабит и MPPS), которые выходят на пиковую скорость в течение десятка секунд и к этому времени убивают любое железо и выводят провайдера из игры целиком, если он не успел вовремя отрезать трафик.
Прям один в один текст как на хабре )
Есть небольшие отличия местами. Но да - печаталось с одного шаблона :)
ждём ебылдов!
Помощь со сборкой ебилдов была бы очень кстати :)
> Помощь со сборкой ебилдов была бы очень кстати :)Хорошо, займусь на выхах - будут вам ебилды ;)
Хотя кто будет юзать генту в таких местах - я решительно не понимаю.
Почему? Gentoo - отличная платформа под такие задачи, потому что чем новее Boost/C++/ядро, тем больше скорость захвата. Так что Gentoo тут очень кстати.
Arch тоже не стар, но удобнее!
> Boost/C++/ядро, тем больше скорость захвата. Так что Gentoo тут очень кстати.Скорее злобные флаги оптимизатора, с не менее злобными глюками :)
> Хотя кто будет юзать генту в таких местах - я решительно не
> понимаю.Hardened Gentoo именно для таких и прочих плохих и хороших мест!
>> Помощь со сборкой ебилдов была бы очень кстати :)
> Хорошо, займусь на выхах - будут вам ебилды ;)Есть ещё один сетевой проект NOC c Гентоо оверлеем: https://bugs.gentoo.org/show_bug.cgi?id=366051 Для которого ищется прокси ментейнер..
Также могу помочь в написании/тестировании ебылдов.
Где найти подробную инструкцию по установке и настройке?
вроде бы установил, но трафика не видно, использую netflow
в логах ошибок нет
сам разобрался - надо было порт открыть в iptables
но вопрос про мануал актуален, хотелось бы подробнее изучить все возможные настройки
Документации хорошей, к сожалению, нету. Но есть очень хорошо детализированный и описанный конфиг /etc/fastnetmon.conf.
> Документации хорошей, к сожалению, нету. Но есть очень хорошо детализированный и описанный
> конфиг /etc/fastnetmon.conf.Спасибо за ответ, можно тогда пояснить:
# Limits for Dos/DDoS attacks
threshold_pps = 20000
threshold_mbps = 1000
threshold_flows = 3500правильно я понимаю что при атаке меньше этих значений она будет пропущена
mbps это что? мегабит/с ? только in или out? или сумма?
какой интервал замера?
>> Документации хорошей, к сожалению, нету. Но есть очень хорошо детализированный и описанный
>> конфиг /etc/fastnetmon.conf.
> Спасибо за ответ, можно тогда пояснить:
> # Limits for Dos/DDoS attacks
> threshold_pps = 20000
> threshold_mbps = 1000
> threshold_flows = 3500
> правильно я понимаю что при атаке меньше этих значений она будет пропущена
> mbps это что? мегабит/с ? только in или out? или сумма?
> какой интервал замера?Да, атака будет пропущена.
И in и out, то есть поймает оба вида атаки. В родмэпе есть раздельные лимиты для in/out, но это пока не скоро будет сделано.
Интервал замера - секунда, но используется 5 секундное усреднение (average_calculation_time = 5).
в каких единицах указывается время бана? в секундах, миллисекундах и т.д.?
Секунды :)
> Секунды :)Добавил патч с исправленным описанием параметра в репо.
"открытого решения по обнаружению DDoS-атак"Не считал сколько мне пришлось написать костылей для отбития DDoS. Но есть один которым хочется поделится. Основан он на NOC FM https://kb.nocproject.org/pages/viewpage.action?pageId=15106....
Устройства в сети (может быть и FastNetMon) передают сообщения о превышении пороговых значений. NOC FM их классифицирует, обрабатывает (включая поиск причины) и может выполнять определённые, описанные в handlers (noc.fm.handlers.event...) действия! NOC способен выполнять команды прямо на оборудовании. То есть добавить блокируемый IP в таблицы сетевого экрана (ipset,...), ACL на сетевом оборудовании или анонсировать по BGP блокируемые IP адреса.
Блестящее решение! Было бы круто, если бы добавили поддержку трапов от FastNetMon в NOC! :)
В НОК принято добавлять сообщения только от оборудования.Но, есть поддержка OS Linux и OS FreeBSD, можно в рамках этих "устройств" добавить трапы от FastNetMon.
На деле тут от моего софта ничего не требуется, вопрос лишь в поддержке этой фичи разработчиками NOC. Я им не пользуюсь (но люто одобряю) и поэтому мне даже юз кейс с трудом рисуется.
> специальная версия драйвера ixgbe)Особая, уличная магия... :)
Нужна для быстрого захвата пакетов прямо из буфера сетевой :) Без этой магии высоких (5-10-15 миллионов пакетов в секунду) скоростей не достичь :(
В Биллинге TraffPro эта функция антифлудом называется и существует с 2009 года.
Не уверен, что это функция биллинга. Скорее роутера либо IDS.