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

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

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

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

Итак, если пришла пора биться с 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, *Сети. Добавьте в закладки постоянную ссылку.

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

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

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