BGP Blackhole — эффективное средство борьбы с DDoS


C таким неприятным явлением как DDoS атака, рано или поздно сталкивается каждый администратор публичного ресурса. Нет особого смысла расписывать, что такое DDoS, сегодня об этом явлении знает любой сетевик. К сожалению, не существует способа защиты от DDoS подходящего для всех ситуаций. Однако, наиболее эффективным и часто применяемым является null routing — полная фильтрация трафика на атакуемый IP. После того, как хост зафильтрован, можно в (относительно) спокойной обстановке перенести ресурс на другой IP-адрес (и, возможно, сменить DNS имя), либо просто смириться с временной недоступностью одного ресурса, сохранив работоспособность остальных.

Но и простая фильтрация тоже не так проста. Ведь резать трафик на собственном граничном маршрутизаторе оказывается довольно накладно. Во-первых, маршрутизатор класса Cisco 3745 с включенными финтифлюшками, типа ACL и QoS, при SYN Flood начинает показывать признаки смерти уже на смешном потоке в 2-3 мбит/c. Во-вторых, загрузка физического канала мешает нормальной работе легитимных клиентов. Ну и, в-третьих, если у вас не анлим, то ISP обязательно выставит вам счет на все залитые вам мусорные гигабайты.

Выход тут один — фильтровать трафик как можно ближе к источнику, то есть, у аплинка. Есть старый добрый способ: снять трубку телефона и объяснить ситуацию техподдержке провайдера с просьбой зафильтровать трафик на их стороне. У этого способа есть существенный недостаток: объяснения и переговоры занимают неприемлемо много времени. А если провайдеров несколько, то это время пропорционально увеличивается.
Подстелить соломки и подготовится к возможному DDoS поможет метод под названием BGP blackhole(RFC3882).
Суть его проста: это «черная дыра» для трафика на стороне ISP, удаленно управляемая клиентом. Технически это выглядит как BGP-анонс префикса /32 помеченного специальным community.Как следует из названия, для работы метода необходимо BGP-соседство с провайдером. И естественно, он требует небольшой дополнительной конфигурации с обеих сторон.
Посмотрим, как это работает на примере маршрутизаторов Cisco.

Сторона ISP.

! Нужно выбрать произвольный IP и завернуть его в null0.
 ! Он будет next-hop-ом для мусорного трафика.
<strong>ip route <BLACKHOLE IP> 255.255.255.255 Null0</strong>
 !
<strong>router bgp XXX </strong>
 ! Назначим route-map для клиента
<strong>neighbor <CUSTOMER> route-map CUSTOMER-IN in</strong>
 ! Разрешаем клиенту анонсировать /32 из своего блока
<strong>neighbor <CUSTOMER> prefix-list <ACL> in</strong>
 ! Даже если клиент подключен без использования ebgp multi-hop, эта строчка
 ! необходима из-за особенностей работы ios. Т.к. для оценки достижимости netxhop-а
 ! в cisco используется тот же параметр, что и ebgp multi-hop.
<strong>neighbor <CUSTOMER> ebgp multi-hop 2</strong>
 ! Здесь происходит вся магия
<strong>route-map CUSTOMER-IN permit 10</strong>
<strong>match ip community 0:666</strong>
<strong>set ip next-hop <BLACKHOLE IP></strong>
<strong>set community additive no-export</strong>

Сторона клиента.

Тут все немного проще:

<code>! Описываем фильтр для редистрибуции.
 ! На статические маршруты с тэгом 666 устанавливаем community 0:666
<strong>route-map BGP-BLACKHOLE permit 5</strong>
<strong>match tag 666</strong>
<strong>set community 0:666 additive</strong>
 !
<strong>router bgp YYY</strong>
 ! Разрешаем редистрибуцию статических маршрутов по нашему фильтру
<strong>redistribute static route-map BGP-BLACKHOLE</strong>
 ! Разрешим отсылку community нашему аплинку
<strong>neighbor <UPLINK> send-community</strong>

Итак, если пришла пора биться с DDoS, клиент просто добавляет маршрут в Null на атакуемый хост и вешает на него тэг 666:

ip route 192.168.66.6 255.255.255.255 Null0 tag 666

Этот маршрут с community 666, анонсируется ISP, который также заворачивает трафик в null0.
Если ISP тоже подстелил соломки и настроил BGP Blackhole со своим аплинком, то цепочка продолжится и «черная дыра» расширится, избавив провайдера от лишней нагрузки и мусорного трафика.

Источник http://yvision.kz/post/306706

Запись опубликована в рубрике *Unix,*Linux, *Сети. Добавьте в закладки постоянную ссылку.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Я не спамер This plugin created by Alexei91