Protokół dynamicznego routingu

EIGRP to protokół dynamicznego routingu z rodziny IGP, czyli przeznaczony do wymiany informacji o podsieciach wewnątrz pojedynczego system autonomicznego. Jest to protokół wymyślony przez firmę Cisco i implementowany głównie na urządzeniach tej firmy. W 2013 roku firma ogłosiła, że protokół stanie się protokołem otwartym dostępnym dla wszystkich, co skutkowało ogłoszeniem standardu RFC7868 w 2016 roku. Mimo tej zmiany do dziś protokół ten używany jest przede wszystkim na urządzeniach firmy Cisco.

Protokół EIGRP wykorzystywany jest w wielu przedsiębiorstwach jako podstawowe protokoły routingu, a także w wielu sieciach WAN czy rozwiązaniach VPN. Pokażę ci zatem kilka Mechanizmów bezpieczeństwa, które musisz rozważyć, jeżeli planujesz wykorzystanie tego protokołu w swojej sieci.

Uwierzytelnienie sąsiada?

Jednym z podstawowych mechanizmów bezpieczeństwa w protokołach routingu jest możliwość weryfikacji sąsiedniego urządzenia. Weryfikacja taka ma potwierdzić autentyczność nadawcy komunikatu. Najprostszym mechanizmem jest zastosowanie współdzielonych haseł zakodowanych w konfiguracji urządzeń. W EIGRP współdzielone hasło zapisywane jest jako element każdej wiadomości generowanej przez protokół na danym urządzeniu. Nie jest ono jednak przesyłane jawnym tekstem, a jako hash MD5 lub w nowszych wersjach SHA. Protekcja za pomocą współdzielonego hasła ma zapobiec atakom polegającym ustanowieniu fałszywej relacji sąsiedztwa i wstrzyknięciu przez atakującego fałszywych informacji dotyczących routingu wpływając tym samym na stabilność tablicy routingu i ruch w sieci.

Konfiguracja uwierzytelniania sąsiada odbywa się za pomocą pęku kluczy (ang. key-chain). Metoda ta pozwala na konfigurację wielu kluczy, które rozróżniane są za pomocą unikalnych identyfikatorów, które muszą być zgodne dla obu sąsiadów. Bardzo przydatną opcją jest możliwość ustawienia daty ważności każdego z kluczy. Utworzony key-chain przypisujemy następnie z poziomu interfejsu biorącego udział w routingu EIGRP do określonych procesów identyfikowanych przez numer AS.

key chain KLUCZE
 key 1
  key-string test
interface GigabitEthernet0/1
ip address 10.0.0.9 255.255.255.252
 ip authentication mode eigrp 65530 md5
 ip authentication key-chain eigrp 65530 KLUCZE

K-values

Poniższa metoda nie jest stricte metodą bezpieczeństwa, ale pozwala utrudnić życie atakującemu. Protokół EIGRP wylicza metrykę (koszt) trasy za pomocą specjalnej funkcji. Może w tym wyliczeniu brać pod uwagę pięć parametrów – bandwidth (K1), Load (K2), Delay (K3), Reliability (K4) oraz MTU (K5). Każdy z parametrów „K” przyjmuje wartość 1 (parametr brany jest pod uwagę przy wyliczaniu metryki) lub 0 (parametr nie jest brany pod uwagę przy wyliczaniu metryki). Mimo, że jest tych parametrów aż pięć, to tak naprawdę tylko K1 i K3 mają wartość niezerową. A nawet i one nie mają przy obecnej szybkości i jakości łączy żadnego znaczenia. Ustawianie wartości bandwidth i delay odpowiednimi poleceniami w konfiguracji interfejsu służy obecnie jedynie sterowaniu ruchem w sieci (traffic-engineering).

Aby sąsiedztwo EIGRP się poprawnie nawiązało sąsiadujące ze sobą routery muszą używać tych samych wartości „K” do wyliczania metryki. Aktywne zobaczymy w wyniku polecenia show ip protocols.

iosv-0#show ip protocols
Routing Protocol is „eigrp 65530”
  EIGRP-IPv4 Protocol for AS(65530)
    Metric weight K1=1, K2=0, K3=1, K4=0, K5=0

Administratorzy jako mechanizm bezpieczeństwa bardzo często ustawiają wartość K3=0. Jedna metryka zazwyczaj jest wystarczająca do skonfigurowania polityk sterowania ruchem w EIGRP. Nietypowe ustawienie zaś utrudni zadanie atakującemu, który zapewne początkowo będzie próbował standardowych wartości parametrów „K”. Zmianę wprowadzamy na poziomie całego protokołu routingu.

router eigrp 65530
metric weights 0 1 0 0 0 0

Pierwszy parametr to wartość ToS, który zawsze musi być 0. Kolejne pięć to wartości K1..K5.

Jeżeli wartości „K” pomiędzy sąsiadami się nie zgadzają relacja sąsiedztwa nie zostanie nawiązana a na konsoli zobaczymy komunikat błędu

*Sep 4 20:08:04.828: %DUAL-5-NBRCHANGE: EIGRP-IPv4 65530:
Neighbor 10.0.0.9 (GigabitEthernet2) is down: K-value mismatch

Passive interface

Pasywne interfejsy to takie, których podsieci są rozgłaszane w ramach dynamicznego protokołu routingu, ale nie biorą udziału w zestawianiu relacji sąsiedztwa. Każdy komunikat protokołu routingu odebrany poprzez ten interfejs zostanie przez router zignorowany, żadna informacja nie jest też za jego pośrednictwem rozgłaszana.

Pasywne interfejsy występują w każdym protokole routingu z rodziny IGP. W protokole EIGRP interfejsy pasywne określamy z poziomu konfiguracji protokołu routingu.

router eigrp 65530
 network 10.0.0.0
 network 192.168.99.0
 passive-interface GigabitEthernet0/3

Dobrą praktyką bezpieczeństwa jest skonfigurowanie wszystkich interfejsów routera jako pasywnych, a następnie wyłączenie z konfiguracji jedynie wybranych, jasno przez nas określonych interfejsów. Dzięki temu gdybyśmy dodali nowy interfejs, który domyślnie zostanie umieszczony w topologii protokołu EIGRP zablokuje to możliwość przypadkowego zestawienia sąsiedztwa i potencjalnie negatywnego wpływu na działanie naszej sieci.

router eigrp 65530
 network 10.0.0.0
 network 192.168.99.0
 passive-interface default
 no passive-interface GigabitEthernet0/1