11 Kasım 2017 Cumartesi

DHCP SNOOPING


clip_image004
DHCP SNOOPING 


Merhabalar forumda olmadığını gördüğüm konularda vakit buldukça yazmaya çalışıyorum . 

Bu yazıda kısaca DHCP Snooping'den bahsedeceğiz.


Nedir bu DHCP Snooping ? Okuyunca sevimli bir şeye benziyor  


Kısaca tarif etmek gerekirse ; bir ağa sahte bir DHCP server servisi çalıştıran makina koyun. DHCP isteklerine yanıt versin. Ve clienlere default-gateway olarak kendi ip adresini versin. 

Üzerinde de proxy, sniffer, paket analyzer veya ufak bir routing çalışşın veya her ne ise . Clientlerin tüm trafikleri artık bu sahte DHCP server üzerinden geçecektir. Burada bir güvenlik ihlali oluşmaktadır. 


DHCP snooping sayesinde gerçek DHCP server'lere ait portlar trusted olarak işaretlenerek bu soruna çözüm getirilebilmektedir. 

Ayrıca DHCP snooping enable edildiğinde switchler hangi porttaki cliente hangi ip atanmış şeklinde bir veritabanı tutmaya başlarlar . Burada ise ip source guard devreye girerek alınan paketlerin source ip adreslerini bu veritabanındaki allowed olarak nitelendirilen ip adresleri ile mukayese edebilir. Allowed olarak bir eşleşme yoksa paket discard edilir. 

Ip source guard DHCP snooping olmadanda çalışabilmektedir. DHCP server olmayan networklerde ip source guard'ı bu şekilde kullanabiliriz. Ip source guard'ı bir başka konuda anlatırız. Çokda lüzümlu bir şey değil zaten . DHCP snooping ile kullanırsanız CPU top yapar. 


Nedir bu portlardaki trusted ve untrusted kavramı ? 

Trusted kavramı ; Untrusted portlardan gelen DHCP istekleri yanlızca trusted portlara yönlendirilir. Bu durumda DHCP serverların bağlı olduğu portlar veya switch ortamında uplink portları trusted olmalıdır. 

Trusted haricindeki portlar ise untrusted portlardır bu portlardan gelen DHCP repl paketleri discard edilir deyip kısaca kesip atalım. 


DHCP Snooping Mekanizması Nasıl Çalışır ? 

DHCP Snooping önce switch'de global olarak sonra bir vlan'da enable edilmelidir. Bu işlem yapılıp trusted portlar belirlenirse : 

Untrusted portlardan birine bağlı bir client DHCP isteği gönderir. Switch bu isteği alır ve güvendiği, emin olduğu bir DHCP server'a isteği yollar . ( Ama güven ortamı nasıl oluştu ? Trusted olarak belirlenen port(lar) sayesinde oluştu.)

DHCP server'da ip adresini yollar işlem bu kadar sade ve basit. 


Tabiki bu esnada switch hangi porttaki hangi mac adresli hosta ne kadar süre ile (lease) hangi vlandan hangi ip adresi atanmış binding type nedir bilgilerini bir veritabanında tutmaya başlar. Bu veritabanı ip DHCP Snooping Binding dosyasıdır ve aşağıdaki gibi bir formatı vardır. Bu dosyada sadece untrusted interface'lerin olduğundan emin olabilirsiniz. 

Burada bir soru daha ? Burada bir trusted interface varsa ??? Sizce olabilir mi ? Soru-1




TYPE DHCP-SNOOPING
VERSION 1
BEGIN
10.10.10 5 0001.0001.0005 3EBE2881 Gi1/3 e5e1e733
1.1.10.1 6 0001.0001.0002 3EBE2881 Gi1/2 4b3486ec
1.11.1.2 3 0001.0001.0004 3EBE2881 Gi1/4 f0e02872
1.11.1.1 3 0001.0001.0003 3EBE2881 Gi1/5 ac41adf9
1.1.1.1 1 0001.0001.0001 3EBE2881 Gi1/7 34b3273e

Sırası ile : 
ip vlan mac lease interface checksum.. 

Görüldüğü üzere lease time hexe formatta (3ebe2881) , mac/ip adresleri,interface bilgileri açıkça okunabilir . 

Checksum vasıtası ile update işlemleri yapılır.. Kim ignore edilsin kim güncel vs ... 

Sizce lease time out olursa ne olur ? Dikkatli okuyana Soru-2 ... 



Artık sürekli güncel tutulan bir DHCP-SNOOPING binding veritabanımız da olduğuna göre switch hangi durumda DHCP paketlerine karşı nasıl bir tutum sergiler onlara bakalım . 


- Untrusted bir porttan DHCP – OFFER/ACK/NAK/LEASEQUERY gibi paket alınırsa drop eder. 

- Untrusted bir porttan alınan bir paketin source mac adresi binding table'daki kaydedilen ile aynı değilse DHCP isteğini drop eder. 

- Bir DHCP – RELEASE veya DECLINE mesajı ( Broadcast) alınırsa , binding database'de mac adresi aranır. Alınan interface binding table'dekinden farklı ise msj drop edilir. 

- 0.0.0.0 haricinde bir ip ile relay agent'a giden veya option 82 içerdiği halde untrusted porta yönlendirilen paketler drop edilir. 


Şimdi yapılandırmaya biraz bakalım : 

Önce global olarak DHCP Snooping'i enable edelim. Bu gerekli... 

Kod:
S (config) # ip dhcp snooping


Sonra kullanılması istenen vlan'da enable edelim. Vlan range olarak buraya tanımlayabiliriz... Bu örnekte atıyorum vlan 5 olsun. 


Kod:
S (config) # ip dhcp snooping vlan 5



Şimdi trusted portları belirleyelim. (Uplink portlar veya DHCP server'in irtibatlı olduğu port olabilir) 

Kod:
S (config) # define interface-range Uplinks gig 0/1 - 2

S (config) # int range macro Uplinks

S (config-if) # ip dhcp snooping trust




Tüm portlar default olarak untrusted olduğu için uplinkler haricindekiler untrusted olarak çalışmaya devam etmektedir. 

Bu kısa yapılandırma ile DHCP istekleri sadece trusted portlara yönlendirilir. 




Ancak bir nokta kaldı untrusted portlardan sürekli DHCP istekleri yağarsa ? 


Bu tarz DHCP ataklarının önüne geçebilmek için saniye başına düşen DHCP paketlerini sınırlandırabilir. Bu limit aşılırsa port DHCP-rate-limit'ten dolayı err-disable state'e düşecektir. Untrusted portlarda bu limitin düşük ancak trusted portlarda yüksek tutulması gerektiğini unutmayalım. Bu limit 1 – 2048 arası bir değer olabilir. 

Trusted port üzerinde 500'e limitledim : 
Kod:
S (config-if) # ip dhcp snooping limit rate 500 ( saniyede 500 paket )


Untrusted üzerinde ise 5 yaptım : 

Kod:
S (config-if) # ip dhcp snooping limit rate 5



Pekala şimdi trusted portta bu limit aşılırsa (mesela sabah herkes iş başı yapınca pc'leri açtı veya elektrik gitti geldi) ve bu sebeple port err-disable olursa ve benim networkteki hostlar DHCP ile ip alıyorsa ben burada kendi sonumu hazırlamış olurum. Ancak bununda çaresi var. 

Hemen auto recover'i yapılandırıyorum : 

Kod:
S (config) # errdisable recovery cause dhcp-rate-limit
S (config) # errdisable recovery interval 35


Veya dhcp rate limit'i errdisable sebebi olmaktan çıkarıyorum (bunu evde yanlız denemeyin) : 

Kod:
S (config) # no errdisable detect cause dhcp-rate-limit




Neredeyse bitti bir şey unuttuk oda option 82. Zaten default olarak enable durumda anlatmasak da olur ama biz yinede değinelim. Option 82 sayesinde switch untrusted portlardan gelen DHCp isteklerine işlem yapar . Gelen paketin option 82 hanesine kendi mac ve interface bilgisini ekleyip DHCP servera gitmek üzere paketi truested porttan yollar. 

Burada DHCP server'da option 82 desteklemelidir. Destekliyorsa oda switche DHCP yanıtı ile dönüş yaparken option 82'yi doldurur. Bunu alan sw'de gerekli karşılaştırmayı yapar. 


Yukarıdada söylediğimiz üzere default enable durumdadır. Sunucumuz 82 desteklemıyorsa ve bizde kapatmak istiyorsak : 

Kod:
S (config)# no ip dhcp snooping information option
dememiz yeterli. 




Configuration

I will use the following topology:
dhcp snooping example topology
Interface fa0/1 is connected to a client that would like to get an IP address from the DHCP server connected to interface fa0/2. There’s an attacker connected to fa0/3 that is running DHCP server software. Let’s see if we can stop him…


SW1(config)#ip dhcp snooping
 
First you need to enable DHCP snooping globally.
SW1(config)#no ip dhcp snooping information option
 
By default the switch will add option 82 to the DHCP discover message before passing it along to the DHCP server. Some DHCP servers don’t like this and will drop the packet. If you client doesn’t get an IP address anymore after enabling DHCP snooping globally you should use this command.

SW1(config)#ip dhcp snooping vlan 1
Select the VLANs for which you want to use DHCP snooping.

SW1(config)#interface fa0/2
SW1(config-if)#ip dhcp snooping trust
 
Once you enable DHCP snooping all interfaces by default are untrusted. Make sure interfaces that lead to the DHCP server are trusted.
SW1(config)#interface fa0/1
SW1(config-if)#ip dhcp snooping limit rate 10
 
Optionally you can rate-limit the number of DHCP packets that the interface can receive. I’ve set the fa0/1 interface so it can’t receive more than 10 DHCP packets per second.

SW1#show ip dhcp snooping 
Switch DHCP snooping is enabled
DHCP snooping is configured on following VLANs:
1
DHCP snooping is operational on following VLANs:
1
DHCP snooping is configured on the following L3 Interfaces:

Insertion of option 82 is enabled
   circuit-id format: vlan-mod-port
    remote-id format: 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     Rate limit (pps)
------------------------     -------     ----------------
FastEthernet0/1              no          10        
FastEthernet0/2              yes         unlimited
 
 
 
Use the show ip dhcp snooping command to verify your configuration.
SW1#show ip dhcp snooping binding 
MacAddress          IpAddress        Lease(sec)  Type           VLAN  Interface
------------------  ---------------  ----------  -------------  ----  --------------------
00:0C:29:28:5C:6C   192.168.1.1      85655       dhcp-snooping   1     FastEthernet0/1
Once your client receives an IP address from the legit DHCP server you can see SW1 keeps track of the MAC to IP binding. DHCP offer messages from the DHCP server on the untrusted interface will be dropped. I hope this lesson has been useful for you to understand DHCP snooping.



hostname SW1
!
ip dhcp snooping vlan 1
no ip dhcp snooping information option
ip dhcp snooping
!
interface FastEthernet0/1
 ip dhcp snooping limit rate 10
!
interface FastEthernet0/2
 ip dhcp snooping trust
!
interface Vlan1
 ip address dhcp
!
end

Hiç yorum yok:

Yorum Gönder