DHCP Snooping

Uvod

Čitanjem ovog članka videćete kompletnu simulaciju napada koji uključuje DHCP protokol u okviru bezbednog GNS3 okruženja, a takođete ćete naučiti tri tehnike odbrane od njega.

Dynamic Host Configuration Protocol (DHCP) je protokol za upravljanje mrežom koji se koristi da automatizuje proces konfigurisanja uređaja na IP mrežama, omogućavajući im da koriste mrežne usluge. Na mreži mora postojati DHCP server koji klijentskim uređajima (hosts) automatski dodeljuje IP adrese, podrazumevane mrežne prolaze (gateways) i druge mrežne parametre koristeći DHCP protokol.

DHCP Snooping je sigurnosna tehnologija sloja veze podataka ugrađena u operativni sistem switch-a koji je sposoban da ne propušta DHCP saobraćaj za koji je utvrđeno da je neprihvatljiv. Dakle, DHCP Snooping sprečava neovlašćene (rouge) DHCP servere da dodeljuju IP adrese klijentskim uređajima.

Kako funkcioniše DHCP Snooping?

Kako bismo shvatili kako funkcioniše ova sigurnosna tehnologija, potrebno je da se podsetimo DHCP mehanizma.

Kada klijentski uređaj (host) želi da se „prikači“ na mrežu, on će komunicirati sa DHCP serverom u četiri faze kako bi dobio IP adresu:

1. Faza otkrivanja. Klijentski uređaj broadcast-uje (šalje svima na mreži) DHCP Discover poruku u nadi da će pronaći DHCP server koji će odrediti njegovu konfiguraciju.

2. Faza ponude. Kada DHCP server primi DCHP Discover poruku, na njega odgovara tako što šalje DHCP Offer poruku. Tada server rezerviše jednu IP adresu za klijenta. S obzirom da klijent još uvek nema IP adresu, server takođe vrši broadcast i popunjava polje clientID MAC adresom klijentskog uređaja kojem je ova poruka namenjena.

3. Faza zahteva. Klijent, nakon što mu stigne DHCP Offer, broadcast-uje DHCP Request poruku i na taj način javlja odgovarajućem serveru da želi da koristi njegovu konfiguraciju, ali i ostalim serverima (u slučaju više DHCP Offer poruka) da mogu da oslobode rezervisane IP adrese.

4. Faza potvrde. Server šalje klijentu DHCP ACK poruku i daje mu do znanja da je proces konfiguracije gotov i da može da koristi dodeljenu konfiguraciju.

Sada, kada smo se podsetili kako radi DHCP, možemo da objasnimo kako funkcioniše DHCP Snooping koji uopšteno grupiše interfejse na switch-u na autorizovane i neautorizovane priključke (ports). Autorizovani port je port ili izvor čije su DHCP poruke validne, u suprotnom je neautorizovan. Ukoliko je DHCP Snooping pokrenut, DHCP offer poruka se može poslati samo preko autorizovanog port-a, u suprotnom će biti odbačena.

U fazi potvrde biće napravljena DHCP binding tabela prema sadržaju DHCP ACK poruke. U tabeli se čuva MAC adresa klijentskog uređaja, iznajmljena IP adresa, vreme zakupa adrese, tip vezivanja adrese, kojoj virtuelnoj lokalnoj mreži (VLAN) pripada kao i kom interfejsu pripada. Kasnije ćemo videti koja komanda nam omogućava uvid u ovu tabelu.

DHCP Snooping sprečava da napadač odgovori na DHCP zahtev pokušavajući da se predstavi kao podrazumevani gateway, što predstavlja man in the middle napad. Na ovaj način napadači presreću saobraćaj od korisnika pre prosleđivanja saobraćaja stvarnom gateway-u. U nastavku će biti prikazano kako omogućiti DHCP Snooping i zato krenimo prvo sa podešavanjem okruženja.

Podešavanje okruženja

Za postavljanje DHCP Snooping-a potreban je GNS3 mrežni emulator. Za Windows platformu je potrebna virtuelna mašina, pa ćemo koristiti VMware Workstation kako bismo je pokrenuli. Na Linux distribucijama nije potrebna virtuelna mašina. U ovom članku koristili smo Windows platformu. Kako GNS3 okruženje nema rutere i switch-eve sa konzolom, potrebno je da ih obezbedimo. CISCO ruter i switch možete pronaći ovde. Licencu možete kupiti na zvaničnom sajtu. Sada kada smo preuzeli sve što je potrebno, možemo krenuti sa instalacijom. Prvo instalirajte VMWare, a zatim GNS3. Prilikom instalacije GNS-a biće ponuđena instalacija NPcap-a i WinPCap-a i potrebno je da to prihvatite. Prilikom prvog pokretanja GNS-a pojaviće se prozor za podešavanje virtuelne mašine kao na slikama ispod.

Čim završimo sa podešavanjem, pokrenuće se VMware Workstation sa pokrenutom virtuelnom mašinom. Neophodno je da verzije GNS3 i GNS3 VM budu iste!

Konačno, možemo da dodamo ruter i switch u GNS3 tako što idemo na Edit -> Preferences -> IOS on UNIX i tu dodamo kupljenu licencu.

Sada idemo na podsekciju IOU Devices i biramo opciju New kako bismo dodali image fajlove CISCO rutera i switch-a.

Implementacija DHCP Snooping-a

Napravimo u okviru GNS-a nov projekat, a zatim i šemu sa slike.

Koristimo dva klijentska uređaja (host-a), switch, jedan ovlašćen ruter i jedan rogue (neovlašćen). Sada je potrebno da pokrenemo i konfigurišemo mrežu. Nakon pokretanja u gornjem levom uglu biramo opciju Console connect to all nodes kako bismo pokrenuli konzole za svaki čvor.

Podešavanje rutera

Krećemo sa konfiguracijom rutera IOU3 (trusted), a zatim IOU4 (rogue). Izvršavamo sledeće komande:

IOU3#config t – globalna konfiguracija
IOU3(config)#hostname R1 – Menja hostname
R1(config)#int e0/0 – ulazimo u podešavanja interfejsa
R1(config-if)#ip add 10.1.1.1 255.255.255.0 – podešavamo IP adresu i masku
R1(config-if)#no shut – uključujemo interfejs
R1(config-if)#exit Isto podešavamo i za ruter IOU4, sem što će njegov naziv biti R2 i IP adresa 10.1.1.2.

Pre nego što nastavimo dalje, treba da definišemo pojam DHCP Pool-a. DHCP Pool predstavlja konfiguraciju koju će DHCP server koristiti prilikom iznajmljivanja IP adresa. Sada hajde da podesimo DHCP Pool.

Konfiguracija DHCP Pool-a na ruteru R1:

R1#config t
R1(config)#!Enable DHCP pool
R1(config)#ip dhcp pool R1pool – pravimo DHCP Pool sa imenom R1pool i ulazimo u podešavanja DHCP-a
R1(dhcp-config)#network 10.1.1.0 255.255.255.0 – ova komanda podešava adresu mreže i masku
R1(dhcp-config)#default-router 10.1.1.1 – definiše gateway preko kojeg DHCP klijent „izlazi“ na internet
R1(config-if)#exit
Konfiguracija DHCP Pool-a na ruteru R2:

R1#config t
R1(config)#!Enable DHCP pool
R1(config)#ip dhcp pool R2pool
R1(dhcp-config)#network 10.1.1.0 255.255.255.0
R1(dhcp-config)#default-router 10.1.1.2
R1(config-if)#exit

Sada na klijentskim uređajima (PC1 i PC2) izvršavamo komandu ip dhcp kako bismo dobili IP adresu od DHCP servera. U ovom trenutku je započeta faza otkrivanja. Kada se završi komunikacija sa DHCP serverom, na standardnom izlazu će biti prikazana IP adresa klijentskog uređaja kao i gateway. U našem slučaju je to rogue (neovlašćeni) ruter.

Kao što vidite, upali smo u zamku napadača. Gateway je neovlašćeni DHCP server. Kako bismo rešili ovaj problem, omogućićemo DHCP Snooping na switch-u. Pre nego što to uradimo, potrebno je da se oslobodimo IP adrese koju nam je dodelio neovlašćeni DHCP server. Ukoliko u konzoli klijentskog uređaja unesemo komandu show ip, videćemo IP konfiguraciju uređaja.

Pomoću komande ip dhcp -x se oslobađamo dodeljene IP adrese. To je potrebno uraditi i na PC1 i na PC2. ##### Podešavanje switch-a U konzoli switch-a IOU2 unosimo sledeće komande:
IOU2#config t
IOU2(config)#ip dhcp snooping – omogućava DHCP Snooping na globalnom nivou
IOU2(config)#ip dhcp snooping vlan 1 – omogućava DHCP Snooping na VLAN-u 1
IOU2(config)#do sh vlan brief – prikazuje konfiguraciju VLAN-a

Ako sada pokušamo da sa klijentskih uređaja ponovo zatražimo IP adrese, videćemo da DHCP Offer poruka neće stići jer su svi port-ovi na switch-u označeni kao neautorizovani (untrusted) zbog DHCP Snooping-a.

Sada ćemo interfejs, preko kojeg stižu poruke od autorizovanog DHCP servera, označiti kao trusted. Ponovo konfigurišemo switch IOU2.

IOU2#config t
IOU2(config)#int e0/0 – ulazimo u podešavanja interfejsa na koji stižu poruke od rutera R1
IOU2(config-if)#ip dhcp snooping trust – označavamo ga kao autorizovan port

Pokušajmo sada da zatražimo adresu od DHCP servera. Primetićemo da opet ne možemo da dobijemo IP adresu. Klijentski računari rade lokalni broadcast, a ruteri podrazumevano ne prosleđuju lokalne broadcast poruke. To znači da ako je DHCP server konfigurisan na drugoj mreži, klijenti neće moći da iznajme svoje adrese. U ovakvoj situaciji možemo ili da konfigurišemo DHCP server za svaku podmrežu ili da ruter podesimo da se ponaša kao DHCP relay agent. DHCP relay agent se nalazi između DHCP servera i DHCP klijenta i omogućava klijentu da iznajmi IP adresu od servera koji nije konfigurisan u okviru istog LAN-a. Agent broadcast poruku pretvara u unicast i prosleđuje je DHCP serveru. Kada DHCP server odgovori, pretvara primljenu unicast poruku u lokalnu broadcast poruku i prosleđuje je u lokalnu mrežu.

Kada smo prethodno omogućili DHCP Snooping, istovremeno smo podesili da se switch ponaša kao relay agent i da koristi opciju 82. Ova opcija omogućava relay-nom agentu da u zaglavlje poruke umetne informacije koje se mogu primeniti na udaljene host-ove i koristi ih za prosleđivanje poruka. DHCP server mora biti konfigurisan da bi primio poruku sa opcijom 82.

Postoje tri metoda da rešimo ovaj problem i pokazaćemo ih u nastavku.

Metod 1. Veruj svima

Vršimo konfiguraciju rutera R1 (trusted DHCP server):

R1(config)#ip dhcp relay information trust-all – govori agentu da prihvati sve pristigle pakete
Podrazumevano, ukoliko je adresa gateway-a nepoznata u pristiglom DHCP paketu, DHCP relay agent će da odbije paket. Zato koristimo ovu komandu da pregazimo to ponašanje. Ako sada pokušamo da zatražimo IP adresu na nekom hostu, videćemo da će biti uspešno.

Metod 2. Onemogućiti opciju 82

Pre nego što pređemo na sledeći metod, moramo da vratimo prethodna podešavanja. Tako što u konzolu rutera R1 unesemo no ip dhcp relay information trust-all. Ako se na host-u PC1 oslobodimo IP adrese koju smo iznajmili od DHCP servera R1, videćemo da će ponovno iznajmljivanje biti nemoguće.

Ponovo vršimo konfiguraciju rutera R1:

R1(config)# no ip dhcp snooping information option
Sada je moguće iznajmiti IP adresu.

Metod 3. Konfigurisanje IP adrese

Ponovo uključujemo opciju 82 komandom ip dhcp snooping information option. Sada na switch-u podešavamo sledeće:
IOU2(config)#int vlan 1 – ulazimo u podešavanje interfejsa na VLAN-u 1
IOU2(config-if)#ip add 10.1.1.10 255.255.255.0 – postavlja IP adresu i masku rutera u okviru VLAN 1
IOU2(config-iFf)#ip helper-address 10.1.1.1 – ovime smo postigli da DHCP relay agent, kada mu stigne DHCP zahtev, prosledi zahtev DHCP serveru na adresi 10.1.1.1
IOU2(config-if)#no shut – uključuje interfejs

Pokrenimo sada komandu ip dhcp (proverite da li ste se oslobodili prethodnih IP adresa) na oba host-a. Nakon toga u konzoli switch-a pokrenućemo komandu koju smo spomenuli na samom početku, a to je komanda koja prikazuje DHCP binding tabelu: show ip dhcp snooping binding

Kao rezultat vidimo vezivanja IP adresa (adrese koje je dodelio ovlašćeni DHCP server) za MAC adrese uređaja za svaki interfejs.

Zaključak

Pored toga što rešava probleme sigurnosti, DHCP Snooping pojednostavljuje i adresiranje. Pored man in the middle napada, ova sigurnosna tehnologija takođe sprečava i denial of service (DoS) napade.

Korisni linkovi

How to configure DHCP Snooping
Five Things To know About DHCP Snooping – Packet PushersHow DHCP works Explained with Examples
How DHCP Relay Agents work Explained
What is DHCP Snooping and How It Works?

Autor: Filip Bojović

Student završne godine Osnovnih studija Prirodno-matematičkog fakulteta u Kragujevcu.

Filip Bojović

Student završne godine Osnovnih studija Prirodno-matematičkog fakulteta u Kragujevcu.