Co to jest uRPF?
uRPF odrzuca pakiety o sfałszowanym adresie źródłowym, porównując źródło z tablicą FIB routera. Wyjaśniamy tryb strict, loose i feasible-path.
Ostatnia aktualizacja:
uRPF (unicast Reverse Path Forwarding) to mechanizm filtrowania, w którym router sprawdza adres źródłowy przychodzącego pakietu względem własnej tablicy przekazywania (FIB) i odrzuca pakiet, jeśli trasa powrotna do tego źródła nie spełnia założonego warunku. To podstawowa technika obrony przed spoofingiem adresów IP. Opisuje ją RFC 3704 (BCP 84), które rozwija zalecenia filtrowania ruchu wejściowego z RFC 2827 (BCP 38).
Jak działa uRPF
Standardowy routing podejmuje decyzję na podstawie adresu docelowego pakietu. uRPF odwraca to pytanie i dla adresu źródłowego sprawdza, czy istnieje trasa powrotna oraz przez który interfejs router odesłałby ruch do tego źródła. Mechanizm korzysta z tej samej tablicy FIB, którą router już utrzymuje, więc działa sprzętowo, z pełną szybkością łącza. Nie wymaga przy tym osobnych list ACL, które trzeba byłoby aktualizować ręcznie przy każdej zmianie tras.
Tryb strict a tryb loose
uRPF działa w dwóch głównych trybach, które różnią się rygorem weryfikacji. Wybór trybu zależy od symetrii routingu na danym interfejsie.
- Tryb strict (ścisły): pakiet jest akceptowany tylko wtedy, gdy najlepsza trasa powrotna do adresu źródłowego prowadzi dokładnie przez ten interfejs, na którym pakiet przyszedł. Daje najsilniejszą ochronę, ale zawodzi przy routingu asymetrycznym i multihomingu.
- Tryb loose (luźny): pakiet jest akceptowany, jeśli dla adresu źródłowego istnieje w FIB jakakolwiek trasa inna niż null/odrzucająca, niezależnie od interfejsu wejściowego. Odrzuca głównie ruch z adresów nieroutowalnych i bogonów.
- Feasible-path (ścieżki dopuszczalne): rozszerzenie trybu strict, które akceptuje także trasy alternatywne, np. drugą najlepszą ścieżkę BGP, dzięki czemu łagodzi problem asymetrii.
- Loose z wyłączoną opcją allow-default: wariant, który dodatkowo odrzuca ruch pasujący tylko do trasy domyślnej (0.0.0.0/0). Zwiększa to skuteczność na styku z resztą Internetu.
uRPF a ochrona przed spoofingiem
Spoofing adresu źródłowego leży u podstaw wielu ataków, zwłaszcza wolumetrycznych ataków DDoS z odbiciem i wzmocnieniem (reflection/amplification), w których napastnik podszywa się pod adres ofiary. uRPF wdrożony na interfejsach klienckich (tryb strict) zatrzymuje taki ruch u samego źródła, zanim opuści sieć operatora. Na łączach do innych sieci, gdzie routing bywa asymetryczny, stosuje się zwykle tryb loose lub feasible-path, aby nie odrzucać poprawnego ruchu. uRPF to jeden z filarów inicjatywy MANRS dotyczącej higieny ruchu w sieciach operatorskich.
uRPF w sieci AS202520 SkyPass
W AS202520 SkyPass stosujemy uRPF jako element antyspoofingowej higieny sieci, zgodnej z BCP 38 i MANRS. Na portach klienckich tranzytu IP egzekwujemy tryb strict, dzięki czemu ruch wychodzący z naszej sieci nie zawiera sfałszowanych adresów źródłowych. Mechanizm uzupełnia naszą ochronę DDoS oraz filtrowanie tras (RPKI, IRR) na sesjach BGP w PoP w Warszawie i Wrocławiu oraz w punktach wymiany ruchu THINX, TPIX, WRIX i 1-IX. Jeśli odbierasz od nas tranzyt lub peering, uRPF na styku zmniejsza ryzyko, że Twoja przestrzeń adresowa zostanie nadużyta do podszywania się.
Najczęstsze pytania
Czym różni się tryb strict od loose w uRPF?
Tryb strict wymaga, aby najlepsza trasa powrotna do adresu źródłowego prowadziła przez ten sam interfejs, na którym przyszedł pakiet. Tryb loose sprawdza jedynie, czy dla źródła istnieje w FIB jakakolwiek trasa, niezależnie od interfejsu, więc dobrze nadaje się do łączy z asymetrycznym routingiem.
Czy uRPF psuje się przy multihomingu i routingu asymetrycznym?
Tryb strict tak, ponieważ ruch powrotny może wychodzić innym łączem, niż przyszedł. W takich miejscach stosuje się tryb loose albo wariant feasible-path, który akceptuje również trasy alternatywne.
Czy uRPF zastępuje BCP 38?
Nie, to jedna z metod realizacji BCP 38 (RFC 2827). uRPF (opisany w RFC 3704) automatyzuje filtrowanie wejściowe na podstawie FIB, ale w niektórych topologiach nadal warto uzupełnić go statycznymi listami ACL.
Gdzie powinno się włączać uRPF?
Tryb strict najlepiej sprawdza się na interfejsach klienckich i dostępowych, gdzie routing jest symetryczny i znana jest przypisana przestrzeń adresowa. Na łączach peeringowych i tranzytowych zwykle stosuje się tryb loose lub feasible-path.
