Все крупные сети и особенно сети провайдеров строятся на одном протоколе — BGP. Сегодня мы рассмотрим с технической стороны один из главных недостатков BGP: полное отсутствие проверки полученных маршрутов. Из-за этого возможна уязвимость, которая называется route leak или «утечка маршрутов».

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

Ты легко сможешь найти ботов и сайты, на которых частенько всплывают сообщения о route leaking или hijacking.

Route leak чаще случается из-за ошибки в конфигурации, неверной либо полностью отсутствующей фильтрации на стыке с вышестоящим провайдером. В этой статье я буду подразумевать, что route leaking — транзитное перенаправление трафика через сторонние автономные системы, hijacking — анонсирование чужих префиксов из AS (Autonomous System), которым он не должен принадлежать.

 

Чем опасен route leak

Route leaking и hijacking вызывают неприятности: иногда это задержки, а порой и атаки DOS или MITM.

Чтобы разобраться, как возникает route leak, необходимо понять основные механизмы работы BGP, поскольку утечка вызывается без каких-либо дополнительных манипуляций.

BGP использует номера автономных систем, и по этому критерию выделяют iBGP и eBGP. Разница в том, что iBGP (internal) работает в пределах одной автономной системы, eBGP (external) — между разными. Сейчас нас интересует eBGP: route leak происходит из-за неверных настроек между пирами eBGP.

 

Предотвращение петель маршрутизации

Для предотвращения петель маршрутизации пиры BGP проверяют атрибут AS PATH. Если в AS PATH есть собственный номер AS — роутер его отбрасывает. Это и есть петля.

Для пиров eBGP действует правило: при получении сообщения UPDATE, в котором хранится информация о маршрутах, следует передать сообщение всем пирам BGP. Для пиров iBGP номер AS не меняется, сообщение UPDATE не передается другим пирам. Это стандартный механизм.

 

Выбор лучшего пути

BGP использует алгоритм из нескольких шагов (от десяти до тринадцати). В зависимости от вендора и информации о доступности сетей через несколько источников протокол выбирает только один путь, помещает его в локальную таблицу маршрутизации и передает своим пирам.

Есть много способов повлиять на этот выбор. Сейчас мы остановимся на атрибуте AS PATH. Он состоит из последовательности номеров, каждая автономная система добавляет в поле UPDATE сообщения номер своей AS в порядке очереди.

R1#show ip bgp

Network Next Hop Metric LocPrf Weight Path
* 172.16.0.0/24 30.0.0.1 0 2 3 4 i
*> 10.0.0.2 0 5 4 i

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

INFO

Номер public AS получить не так просто. Нужно предоставить веские основания для IANA. Но это вопрос бюрократический, а мы сделаем упор на техническую часть.

Отсюда вытекает процесс route leak — эффект бабочки: чистый BGP без фильтров может быть крайне опасен и нарушить оптимальные пути трафика.

 

Практика

R1 и R4 выступают в качестве пограничных провайдерских роутеров, оба маршрутизатора анонсируют сети 192.168.0.0/24 и 172.16.0.0/24 соответственно из своих AS 1 и 2. У каждого провайдера есть договоренность с магистральными провайдерами (R2 и R3) о том, что R1 и R4 будут перегонять трафик через них, а AS 2 и 3 обеспечат нужную пропускную способность, надежность и защиту.

Зеленым цветом обозначен оптимальный со стороны провайдера путь трафика, красным — трафик, который пройдет через стороннюю AS, вызвав эффект route leak
Зеленым цветом обозначен оптимальный со стороны провайдера путь трафика, красным — трафик, который пройдет через стороннюю AS, вызвав эффект route leak

Мы подключим в эту схему провайдера R5. Теперь мы можем, изменив длину AS path, стать транзитной AS для трафика между AS 1 и 2, пропустить через себя весь трафик и вызвать кучу неприятностей и головной боли для всех провайдеров в цепи.

Мы имеем доступ только до R5. R1 и R4 настроили пиринг до адресов 10.0.0.2 и 20.0.0.2 соответственно.

Классический случай для route leaking. Новая автономная система имеет как минимум два пира с разными AS: route leak подразумевает возможность транзита.

Настраиваем пиринг с провайдерами.

Конфигурация R1 и R4:

R1
Interface eth0/0
  Ip add 10.0.0.1 255.255.255.0
  No shutdown
Interface eth0/1
  Ip add 30.0.0.1 255.255.255.0
  No shutdown
router bgp 1
  network 192.168.0.0
  neighbor 10.0.0.2 remote-as 5
  neighbor 30.0.0.2 remote-as 2

R4
Interface eth0/0
  Ip add 20.0.0.1 255.255.255.0
  No shutdown
Interface eth0/1
  Ip add 40.0.0.1 255.255.255.0
  No shutdown
router bgp 4
  network 172.16.0.0
  neighbor 20.0.0.2 remote-as 5
  neighbor 40.0.0.2 remote-as 3

Проверяем таблицу маршрутизации от R1 до сетей R4:

R1#show ip route 172.16.0.0
Routing entry for 172.16.0.0/24, 1 known subnets
B 172.16.0.0 [20/0] via 30.0.0.1, 00:05:54

R1#show ip bgp 172.16.0.0
BGP routing table entry for 172.16.0.0/24, version 4
Paths: (1 available, best #1, table default)
Not advertised to any peer
Refresh Epoch 1
2 3 4
30.0.0.1 from 30.0.0.1 (50.0.0.1)
Origin IGP, localpref 100, valid, external, best
rx pathid: 0, tx pathid: 0x0

PC_1> trace 172.16.0.10

trace to 172.16.0.10, 8 hops max, press Ctrl+C to stop
1 192.168.0.1 0.394 ms 0.247 ms 0.256 ms
2 30.0.0.1 0.568 ms 0.498 ms 0.395 ms
3 50.0.0.2 0.645 ms 0.722 ms 0.634 ms
4 40.0.0.2 0.917 ms 0.651 ms 0.750 ms
5 172.16.0.10 1.111 ms

Переходим к конфигурации с R5:

R5
R5
Interface eth0/0
  Ip add 10.0.0.2 255.255.255.0
  No shutdown
router bgp 5
  neighbor 10.0.0.1 remote-as 1

Получаем маршруты от провайдера R1 и переходим к конфигурации с провайдером R4.

R5
R5
Interface eth0/1
  Ip add 20.0.0.1 255.255.255.0
  No shutdown
router bgp 5
  neighbor 20.0.0.2 remote-as 4

Аналогичным образом, получив таблицу маршрутов от провайдера R4, R5 запустил свой расчет и посчитал, как быстрее всего добираться до каждой сети в нашем примере.

Продолжение доступно только участникам

Материалы из последних выпусков становятся доступны по отдельности только через два месяца после публикации. Чтобы продолжить чтение, необходимо стать участником сообщества «Xakep.ru».

Присоединяйся к сообществу «Xakep.ru»!

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», увеличит личную накопительную скидку и позволит накапливать профессиональный рейтинг Xakep Score! Подробнее

1 комментарий

  1. Аватар

    arnautovd

    02.06.2020 at 10:52

    Изучаю тему BGP в рамках курса сетевого администрирования. Интересно и полезно было узнать что-то новое о
    протоколе через призму информационной безопасности.

Оставить мнение