Jak skonfigurować sesję BGP?
Bezpieczna konfiguracja sesji eBGP krok po kroku: filtry prefiksów, limit max-prefix, walidacja RPKI, filtrowanie bogonów i dobre praktyki MANRS.
Ostatnia aktualizacja:
Konfiguracja sesji BGP polega na nawiązaniu połączenia TCP na porcie 179 między dwoma routerami brzegowymi i wymianie tras zgodnie z uzgodnioną polityką. Bezpieczna sesja eBGP wymaga jednak znacznie więcej niż samego ustawienia adresu sąsiada i numeru AS. Bez filtrów prefiksów, limitu max-prefix oraz walidacji RPKI pojedynczy błąd po stronie partnera może wstrzyknąć do Twojej tablicy routingu setki tysięcy błędnych tras lub przekierować ruch. Poniżej opisujemy, jak skonfigurować sesję eBGP odporną na typowe błędy i ataki.
Podstawy: adresacja, ASN i uwierzytelnianie
Sesję eBGP nawiązuje się między dwoma systemami autonomicznymi o różnych numerach AS. Po obu stronach trzeba zdefiniować adres IP sąsiada (peera), jego numer AS oraz lokalny numer AS. Domyślnie eBGP ustawia wartość TTL równą 1, dlatego sąsiad musi być bezpośrednio połączony. Przy zdalnym peeringu stosuje się ttl-security lub ebgp-multihop. Dobrze jest włączyć uwierzytelnianie sesji oraz mechanizmy zwiększające jej stabilność.
- Uwierzytelnianie: hasło TCP-MD5 lub nowocześniejsze TCP-AO (RFC 5925) chroni sesję przed przejęciem połączenia TCP.
- GTSM (RFC 5082): weryfikacja TTL=255 utrudnia wstrzyknięcie pakietów BGP spoza bezpośredniego segmentu.
- BFD: szybkie wykrywanie awarii łącza w milisekundach, znacznie szybciej niż timery BGP (domyślny hold-time to 90 s).
- Numer AS i adres peera muszą zgadzać się z konfiguracją po drugiej stronie oraz z danymi w PeeringDB.
Filtry prefiksów i limit max-prefix
Najważniejszym elementem bezpiecznej sesji jest filtrowanie tras w obu kierunkach. Tras nie wolno akceptować ani ogłaszać bez jawnej polityki. Filtry prefiksów buduje się na podstawie obiektów IRR (AS-SET partnera), generując listę dozwolonych prefiksów narzędziami takimi jak bgpq4. Dla peeringów i klientów stosuje się ścisłe filtry oparte na IRR, natomiast od dostawcy tranzytowego przyjmuje się zwykle pełną tablicę. Każdą sesję trzeba też ograniczyć limitem max-prefix, który zamyka sesję, gdy partner ogłosi więcej tras niż uzgodniono. Chroni to przed wyciekami tras.
W kierunku wychodzącym ogłaszaj wyłącznie własne prefiksy i prefiksy klientów, dla których masz autoryzację, najlepiej w oparciu o tę samą bazę IRR. Pozwala to uniknąć przypadkowego stania się tranzytem dla cudzego ruchu, czyli klasycznego wycieku tras.
RPKI i filtrowanie bogonów
Walidacja RPKI (Route Origin Validation) pozwala odrzucać trasy oznaczone jako invalid, czyli takie, w których AS pochodzenia lub długość maski nie zgadzają się z podpisanym obiektem ROA. Wymaga to uruchomienia walidatora (np. Routinator, FORT lub rpki-client) i powiązania go z routerem przez protokół RTR. Stany valid i unknown (notfound) są akceptowane, a invalid odrzucane. Niezależnie od RPKI trzeba filtrować bogony, czyli adresy, które nigdy nie powinny pojawić się w globalnym routingu.
- Odrzucaj prefiksy z przestrzeni prywatnej i zarezerwowanej (RFC 1918, RFC 6890, RFC 6598).
- Odrzucaj prywatne numery AS w ścieżce (64512-65534 oraz 4200000000-4294967294).
- Filtruj prefiksy dłuższe niż /24 dla IPv4 i /48 dla IPv6, czyli typowy próg akceptacji.
- Odrzucaj trasy oznaczone przez RPKI jako invalid (drop invalids) zgodnie z zaleceniami MANRS.
- Stosuj BCP 38 i uRPF na brzegu, aby blokować ruch z fałszywym adresem źródłowym.
Sesje BGP z AS202520 SkyPass
AS202520 SkyPass utrzymuje sesje BGP zgodnie z opisanymi tu zasadami w obu PoP-ach, w Warszawie i Wrocławiu, oraz na polskich punktach wymiany ruchu w THINX, w TPIX, we WRIX i w 1-IX. Filtrujemy trasy w oparciu o IRR, walidujemy pochodzenie przez RPKI z polityką drop invalids, stosujemy limity max-prefix i filtrowanie bogonów na każdej sesji. Jeśli potrzebujesz peeringu, tranzytu IP z pełną tablicą lub zdalnego dostępu do IXP, pomożemy uzgodnić politykę i numery AS oraz uruchomić sesję w sposób bezpieczny dla obu stron.
Najczęstsze pytania
Czym różni się sesja eBGP od iBGP?
eBGP nawiązuje się między różnymi numerami AS i domyślnie ma TTL równy 1, więc sąsiad musi być bezpośrednio połączony. iBGP działa wewnątrz jednego AS i wymaga pełnej siatki połączeń lub route reflektorów.
Jaki limit max-prefix ustawić?
Dla peeringu ustaw wartość nieco powyżej liczby prefiksów partnera widocznej w PeeringDB lub w jego AS-SET. Dla pełnej tablicy od dostawcy tranzytowego limit ustawia się zwykle z zapasem powyżej rozmiaru globalnej tablicy (obecnie ponad 950 tys. tras IPv4).
Czy muszę odrzucać trasy invalid z RPKI?
Tak, polityka drop invalids jest zalecaną praktyką (MANRS) i jest bezpieczna, o ile najpierw poprawnie utworzysz własne obiekty ROA, aby nie unieważnić własnych prefiksów.
Skąd brać listę prefiksów do filtra?
Z obiektów IRR powiązanych z AS-SET partnera, generując filtr narzędziami takimi jak bgpq4 lub bgpq3. Filtry trzeba odświeżać regularnie, bo polityki i przydziały adresów się zmieniają.
