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