Wrong, wrong, WRONG! methods of DDoS mitigation
Qrator
Это транскрипция выступления CTO Qrator Labs Тёмы ximaera Гавриченкова на RIPE77 в Амстердаме. Его название мы не смогли перевести на русский с сохранением смысла, а потому решили посодействовать Хабру в выходе на англоязычный рынок и оставили все, как есть

Это цитата одной из моих любимых групп. Дэйв Гаан из Depeche Mode — живое доказательство того, что можно произнести слово “wrong” 65 раз за 5 минут и все равно оставаться рок-звездой. Давайте посмотрим, получится ли у меня.

 


Знаете ли вы, что люди просто обожают географию?
 


Все эти, знаете, модные карты и архитектурные планы.

Пожалуй, это и есть основная причина, по которой, читая security-раздел StackExchange, я постоянно натыкаюсь на один и тот же подход к предотвращению кибератак.
 


Допустим мы, как компания, не ожидаем Испанскую Инквизицию, тьфу, китайских пользователей. Почему бы нам просто не ограничить доступ с их IP-адресов? Мы не Facebook в конце концов, да и услуги наши доступны лишь в ограниченном количестве регионов. Да и, собственно, Facebook тоже недоступен в Китае, нам-то чего волноваться?
 


За пределами мира информационных технологий, подобная техника иногда называется redlining. Суть данного явления состоит в следующем.

Допустим, вы — директор таксопарка или пиццерии. Вы накопили определённую статистику, что в некоторых районах города могут ограбить вашего курьера, или же высока вероятность, что вашу машину поцарапают. Что ж, вы собираете все сотрудников, при них рисуете на карте города жирную красную линию и объявляете, что за пределами красной границы вы больше услуги не предоставляете. (Ввиду особенностей строения большинства американских городов это, кстати, практически эквивалентно отказу в услугах по этническому принципу и считается большой проблемой.)

Мы ведь можем сделать то же самое с IP-адресами, так? Любой IP-адрес принадлежит какой-то стране, стало быть, существует официальная база данных, поддерживаемая IETF и RIPE, подтверждающая аллокацию каждого IP-адреса.

Неверно!
 


Если ограничиться только техническими аспектами, то, на текущий момент, первым на ум приходит тот факт, что геобазы данных являются коммерческими продуктами коммерческих компаний, каждая из которых собирает данные собственными, часто не до конца ясными, способами. Подобные продукты могут быть использованы для статистических или других исследований, однако предоставление широкой аудитории production-сервиса на основе такого продукта является абсолютным идиотизмом по бесчисленному множеству причин.

Понятия «принадлежности» IP-адреса вообще не существует. IP-адрес — это не телефонный номер, региональный регистратор не передаёт их в собственность, что в явном виде написано в его политиках. Если и есть в мире сущность, которой IP-адреса «принадлежат», то это IANA, а не страна и не компания.

В качестве стороннего замечания — процесс защиты (ваших) авторских прав только что усложнился в разы.
 


Конечно, что-то из этого (хотя далеко не всё) может стать лучше с приходом IPv6. Тем не менее, сейчас мы говорим о DDoS-атаках; эра настоящего IPv6 DDoS еще не пришла и, пока мы набираемся опыта, могут возникать абсолютно разные ситуации. В общем и целом сейчас еще рано об этом думать.

Но, возвращаясь к DDoS: а если мы знаем наверняка, что удаленная сторона делает что-то явно злонамеренное?
 


Наш сетап: 40G трафика, скорее всего DNS-трафика, раз он идет с порта 53.

Как мы знаем, такое поведение типично для атак типа DNS amplification DDoS. Атаки с амплификацией используют уязвимый сервер для того чтобы, ну вы знаете… увеличивать трафик, и IP-адрес источника в них будет того самого уязвимого сервера.
 


Что если мы задействуем какую угодно технологию из тех, что у нас есть, для того, чтобы ограничить доступ к этим уязвимым серверам? Пусть уже наконец пропатчат все эти DNS-рефлекторы, чтобы они перестали быть угрозой, так?

Нет, не так!
 


Это реальная история. Описываемые события произошли в штате Миннесота в 1987 году. По просьбам выживших все имена были изменены. Из уважения к погибшим, остальные события были отображены именно так, как они происходили.

Компания получила по лицу гигабайтами DNS трафика и решила справиться с ними при помощи чёрных списков IP-адресов.

Через два часа атакующие это каким-то образом заметили и незамедлительно изменили паттерн атаки. Их способность проводить amplification-атаки до этого основывалась на их же способности генерировать пакетов с поддельными IP-адресами источника, так что это они и продолжили делать, но чуть по-другому.
 


Они начали заливать жертву напрямую, UDP-трафиком с портом источника 53 и фальшивыми IP-адресами из всего адресного пула IPv4. Скрипт NetFlow, использовавшийся компанией, решил, что amplification-атака продолжается, и принялся банить источники.
 


Так как все адресное пространство IPv4 можно перебрать за считанные часы, как вы уже догадались, потребовалось совсем немного времени для того, чтобы у сетевого оборудования закончилась память и оно выключилось окончательно.

Чтобы усугубить ситуацию, атакующие начали с перебора префиксов конечных пользователей наиболее популярных и крупных провайдеров ШПД в данной стране, поэтому сайт был недоступен у посетителей задолго до полного отказа в обслуживании.
 


Отсюда следует урок: не плодите чёрные списки автоматически, если вы не верифицировали IP-адрес источника атаки. Особенно, имея дело с атаками типа амплификации/отражения (reflection). Они могут казаться не тем, чем являются на самом деле.

После сказанного, остается вопрос.
 


Что если мы подтвердим как минимум тот факт, что на удаленном ресурсе действительно находится зловредный амплификатор? Давайте просканируем интернет и соберем IP-адреса со всеми потенциальными амплификаторами. Потом, если мы увидим любой из них в поле источника пакета, мы просто заблокируем их — они ж все равно амплификаторы, так?

Угадайте, что? Не так!
 


Существует ряд причин, каждая из которых утверждает, что так никогда нельзя делать. Существуют миллионы потенциальных амплификаторов по всему интернету, и вас крайне легко можно будет обмануть, заставив в очередной раз заблокировать избыточное число IP-адресов. IPv6-интернет вообще так просто не просканировать.

Но что здесь действительно забавно, так это то, что в такой ситуации увеличивается потенциал не только ложноположительных, но и ложноотрицательных срабатываний. Благодаря чему?
 


Redlining’у в других сетях!

Люди ненавидят сетевые сканеры. Они блокируют их, так как их гламурное IDS-оборудование маркирует сканеры как прямую угрозу. Они блокируют сканеры миллионом разных способов, и у атакующего может быть доступ к амплификаторам, с которыми вы не сможете ничего поделать. Никто не спросит заранее, насколько мягкий и пушистый ваш сканер. У IDS вообще нет такой концепции, как «хороший внешний сканер».
 


Вот ключевые выводы:

  • Не пытайтесь использовать чёрные списки, не будучи уверенными, что удаленная сторона — не фальшивка;
  • Не применяйте чёрные списки там, где это нельзя делать или там, где есть решение лучше;
  • Наконец, перестаньте уже ломать Интернет способами, на которые он не рассчитан!


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