DoS & DDoS
Nov. 15th, 2009 01:46 pmВсе привыкли к тому, что время от времени случаются DoS и DDoS-атаки. Что с ними делать?
Владельцы ресурсов и админы корпоративных сетей пытаются защитить себя сами. Всякие IDS, IPS, PIX, ASA, Netscreen и много других умных слов. Этот подход логичен, но имеет очевидный недостаток: если атака уложила border router или забила канал к провайдеру, находящиеся внутри средства обнаружения и предотвращения атак бесполезны, нужно содействие ISP.
Что же делать ISP, как защитить клиентов? Ведь его задача - передавать IP-трафик максимально качественно (надёжно, быстро и без потерь), фильтрация в его функции не входит. На объёмах трафика ISP фильтрация (IPS) будет стоить неразумно, клиентам попросту не нужен такой сервис за такие деньги. Да и настройка фильтров - процесс трудоёмкий и индивидуальный, у каждого клиента свои потребности и особенности.
Реакция ISP нужна только тогда, когда атака уложила либо канал, либо border router клиента. Иначе клиент имеет возможность отфильтровать самостоятельно, и перекладывать эту функцию на ISP смысла нет. Автоматическая фильтрация на стороне ISP может быть и вредна. Например, трафик вполне легитимной видеоконференции может быть ошибочно расценен как DoS (большой поток UDP) и отфильтрован, что, очевидно, не вызовет благодарности клиента.
Одно из разумных и распространённых решений - BGP blackhole (rfc3882). Оно позволяет клиенту самостоятельно отфильтровать трафик на атакуемый IP у апстрима, проаннонсировав его как /32 с заранее оговорённым community. Даже если у клиента от атаки упал router, BGP-анонсирование атакуемой сети прекратилось, трафика нет, BGP может опять подниматься, но уже с blackhole-анонсом атакуемого хоста. Если клиент успел определить, какой хост атакуют. Недостатком является то, что это грубая фильтрация, блокируется весь трафик на указанный IP-адрес, независимо от source, protocol и т.п. Атакуемый хост приносится в жертву ради того, чтобы не страдали другие. Достоинством - то, что не нужно содействие персонала апстрима.
В итоге получается, что ISP не должен автоматически фильтровать DoS-атаки на клиентов, но должен иметь информацию об атаках как на своих клиентов, так и от них (ботнеты) с тем, чтобы иметь возможность при необходимости (если атака полностью уложила клиента или по просьбе клиента) быстро отфильтровать атаку, даже если клиент не знает, откуда и куда она идёт. Поскольку атака часто приводит к прерыванию сервиса (собственно, в этом её цель), информацию желательно иметь побыстрее и максимально подробную (какой вид атаки, интенсивность, что за клиент, как себя чувствуют его роутеры и т.п.) с тем, чтобы принимать решение (отфильтровать и сообщить клиенту; не отфильтровывать и сообщить клиенту; игнорировать). При этом для ISP имеют значения только грубые атаки (pps, cps), а контентный анализ (вирусы, хакерская активность, даже syn flood) - это то, с чем клиент может бороться самостоятельно. По этой схеме мы и работаем уже не первый год, нам нравится, клиентам, вроде бы, тоже. :-)
Более подробно о реализации.
На внешних линках снимается sampled netflow. Как показывает практика, rate 8192 вполне достаточно для обнаружения атак. Этот flow сохраняется на некоторое время (пара часов, не больше) через flow-tools, кроме того, идёт на обработку специальному демону dds (самописному), который и занимается обнаружением атак. В случае появления аномальной активности (например, от хоста x.x.x.x на клиентский хост y.y.y.y обнаружен поток udp с 40 Kpps) запускается скрипт, который включает alarm на мониторилке для дежурной смены, а также пишет письмо, в котором:
- информация об атакуемом хосте (какой AS и какому клиенту он относится);
- как в данный момент выглядит mtr на этот хост (насколько живы роутеры по пути и сам атакуемый хост);
- листинг относящегося к этой аномалии трафика за последние 5 минут, из сохранённого в flow-tools.
Этой информации достаточно для того, чтобы человек мог без лишних задержек и исследований принять решение, что делать. Из листинга flow видно, с каких и на какие порты идёт трафик, насколько он похож на легитимный. Из mtr - насколько клиент страдает от этой атаки. Технически можно было бы при некоторых условиях и автоматически фильтровать атаки, но лично мне страшновато автоматизировать подобные действия, к тому же, на стороне ISP.
Демон dds можно получить командой "
Btw, мне давно интересно, как люди борятся с DoS-атаками без dds? Если есть атака, роутеру поплохело - как выясняют, какой хост атакуется и с какого источника? Есть какие-то аналогичные утилиты?
Владельцы ресурсов и админы корпоративных сетей пытаются защитить себя сами. Всякие IDS, IPS, PIX, ASA, Netscreen и много других умных слов. Этот подход логичен, но имеет очевидный недостаток: если атака уложила border router или забила канал к провайдеру, находящиеся внутри средства обнаружения и предотвращения атак бесполезны, нужно содействие ISP.
Что же делать ISP, как защитить клиентов? Ведь его задача - передавать IP-трафик максимально качественно (надёжно, быстро и без потерь), фильтрация в его функции не входит. На объёмах трафика ISP фильтрация (IPS) будет стоить неразумно, клиентам попросту не нужен такой сервис за такие деньги. Да и настройка фильтров - процесс трудоёмкий и индивидуальный, у каждого клиента свои потребности и особенности.
Реакция ISP нужна только тогда, когда атака уложила либо канал, либо border router клиента. Иначе клиент имеет возможность отфильтровать самостоятельно, и перекладывать эту функцию на ISP смысла нет. Автоматическая фильтрация на стороне ISP может быть и вредна. Например, трафик вполне легитимной видеоконференции может быть ошибочно расценен как DoS (большой поток UDP) и отфильтрован, что, очевидно, не вызовет благодарности клиента.
Одно из разумных и распространённых решений - BGP blackhole (rfc3882). Оно позволяет клиенту самостоятельно отфильтровать трафик на атакуемый IP у апстрима, проаннонсировав его как /32 с заранее оговорённым community. Даже если у клиента от атаки упал router, BGP-анонсирование атакуемой сети прекратилось, трафика нет, BGP может опять подниматься, но уже с blackhole-анонсом атакуемого хоста. Если клиент успел определить, какой хост атакуют. Недостатком является то, что это грубая фильтрация, блокируется весь трафик на указанный IP-адрес, независимо от source, protocol и т.п. Атакуемый хост приносится в жертву ради того, чтобы не страдали другие. Достоинством - то, что не нужно содействие персонала апстрима.
В итоге получается, что ISP не должен автоматически фильтровать DoS-атаки на клиентов, но должен иметь информацию об атаках как на своих клиентов, так и от них (ботнеты) с тем, чтобы иметь возможность при необходимости (если атака полностью уложила клиента или по просьбе клиента) быстро отфильтровать атаку, даже если клиент не знает, откуда и куда она идёт. Поскольку атака часто приводит к прерыванию сервиса (собственно, в этом её цель), информацию желательно иметь побыстрее и максимально подробную (какой вид атаки, интенсивность, что за клиент, как себя чувствуют его роутеры и т.п.) с тем, чтобы принимать решение (отфильтровать и сообщить клиенту; не отфильтровывать и сообщить клиенту; игнорировать). При этом для ISP имеют значения только грубые атаки (pps, cps), а контентный анализ (вирусы, хакерская активность, даже syn flood) - это то, с чем клиент может бороться самостоятельно. По этой схеме мы и работаем уже не первый год, нам нравится, клиентам, вроде бы, тоже. :-)
Более подробно о реализации.
На внешних линках снимается sampled netflow. Как показывает практика, rate 8192 вполне достаточно для обнаружения атак. Этот flow сохраняется на некоторое время (пара часов, не больше) через flow-tools, кроме того, идёт на обработку специальному демону dds (самописному), который и занимается обнаружением атак. В случае появления аномальной активности (например, от хоста x.x.x.x на клиентский хост y.y.y.y обнаружен поток udp с 40 Kpps) запускается скрипт, который включает alarm на мониторилке для дежурной смены, а также пишет письмо, в котором:
- информация об атакуемом хосте (какой AS и какому клиенту он относится);
- как в данный момент выглядит mtr на этот хост (насколько живы роутеры по пути и сам атакуемый хост);
- листинг относящегося к этой аномалии трафика за последние 5 минут, из сохранённого в flow-tools.
Этой информации достаточно для того, чтобы человек мог без лишних задержек и исследований принять решение, что делать. Из листинга flow видно, с каких и на какие порты идёт трафик, насколько он похож на легитимный. Из mtr - насколько клиент страдает от этой атаки. Технически можно было бы при некоторых условиях и автоматически фильтровать атаки, но лично мне страшновато автоматизировать подобные действия, к тому же, на стороне ISP.
Демон dds можно получить командой "
cvs -d :pserver:cvs@happy.kiev.ua:/cvs co dds". При обработке ~20G трафика с sampled rate 8192 он отжирает ~30M памяти и ~0.2% cpu load.Btw, мне давно интересно, как люди борятся с DoS-атаками без dds? Если есть атака, роутеру поплохело - как выясняют, какой хост атакуется и с какого источника? Есть какие-то аналогичные утилиты?
no subject
Date: 2009-11-18 10:42 am (UTC)