BGP Blackhole - средство борьбы с DDOS
C подобным неприятным явлением как DDOS атака, рано или поздно сталкивается любой администратор публичного сайта.
🕛 21.04.2010, 23:35
Нет особого смысла расписывать, что такое DDOS, сейчас об этом явлении знает любой сетевик. К несчастью, нету метода защиты от DDOS подходящего для всех ситуаций. Хотя, максимально действенным и нередко применяемым является null routing - полная фильтрация трафика на атакуемый IP. Затем, как хост зафильтрован, возможно в (сравнительно) спокойной обстановке перенести ресурс на иной IP-адрес (и, вероятно, сменить DNS имя), или просто свыкнуться с временной недоступностью одного сайта, сохранив работоспособность прочих.Но еще и простая фильтрация также не так проста. Ведь резать траф на своем граничном маршрутизаторе оказывается достаточно накладно. В первую очередь, маршрутизатор класса Cisco 3745 с включенными финтифлюшками, типа ACL и QOS, при SYN Flood начинает показывать признаки смерти уже на смешном потоке в 2-3 мбит/c. Во-вторых, загрузка физического канала мешает нормальной работе легитимных клиентов. Ну и, в-третьих, если у вас не анлим, то ISP непременно выставит вам счет на все залитые вам мусорные гигабайты.
Выход здесь 1 - фильтровать траф как возможно более близко к источнику, то есть, у аплинка. Есть старый добрый метод: снять трубку телефона и объяснить ситуацию техподдержке провайдера с просьбой зафильтровать траф на их стороне. У этого метода есть значительный недостаток: объяснения и переговоры занимают неприемлемо немало времени. А если провайдеров несколько, то это время пропорционально растет.
Подстелить соломки и подготовится к возможному 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 :666 set ip next-hop set community additive no-export
Сторона клиента.
Здесь все слегка легче:
! Описываем фильтр для редистрибуции. ! На статические маршруты с тэгом 666 устанавливаем community :666 route-map BGP-BLACKHOLE permit 5 match tag 666 set community :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 со собственным аплинком, то цепочка продолжится и "вороная дырка" расширится, избавив провайдера от лишней нагрузки и мусорного трафика.
К несчастью, эта "услуга" пока что редка из отечественных провайдеров. Хотя процесс идет, и многие провайдеры с готовностью идут навстречу клиентам и реализуют этот механизм.
Надеюсь, вышеизложенная информация окажется полезной. Если эта статья подвигнет как минимум еще одного провайдера ввести такую услугу, моя цель будет достигнута.