Myśląc o zabezpieczeniu sieci w pierwszej kolejności zapewne przychodzi nam do głowy ochrona przed atakami z zewnątrz. W przypadku większych sieci, szczególnie tych korporacyjnych, okazuje się, że zagrożenie potrafi być często bardzo poważne również w sieci lokalnej. Pracownicy podkupieni przez konkurencję w celu wykradzenia wrażliwych danych, czy administrator chcący zemścić się na pracodawcy za wręczone wypowiedzenie to niestety nie są historie wyssane z palca. Dzisiaj przyjrzymy się jednemu z możliwych ataków i zobaczymy w jaki sposób możemy zabezpieczyć przed nim switche Cisco.
Czym jest ARP?
W artykule na temat podstaw ARP omówiliśmy w szczegółach działanie protokołu ARP. Jeśli nie kojarzysz podstaw działania tego protokołu to możesz się z nimi zapoznać tutaj. W skrócie chciałbym szybko przypomnieć podstawowe mechanizmy.
Hosty komunikujące się w ramach różnych sieci muszą znać przede wszystkim swój adres IP. W przypadku komunikacji między hostami wewnątrz sieci lokalnej niezbędny jest jeszcze adres MAC, nazywano często adresem fizycznym urządzenia. To on faktycznie umożliwia komunikację w ramach podsieci.
Nawet jeśli klient będzie znać adres IP, to niewiele będzie mógł zrobić bez znajomości adresu MAC. W tym celu wysyła on żądanie ARP (ang. ARP Request). Jest to wiadomość typu broadcast, trafi więc do wszystkich hostów w domenie rozgłoszeniowej. Na to żądanie zostanie wysłana odpowiedź ARP (ang. ARP Reply). Odpowiedź wyśle tylko jeden host – ten, do którego było zwrócone żądanie – reszta urządzeń w LAN po prostu odrzuci wiadomość.
Co ważne, klient zwróci odpowiedź zawierającą jego własny adres IP, więc w tym momencie obydwa hosty znają już zarówno swój adres IP jak i MAC. Taka informacja może przydać się na później – bardzo prawdopodobne, że między klientami będą wymieniane jeszcze inne informacje. Z pomocą przychodzi tu tabela ARP, która zawiera po prostu mapowanie adresów IP na odpowiadające im adresy MAC.
Ataki ARP
Zgodnie z protokołem ARP wszystkie urządzenia podłączone do sieci automatycznie zapisują w tabeli ARP każdą otrzymaną odpowiedź. Niestety robią to bez uwierzytelniania jej źródła. Co gorsze może tak się dziać, nawet jak host nie wysłał wiadomości ARP Request. ARP przewiduje możliwość wysyłania przez hosty ARP „grzecznościowego” (ang. Gratuituous ARP), zwanego również GARP. Jest to komunikat ARP Reply, ale wysłany bez otrzymania żądania. W standardowym działaniu sieci mechanizm ten może być przydatny np. jeśli host zmienił adres IP. Powoduje on jednak, że tak naprawdę każdy klient może podać się za posiadacza dowolnego adresu MAC.
Mechanizm ten może zostać wykorzystany do przeprowadzeniu ataku zwanego ARP Spoofing lub ARP Cache Poisoning. Terminy te dotyczą tego samego rodzaju ataku i mogą być używane zamiennie. Spoofing oznacza czynności wykonane przez atakującego, czyli podszycie się pod inny adres MAC, natomiast cache poisoning to efekt spoofingu, czyli „zatrucie” tabeli ARP.
Przyjrzyjmy się temu dokładniej:
Widzimy tutaj prostą sieć LAN do której podłączony jest Host o adresie IP 10.0.0.10 z adresem MAC aa:aa (adresy MAC zostały uproszczone dla lepszej czytelności) oraz Router o adresie 10.0.0.20 z adresem MAC bb:bb. Komunikacja między Hostem, a Routerem jest niezakłócona, Router jest dla Hosta bramą domyślną, więc umożliwia mu komunikację z Internetem.
W sieci LAN pojawia się atakujący. Podpina się do wolnego portu w Switchu. W pierwszej kolejności oczywiście dokona skanowania sieci (np. przy użyciu nmap), aby wiedzieć, jakie urządzenia są podłączone w LAN. Teraz może wysłać do swoich ofiar fałszywe komunikaty GARP, które będą wskazywać, że hosty o adresie MAC aa:aa i bb:bb dostępne są pod adresem MAC cc:cc. Przeprowadzenie ARP Spoofing nie jest szczególnie trudne, ponieważ istnieje wiele darmowych narzędzi typu open-source umożliwiających wykonanie tego ataku, np. arpspoof, Arpoison czy Cain & Abel.
Po przeprowadzonym ataku wpisy w Tabeli ARP Hosta i Routera zostają zaktualizowane. Powoduje to powiązanie adresu MAC atakującego z adresem IP autentycznych hostów. Od tego momentu cały ruch między Hostem, a Routerem będzie przekierowywany do atakującego.
ARP Spoofing umożliwia różne formy ataku:
- MITM, czyli „Man In The Middle” – atakujący może analizować i modyfikować ruch ofiary w sposób zupełnie dla niej niewidoczny – może przechwycić pliki cookie ofiary i dokonać przejęcia sesji (ang. session hijacking) co może umożliwić mu uzyskanie dostępu do kont w serwisach internetowych czy przejęcie numerów kont bankowych.
- DoS (ang. Denial Of Service) – atakujący poprzez rozesłanie fałszywych wiadomości GARP może przekierować ruch ze wszystkich hostów w sieci np. do serwera, co spowoduje jego przeciążenie i odcięcie od sieci.
Dynamic ARP Inspection
Skutecznym sposobem ochrony sieci przed atakami ARP jest włączenie na switchach Cisco funkcji Dynamic ARP Inspection, w skrócie DAI.
DAI pozwala na sprawdzenie prawidłowości powiązań adresów IP z MAC. W przypadku adresów przydzielanych dynamicznie przez serwer DHCP wykorzystuje do tego tabelę powiązań tworzonych przez funkcję DHCP Snooping. Dla adresów statycznych niezbędne jest stworzenie access listy, która wskaże powiązanie IP-MAC.
Inspekcja ARP dzieli porty na dwa stany:
- zaufane – ang. Trusted
- niezaufane – ang. Untrusted
Porty zaufane nie będą podlegać inspekcji pakietów ARP. Będą do nich podłączone urządzenia, które najczęściej znajdują się pod kontrolą administratora, czyli switche, routery czy serwery. Pozostałe interfejsy posiadają status niezaufany i na nich przechwytywane są już wszystkie komunikaty ARP Request i Reply. Jeśli na taki port trafi fałszywy pakiet ARP to zostaje on odrzucony. DAI może być włączony na portach access i trunk, jak również skonfigurowanych jako EtherChannel i private VLAN.
Inspekcja ARP ponadto umożliwia blokowanie portów po przekroczeniu określonego limitu pakietów ARP oraz zapisywanie w logach każdego odrzuconego pakietu ARP.
Zobaczmy jak wygląda konfiguracja DAI na switchach Cisco. W pierwszej kolejności przyjrzymy się konfiguracji korzystającej z adresacji DHCP, następnie uruchomimy inspekcję dla adresów statycznych:
Konfiguracja DAI dla DHCP
- Określ zakres VLAN, dla którego będzie wykonywana inspekcja. Może to być pojedynczy VLAN lub więcej – w zakresie od 1 do 4094:
Switch(config)# ip arp inspection vlan 10
2. Włącz funkcję DHCP snooping globalnie, a następnie DHCP snooping i ARP inspection na wskazanych VLANach:
Switch(config)# ip dhcp snooping
Switch(config)# ip dhcp snooping vlan 10
Switch(config)# ip arp inspection vlan 10
3. Ustaw relacje zaufania na wybranych portach:
Switch(config)# interface gigabitethernet2/0/1
Switch(config-if)# ip dhcp snooping trust
Switch(config-if)# ip arp inspection trust
4. Sprawdź poprawność działania DAI:
Switch# show ip arp inspection interfaces
Switch# show ip arp inspection vlan 10
5. Zweryfikuj powiązania adresów:
Switch# show ip dhcp snooping binding
6. Sprawdź czy zostały odrzucone pakiety ARP:
Switch# show ip arp inspection statistics vlan 10
Konfiguracja DAI dla adresów statycznych
- Określ zakres VLAN, dla którego będzie wykonywana inspekcja:
Switch(config)# ip arp inspection vlan 10
2. Stwórz access listę ARP:
Switch(config)# arp access-list host1
3. Skonfiguruj powiązania adresów IP z MAC dla wszystkich hostów:
Switch(config-acl )# permit ip host 10.0.0.10 mac host aaaa.aaaa.aaaa
Switch(config-acl)# exit
4. Przypisz access listę do DAI:
Switch(config)# ip arp inspection filter host1 vlan 10
5. Sprawdź poprawność działania DAI:
Switch# show ip arp inspection interfaces
Switch# show ip arp inspection vlan 10
6. Sprawdź powiązania adresów:
Switch# show arp access-list host1
7. Sprawdź czy zostały odrzucone pakiety ARP:
Switch# show ip arp inspection statistics vlan 10
Ochrona przed atakiem DoS
Ustawienie limitu odbieranych pakietów ARP jest metodą, która w przypadku ARP Spoofing umożliwia obronę przed atakiem DoS. Przeczytasz o tym w naszym darmowym NSSletterze – mailingu dla sieciowców głodnych wiedzy.
Dołączając uzyskasz dostęp również do archiwum – tematykę tego artykułu rozszerzyliśmy w NSSletterze #18. Rozwiń swoją wiedzę już teraz i zapisz się używając formularza poniżej.