Mutually Agreed Norms for Routing Security (MANRS) to globalna inicjatywa, która pomaga w zwiększeniu bezpieczeństwa routingu oraz redukuje zagrożenia związane z atakami na sygnalizację w sieci Internet (https://www.manrs.org/). W ramach inicjatywy opracowano szereg zaleceń, z których jednym jest zapobieganie propagowania niewłaściwych informacji za pomocą protokołu BGP. Taką funkcjonalność można osiągnąć za pomocą kilku prostych i ogólnie dostępnych narzędzi.
W przypadku prototypowej usługi PIONIER-IX zastosowane zostały ansible, bgpq3 i skrypt python [1,2].
Za pomocą narzędzia bgpq3 pozyskiwana jest z bazy RIPE informacja na temat zarejestrowanych lub rozgłaszanych przez dany AS prefiksów. Informacje formatowane są w sposób właściwy dla wybranej platformy sprzętowej. Przykładowo dla sieci POZMAN wygląda to następująco:
Za pomocą bgpq3 można również wygenerować listę prefiksów dla zarejestrowanego w bazie RIPE macro:
Automatyzacja tego procesu będzie więc polegała „tylko” na określeniu jakie filtry mają być zbudowane oraz jak zaktualizować konfigurację routera. W tym celu można zastosować skrypt [2] lub jego modyfikację. Skrypt przeszukuje konfigurację routera pod kątem prefix-list o określonej nazwie i wykonuje odpowiednią aktualizację. Modyfikacja w przypadku route server’a PIONIER-IX polega na zawarciu w nazwie prefiks listy identyfikatora zastosowanego w RIPE macro oraz wykorzystaniu dynamic-db w systemie Junos.
W rezultacie konfiguracja routera wygląda następująco:
Same prefiksy podlegające aktualizacji są natomiast „schowane” w dynamic-db i nie „zaśmiecają” widoku konfiguracji głównej.
W analogiczny sposób można zbudować poprawną listę systemów AS, które spodziewamy się odbierać od sąsiada BGP:
Dodatkowo w przypadku wielu urządzeń, na których uruchomiono BGP, można wykorzystać anisble w celu stosowania zmian na kilku urządzeniach.
[1] How to Automatically Update Prefix Lists https://www.juniper.net/documentation/en_US/day-one-books/topics/topic-map/how-to-automatically-update-prefix-lists.html
[2] JUNOS-Automation-Cookbook/Chapter08/build-route-filters.py https://github.com/PacktPublishing/JUNOS-Automation-Cookbook/blob/master/Chapter08/build-route-filters.py
Tomasz Szewczyk