Фильтрация BGP 2026: Полное практическое руководство для защиты сети | AdminWiki

Фильтрация BGP 2026: Полное практическое руководство для защиты сети

16 июля 2026 9 мин. чтения

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

Вы получите рабочие примеры фильтров для разных вендоров, научитесь настраивать RPKI-валидатор и автоматизировать поддержку правил через IRR. Эти меры напрямую влияют на стабильность работы ваших сервисов и защищают бизнес от финансовых и репутационных потерь.

Зачем нужна фильтрация BGP: Риски и последствия игнорирования

BGP работает на доверии между автономными системами. По умолчанию маршрутизатор принимает и распространяет любые анонсы от соседей. Это фундаментальная уязвимость протокола. Ошибочная конфигурация на одном устройстве может вызвать глобальный сбой.

В 2008 году пакистанский провайдер пытался заблокировать YouTube внутри своей страны, анонсировав более специфичный маршрут к префиксам видеохостинга. Из-за отсутствия фильтрации на границе этот анонс распространился по всему миру. Трафик к YouTube перенаправлялся в Пакистан и терялся, вызывая многочасовой простой сервиса. Подобные инциденты повторялись с AS7007 в 1997 году, с российским провайдером в 2017-м, затрагивая работу Amazon, Cloudflare и других крупных платформ.

Финансовые последствия таких инцидентов измеряются сотнями тысяч долларов упущенной выгоды и затратами на восстановление. Репутационные потери еще значительнее. Клиенты теряют доверие к компании, чья сеть стала источником проблемы. В 2026 году угрозы эволюционировали. Базовых фильтров по префиксам уже недостаточно. Злоумышленники используют методы, обходящие простые проверки, что делает внедрение криптографической валидации через RPKI критически важным.

Базовые инструменты фильтрации: Готовые конфигурации prefix-list, as-path-list и route-map

Это основа, которую нужно внедрить немедленно. Приведенные ниже конфигурации блокируют наиболее распространенные ошибочные и злонамеренные анонсы.

Prefix-list: Фильтрация по префиксам сети

Prefix-list определяет, какие IP-префиксы разрешены или запрещены. Следующие списки должны применяться на всех входящих BGP-сессиях.

Актуальный список запрещенных (bogon) префиксов на 2026 год:

  • 0.0.0.0/0 - default-route (запрещен на приеме от провайдеров/пиров).
  • Частные пространства RFC 1918: 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16.
  • Пространства для документирования (TEST-NET): 192.0.2.0/24, 198.51.100.0/24, 203.0.113.0/24.
  • Зарезервированные IANA: 240.0.0.0/4 (заброшенное класс E).
  • Мультикаст-префиксы: 224.0.0.0/4.
  • Префиксы длиннее /24 (для IPv4) или /48 (для IPv6) от провайдеров транзитного уровня.

Пример для Cisco IOS XE (входящая фильтрация):

ip prefix-list BOGON-v4 seq 5 deny 0.0.0.0/0 le 32
ip prefix-list BOGON-v4 seq 10 deny 10.0.0.0/8 le 32
ip prefix-list BOGON-v4 seq 15 deny 172.16.0.0/12 le 32
ip prefix-list BOGON-v4 seq 20 deny 192.168.0.0/16 le 32
ip prefix-list BOGON-v4 seq 25 deny 192.0.2.0/24 le 32
ip prefix-list BOGON-v4 seq 30 deny 224.0.0.0/4 le 32
ip prefix-list BOGON-v4 seq 35 deny 240.0.0.0/4 le 32
ip prefix-list BOGON-v4 seq 40 permit 0.0.0.0/0 ge 8 le 24

Примените этот prefix-list к входящим сессиям с провайдерами с помощью route-map.

As-path-list: Контроль пути AS

As-path-list фильтрует маршруты на основе последовательности автономных систем в атрибуте AS_PATH. Ключевые задачи: не принимать маршруты, где ваш AS уже присутствует в пути (loop), и блокировать транзит через частные AS.

Готовые регулярные выражения:

  • ^.*_64512_|_64513_|_64514_|_65000_|_65100_.*$ - Блокировка путей, содержащих частные AS номера (64512-65534). Частные AS не должны появляться в глобальной таблице маршрутизации.
  • ^.*_YOUR_AS_NUMBER_.*$ - Блокировка маршрутов, где ваш собственный AS номер уже есть в пути. Это предотвращает маршрутные петли.
  • ^$ - Пустой AS_PATH (маршруты, анонсированные внутри вашей AS, например, через iBGP). Обычно разрешены.
  • ^_PROVIDER_AS_$ - Разрешить только маршруты, идущие напрямую от вашего провайдера (путь состоит только из его AS). Полезно для клиентских подключений.

Пример для Juniper JunOS:

policy-options {
    as-path-group BAD_AS_PATHS {
        as-path p1 "^.*(64512|64513|65000).*$";
        as-path p2 "^.*_YOUR_AS_12345_.*$";
    }
    policy-statement FILTER-IN {
        term REJECT-BAD-AS-PATH {
            from as-path-group BAD_AS_PATHS;
            then reject;
        }
        term ACCEPT-OTHER {
            then accept;
        }
    }
}

Route-map: Сборка логики фильтрации

Route-map связывает prefix-list, as-path-list и другие условия в единую последовательность принятия решений. Логика должна быть детерминированной.

Типичная структура route-map для входящего трафика (Cisco):

route-map RM-CLIENT-IN deny 10
 match ip address prefix-list BOGON-v4
!
route-map RM-CLIENT-IN deny 20
 match as-path 100  # AS-path-list с частными AS
!
route-map RM-CLIENT-IN permit 30
 match ip address prefix-list CUSTOMER-PREFIXES  # Только префиксы клиента
!
route-map RM-CLIENT-IN deny 40  # Явный запрет всего остального

Примените route-map к соседству:

router bgp 12345
 neighbor 192.0.2.1 route-map RM-CLIENT-IN in

Для разных сценариев (прием от транзитного провайдера, пиринг, анонс клиентам) логика route-map будет отличаться. Например, на исходящих сессиях к клиентам вы должны анонсировать только свои собственные префиксы и строго запрещать default-route. Подробные сценарии рассмотрены в разделе про практическую настройку BGP для мультихостинга.

Современный стандарт: Внедрение RPKI (ROV) для валидации прав на анонсы

RPKI (Resource Public Key Infrastructure) решает фундаментальную проблему BGP: отсутствие криптографической проверки прав на анонс префикса. Владелец IP-адресного блока создает криптографическую подпись (Route Origin Authorization, ROA), которая указывает, какая автономная система имеет право анонсировать его префиксы. Маршрутизаторы, подключенные к RPKI-валидатору, могут проверять соответствие полученных анонсов этим подписям и присваивать маршрутам атрибут validity: valid, not-found или invalid.

Внедрение RPKI Origin Validation (ROV) - это поэтапный процесс.

Пошаговая настройка RPKI-валидатора (Routinator)

Routinator - это эталонная реализация RPKI-валидатора от NLnet Labs. Установка на Ubuntu/Debian:

# 1. Установка
sudo apt update
sudo apt install routinator

# 2. Инициализация репозитория доверия (Trust Anchor Locator)
sudo routinator init

# 3. Запуск валидации (первый запуск загружает все данные, это может занять время)
sudo routinator -v server --rtr 192.0.2.100:3323 --http 192.0.2.100:9556

Настройте systemd-сервис для автозапуска. Файл /etc/systemd/system/routinator.service:

[Unit]
Description=Routinator RPKI Validator
After=network.target

[Service]
ExecStart=/usr/bin/routinator server --rtr 192.0.2.100:3323
Restart=always
User=routinator

[Install]
WantedBy=multi-user.target

Проверьте работу, запросив данные через HTTP-интерфейс: curl http://192.0.2.100:9556/api/v1/validity/AS12345/192.0.2.0/24 или просмотрев логи journalctl -u routinator.

Интеграция RPKI с BGP на оборудовании Cisco и Juniper

После запуска валидатора нужно настроить маршрутизатор на подключение к нему по протоколу RTR (RPKI-to-Router).

Для Cisco IOS XR:

rpki server 192.0.2.100
  port 3323
  refresh time 30
  response-time 10
  shutdown
  !
  no shutdown
!
router bgp 12345
 rpki origin-as validation enable
 !
 neighbor 203.0.113.1
  remote-as 65432
  address-family ipv4 unicast
   rpki origin-as validation signal enable
  !
 !
!

Создайте policy, которая отклоняет маршруты с состоянием invalid:

route-policy RPKI-VALIDATION
  if validation-state is invalid then
    drop
  else
    pass
  endif
end-policy

router bgp 12345
 neighbor 203.0.113.1 address-family ipv4 unicast
  route-policy RPKI-VALIDATION in
 !
!

Для Juniper JunOS:

routing-options {
    validation {
        group RPKI-GROUP {
            session 192.0.2.100 {
                port 3323;
                local-address 192.0.2.254;
            }
        }
    }
}
policy-options {
    policy-statement RPKI-FILTER {
        term REJECT-INVALID {
            from {
                protocol bgp;
                validation-database invalid;
            }
            then reject;
        }
        term ACCEPT-OTHER {
            then accept;
        }
    }
}
protocols bgp {
    group EXTERNAL {
        import RPKI-FILTER;
        neighbor 203.0.113.1 { ... }
    }
}

После настройки проверьте состояние сессии: на Cisco командой show rpki server, на Juniper - show validation session. Маршруты с атрибутом invalid будут отклоняться.

Автоматизация и расширение: Работа с IRR и генерация фильтров через bgpq3

IRR (Internet Routing Registry) - это распределенная база данных, где сети публикуют информацию о своих префиксах и политиках маршрутизации. Хотя данные в IRR не криптографически проверены, как в RPKI, они широко используются для автоматической генерации фильтров.

Утилита bgpq3 обращается к IRR и генерирует конфигурационные списки на основе зарегистрированных объектов (aut-num, route-set).

Установка и базовое использование:

# Установка на Ubuntu/Debian
sudo apt install bgpq3

# Генерация prefix-list для AS12345
bgpq3 -l "PREFIX-AS12345" -3 AS12345

# Генерация as-path-list, разрешающей транзит только через AS12345 и AS65432
bgpq3 -j -l "AS-PATH-TRANSIT" -3 "^((12345|65432)_)*$"

Создайте простой скрипт для cron, который будет обновлять конфигурацию и загружать её на маршрутизатор. Пример скрипта для Mikrotik RouterOS (использует SSH):

#!/bin/bash
# Генерация списка адресов для Mikrotik
bgpq3 -m 24 -l "IRR-AS12345" -3 AS12345 > /tmp/irr-list.rsc

# Добавление заголовка для RouterOS
echo "/ip firewall address-list remove [find list=IRR-AS12345]" > /tmp/update.rsc
echo "/ip firewall address-list" >> /tmp/update.rsc
cat /tmp/irr-list.rsc | sed 's/^ip prefix-list IRR-AS12345 permit //' | while read line; do
  echo ":do { add address=$line list=IRR-AS12345 } on-error={}" >> /tmp/update.rsc
done

# Загрузка на маршрутизатор
ssh admin@192.0.2.1 "< /tmp/update.rsc"

Этот подход позволяет поддерживать фильтры актуальными при изменении пула IP-адресов у клиента или партнера.

Практические сценарии для разных типов сетей

Логика фильтрации зависит от вашей роли в интернете. Вот сводные рекомендации.

1. Для транзитного провайдера:

  • Входящая фильтрация от клиентов: Принимайте только те префиксы, которые принадлежат клиенту (проверяется по IRR или договору). Строго запрещайте default-route и bogon-префиксы. Внедрите RPKI с политикой reject-invalid.
  • Исходящая фильтрация к клиентам: Анонсируйте только полную таблицу маршрутов или default-route, согласно договору. Никогда не транзитируйте трафик между клиентами без явного соглашения.

2. Для сети на пиринговой точке (IXP):

  • Входящая фильтрация от пиров: Принимайте только глобально маршрутизируемые префиксы (не bogon). Можно использовать максимальную длину префикса /24 для IPv4. RPKI рекомендуется.
  • Исходящая фильтрация к пирам: Анонсируйте только свои собственные префиксы. Используйте as-path-list, чтобы гарантировать, что ваш AS является единственным в пути (^12345$).

3. Для корпоративной сети с мультихостингом:

  • Входящая фильтрация от провайдеров: Применяйте strict RPKI (reject-invalid). Фильтруйте bogon-префиксы и префиксы длиннее /24. Это защитит ваши внутренние маршрутизаторы от переполнения таблиц.
  • Исходящая фильтрация к провайдерам: Анонсируйте только свои корпоративные префиксы. Используйте as-path prepend и local-preference для управления исходящим трафиком, как описано в руководстве по multi-homing на Linux.

Диагностика, мониторинг и поддержание актуальности

Настройка фильтров - это не разовое действие. Систему нужно контролировать и периодически обновлять.

Ключевые команды для диагностики:

  • Cisco: show bgp ipv4 unicast neighbors 203.0.113.1 advertised-routes - что мы анонсируем соседу. show bgp ipv4 unicast neighbors 203.0.113.1 routes - что мы получили от соседа. show bgp ipv4 unicast 192.0.2.0/24 - просмотр атрибутов конкретного маршрута, включая validation-state.
  • Juniper: show route receive-protocol bgp 203.0.113.1 - полученные маршруты. show route advertising-protocol bgp 203.0.113.1 - анонсируемые маршруты. show route validation state invalid - список невалидных маршрутов.
  • Mikrotik: /routing bgp advertisements print и /routing bgp peer print stats.

Мониторинг состояния RPKI: Настройте проверку доступности RTR-сессии. Простой скрипт для Prometheus может использовать snmp_exporter или напрямую опрашивать маршрутизатор. Критически важно настраивать алерты на сброс RPKI-сессии или на появление в таблице маршрутизации записей с состоянием invalid.

Для комплексного мониторинга BGP-сессий, утечек и доступности префиксов используйте специализированные решения, описанные в статье про мониторинг BGP и настройку алертинга в Prometheus.

График поддержания актуальности:

  • Ежедневно: Проверка алертов от системы мониторинга.
  • Еженедельно: Аудит логов на предмет отклоненных маршрутов (invalid RPKI, blocked by prefix-list).
  • Ежеквартально: Ревизия и обновление bogon-списков (они меняются редко, но меняются). Проверка и обновление скриптов, генерирующих фильтры из IRR. Аудит ROA в RPKI для собственных префиксов.

Фильтрация BGP - это непрерывный процесс. Начните с внедрения готовых базовых конфигураций из этого руководства, затем перейдите к настройке RPKI. Автоматизируйте рутинные задачи с помощью IRR и скриптов. Это инвестиция в стабильность и безопасность вашей сетевой инфраструктуры, которая окупится предотвращением даже одного серьезного инцидента.

Для глубокого понимания принципов работы сетевых протоколов, лежащих в основе BGP и фильтрации, изучите полное руководство по протоколам маршрутизации BGP и OSPF. А для защиты всей инфраструктуры на уровне приложений ознакомьтесь с современными методами защиты от DDoS-атак.

Помните, что надежная инфраструктура начинается с правильных инструментов. Для развертывания и тестирования конфигураций из этой статьи вам может потребоваться облачная платформа, например, Timeweb Cloud, которая предоставляет гибкие виртуальные серверы и сети. А для автоматизации создания технического контента и документации рассмотрите сервисы вроде Lidbiz или агрегаторы ИИ-моделей, такие как AiTunnel.

Поделиться:
Сохранить гайд? В закладки браузера