DHCP jest bardzo popularnym protokołem sieciowym, który wyręcza administratora w żmudnym przydzielaniu i kontrolowaniu adresacji IP. Niestety to, co często ułatwia życie administratorowi, potrafi nieść za sobą pewne zagrożenia. Ataki na infrastrukturę sieciową przeprowadzane wewnątrz sieci, choć rzadziej spotykane mogą stanowić istotny problem. Jednym z możliwych kierunków ataków w warstwie drugiej jest właśnie serwer DHCP.
Atak – DHCP Starvation
Na temat szczegółów funkcjonowania serwera DHCP możesz przeczytać w tym artykule. Warto się z nim zapoznać, jeśli nie pamiętasz na czym polega jego działanie. Przypomnę Ci tylko, że aby nowo podłączony do sieci host mógł automatycznie otrzymać adres IP z serwera DHCP musi wymienić się z nim serią komunikatów. Jeśli wszystko pójdzie bez przeszkód między urządzeniami zostaną wymienione 4 pakiety: DISCOVER, OFFER, REQUEST i ACKNOWLEDGEMENT. Serwer DHCP nie analizuje w żaden szczególny sposób otrzymywanych zapytań. Jego główną rolą jest po prostu zapewnienie hostom dostępu do sieci. Ta cecha protokołu DHCP powoduje, że jest on podatny na ataki sieciowe.
Jednym ze sposobów zakłócenia funkcjonowania usługi DHCP jest atak DHCP Starvation, co oznacza zagłodzenie. Jest to rodzaj ataku DoS (ang. Denial of service), który polega na całkowitym wykorzystaniu przez atakującego puli adresów IP dostępnych na serwerze DHCP. W konsekwencji pozostałe hosty nie mogą uzyskać dostępu do serwera, co skutkuje całkowitym odcięciem od usługi dynamicznego przydzielania adresów.
Przeprowadzenie ataku polega na sprawdzeniu możliwych do wykorzystania dynamicznych adresów IP, a następnie wysłaniu do serwera serii komunikatów DHCPDISCOVER z fałszywymi adresami MAC klientów. Serwer oczywiście odpowie na te wiadomości i przydzieli dostępne adresy IP do czasu aż wszystkie zostaną wydzierżawione. Warto pamiętać, że w przypadku domyślnych ustawień serwera DHCP dla urządzeń Cisco czas dzierżawy adresu DHCP wynosi 24h. Atak może więc spowodować spore zakłócenia w funkcjonowaniu sieci.
Atak – DHCP Spoofing
Po przeprowadzeniu DHCP Starvation atakujący może pójść krok dalej i podłączyć fałszywy serwer DHCP. Atak ten nazywa się DHCP Spoofing i umożliwia podsłuchiwanie ruchu sieciowego. Jest to więc typowy atak typu MITM – Man In the Middle. Hosty, które nie mogą uzyskać połączenia z prawdziwym serwerem, automatycznie skorzystają z oferty takiego wrogiego serwera DHCP.
Atakujący w tym momencie może wysłać do klientów odpowiednio przygotowany komunikat DHCPOFFER z fałszywymi parametrami konfiguracji. Zmiana bramy domyślnej na adres atakującego umożliwi mu przejęcie danych wymienianych przez hosty. W konfiguracji może być również zaszyty adres wrogiego serwera DNS, który będzie przekierowywać na serwery podszywające się pod legalne domeny. Do przeprowadzenia ataków na serwer DHCP można użyć narzędzi dostępnych powszechnie w Internecie jak dhcpstarv, dhcpig, Yersinia, Ettercap.
Obrona – DHCP Snooping
Skutecznym sposobem przeciwdziałania atakom na serwer DHCP jest funkcja DHCP Snooping.
Niestety podobnie brzmiące angielskie słowa spoofing i snooping mogą na początku spowodować, że pojęcia te będą się mylić – warto zapamiętać ich polskie znaczenie – „spoofing” to „podszywanie się 🥸”, a „snooping” to dosłownie „węszenie (nosem 🐽)”.
Podstawą działania tej funkcji jest przydzielenie poszczególnym portom na switchu statusu zaufanego trusted lub niezaufanego untrusted i odpowiednia weryfikacja przesyłanych na nie pakietów DHCP.
Do prawidłowego działania funkcja DHCP Snooping wykorzystuje tabelę powiązań DHCP (ang. binding table), która zawiera szczegółowe dane na temat każdego hosta:
- adres MAC;
- adres IP;
- czas dzierżawy (ang. lease time);
- typ powiązania (statyczny lub dynamiczny);
- numer VLAN;
- ID interfejsu.
Interfejsy o statusie trusted nie są sprawdzane i będą przepuszczać wszystkie komunikaty DHCP.
DHCP Snooping poddaje natomiast weryfikacji komunikaty DHCP na portach niezaufanych. Switch odrzuci pakiety w następujących sytuacjach:
- pojawienie się komunikatów generowanych przez serwer DHCP – DHCPOFFER, DHCPACK, DHCPNAK lub DHCPLEASEQUERY;
- otrzymanie wiadomości DHCPRELEASE lub DHCPDECLINE z innym adresem MAC niż przypisany w binding table do danego portu;
- gdy MAC adres hosta nie zgadza się z adresem zawartym w komunikacie DHCP (funkcja nie włączona domyślnie);
- pojawią się komunikaty DHCP, który zawierają adres IP Relay Agent inny niż 0.0.0.0.
Konfiguracja DHCP Snooping
Aby uruchomić podstawową inspekcję DHCP Snooping na urządzeniach Cisco należy wykonać tylko trzy polecenia konfiguracyjne:
- Włącz DHCP snooping globalnie:
Switch(config)# ip dhcp snooping
- Włącz DHCP snooping na wybranych VLANach:
Switch(config)# ip dhcp snooping vlan 10
- Zdefiniuj porty zaufane – domyślnie wszystkie porty są traktowane jako niezaufane:
Switch(config)# interface gigabitethernet0/0
Switch(config-if)# ip dhcp snooping trust
Switch(config-if)# exit
Dodatkowe opcje:
- Skonfiguruj limit komunikatów DHCP otrzymywanych na porcie untrusted w przedziale od 1 do 2048 pakietów na sekundę (domyślnie porty niezaufane mogą otrzymywać nieograniczoną ilość komunikatów DHCP Request, dzięki włączeniu tej opcji ograniczasz możliwość ataku DHCP Starvation):
Switch(config)# interface range gigabitethernet0/1 - 3
Switch(config-if-range)# ip dhcp snooping limit rate 10
Switch(config-if)# exit
2. Skonfiguruj sprawdzenie prawidłowości dopasowania adresu MAC klienta z adresem zawartym w komunikacie DHCP:
Switch(config)# interface range gigabitethernet0/1 - 3
Switch(config-if)# ip dhcp snooping verify mac-address
Switch(config-if)# exit
W domyślnych ustawieniach DHCP Snooping do pakietu DHCP DISCOVER dołączona jest tzw. opcja-82. Są w niej zawarte dodatkowe informacje, niezbędne do prawidłowej komunikacji, gdy serwer DHCP działa w trybie Relay Agent. Niektóre serwery DHCP mogą odrzucać wiadomości, jeśli to pole jest aktywne. Gdy po konfiguracji DHCP Snooping okaże się, że klient nie otrzymuje adresu od serwera należy dodatkowo skonfigurować globalnie polecenie:
Switch(config)#no ip dhcp snooping information option
Weryfikacja konfiguracji:
- Wyświetl informacje o konfiguracji DHCP snooping:
Switch# show ip dhcp snooping
Switch DHCP snooping is enabled
DHCP snooping is configured on following VLANs:
10
DHCP snooping is operational on following VLANs:
10
DHCP snooping is configured on the following L3 Interfaces:
Insertion of option 82 is enabled
circuit-id default format: vlan-mod-port
remote-id: 5000.0003.0000 (MAC)
Option 82 on untrusted port is not allowed
Verification of hwaddr field is enabled
Verification of giaddr field is enabled
DHCP snooping trust/rate is configured on the following Interfaces:
Interface Trusted Allow option Rate limit (pps)
----------------------- ------- ------------ ----------------
GigabitEthernet0/0 yes yes unlimited
Custom circuit-ids:
GigabitEthernet0/1 no no 10
Custom circuit-ids:
GigabitEthernet0/2 no no 10
Custom circuit-ids:
GigabitEthernet0/3 no no 10
Custom circuit-ids:
2. Wyświetl tabelę powiązań (binding table):
Switch# show ip dhcp snooping binding
MacAddress IpAddress nLease(sec) Type VLAN Interface
----------------- ------------- ----- ------------- ---- ----------------
00:50:79:66:68:04 192.168.1.13 86386 dhcp-snooping 1 GigabitEthernet0/3
00:50:79:66:68:07 192.168.1.12 83469 dhcp-snooping 1 GigabitEthernet0/2
00:50:79:66:68:08 192.168.1.11 83421 dhcp-snooping 1 GigabitEthernet0/1
Total number of bindings: 3
Weryfikacja adresu MAC
Jak wspomniałem wcześniej DHCP Snooping umożliwia sprawdzenie prawidłowości dopasowania adresu MAC klienta z adresem zawartym w komunikacie DHCP. Na urządzeniach Cisco ta opcja nie jest włączona domyślnie. Dlaczego warto ją włączyć? 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 #20. Rozwiń swoją wiedzę już teraz i zapisz się używając formularza poniżej.