Bu yazımızda en çok kullandığımız protokollerden biri olan DHCP (Dynamic Host Configuration Protocol) protokolünün güvenliği hakkında neler yapabilirizi konuşuyor olacağız. Başlamadan önce DHCP protokolü yapısı ve işleyişi hakkında bilgi edinmek isteyen arkadaşlar bu linkten faydalanabilir. Bu protokolün bizim işimizi ne kadar kolaylaştırdığı tartışılmaz bir gerçektir. Bu kolaylıkdan faydalanırken bu protokolü kendilerine bir saldırı aracı olarak kullanabilen saldırganlar için de gerekli 2. katman güvenlik önlemlerini almamız gerekmektedir.
Peki, bu protokol nasıl bir tehdit haline geliyor? Bize ne gibi zararlar verebileceği konularından bahsedecek olursak. Man in the middle ve Denial of Service olmak üzere genellikle iki tip saldırı türüyle karşı karşıya kalabiliyoruz. Peki bu saldırılar nasıl gelişmekte ve bize ne gibi zararları dokunmakta?
Öncelikle en zararlısı olan Man in the middle ile başlıyalım. Saldırgan yapımızda Dhcp sunucumuzdan istekde bulunan bir makinaya DHCP Offer paketi ile yanıt vererek kullanıcıya gönderdiği ağ bilgilerinin içerisindeki gateway kısmına kendisinin ip adresini yazarak gönderiyor. Kullanıcı tamam bu bilgiler uygundur diyerek DHCP request döner. Son olarak DHCP acknowledgement ile saldırganın istediği şekilde işlemler tamamlanır. Artık kullanıcımızın gateway’i saldırgandır. Bu andan itibaren kullanıcımız saldırganın hazırladığı fake bir siteye yönlendirilebilir ve trafiği istenilen şekilde kullanılabilir. Bu saldırı gerçekten profesyonel kişilerin yapmasıyla büyük zararlara yol açan bir saldırı türüdür.
Diğer saldırımız ise bir Denial of Service saldırısıdır. Bu saldırının kayıpları man in the middle gibi büyük ölçüde değildir. İsminden de anlaşıldığı üzre DHCP servisini engelleme ve hizmet veremiyecek hale getirmeye çalışılan bir saldırı türüdür. Hiç teknik bilgisi olmayan bir kişi bile internette bulabileceği birçok programcık ile bu işi yapabilir. Bu programlar sürekli DHCP Discover mesajı yayınlayarak ip talebinde bulunuyor. DHCP sunucumuzda bu taleplere cevap vermesi karşısında belli bir süre sonra ip havuzunu doldurarak hizmet veremez hale geliyor. Aşağıdaki ekran görüntüsü bu saldırının yapılabildiği bir programdan alınmıştır. Bu saldırı türü gördüğünüz gibi pek tecrübe isteyen bir saldırı türü değildir.
Bu saldırı türlerinin 802.1x Authentication, Port Security, DHCP Snooping ve IP Source Guard gibi yapılandırmalar ile önüne geçebiliriz. Bu yapılardan Port Security Çözümpark portalımızda mevcut, bu satırları okuyorsanız artık DHCP Snooping yapılandırması da mevcut olmuş bulunuyor. J Geriye kalan konulara da bir başka makalede değiniriz inşallah.
Şimdi yapılabilecek saldırılar ve korunma yöntemleri hakkında bir ön bilgi verdiğimize göre bu saldırılardan korunma yöntemlerinden biri ve makalemizin de konusu olan DHCP snooping’in çalışma mantığı ve yapılandırmasına geçebiliriz.
DHCP Snooping yapılandırmasında switch’imize yapımızdaki DHCP sunucuların hangi interface arkasında olduğunu söylüyoruz. Switch üzerinde bu portları trust yapıyoruz. Cihazımız bu portlar üzerinden DHCP Offer paketi gönderimine izin veriyor. DHCP sunucusu olmayan portlarımızı da untrust (default olarak tüm portlar untrust’dır.) olarak ayarlıyoruz. Böylelikle untrust bir port üzerinden gelen DHCP Offer paketi yukarıdaki resimde de görüldüğü gibi switch üzerinden geçemiyor. Bununla man in the middle tarzı saldırıya karşı bir koruma gerçekleştirmiş oluyoruz. Denial of Service saldırıları için ise saniyede interfacelerden geçebilecek maximum DHCP paket sayısını belirleme ve eş zamanlı bağlanan maximum cihaz sayısı gibi değerleri belirterek. Bu belirlemeleri aşan interfaceler kapatılır veya bir sınırlama getirilerek önüne geçebiliriz.
Yukarıdaki gibi basit bir yapımız var tüm kullanıcılar default vlan olan vlan 1’de DHCP sunucumuz 192.168.1.0/24 bloğunda ve 192.168.1.10 ip adresinden ip dağıtmaya başlıyacak şekilde yapılandırdık. Kullanıcılarımız aşağıdaki gibi DHCP’den ip alabilir durumda. User_1 ve User_2 isimli iki kullanıcımız mevcut. Kabloların bağlı olduğu interface’lerde resmimizde göründüğü gibidir. Bu çalışmayı Cisco packet tracer programı ile gerçekleştiriyor olacağız. Hazır olduğumuza göre yapılandırmaya başlayabiliriz.
Öncelikle global config modunda DHCP snooping özelliğini etkinleştiriyoruz.
Şimdi hangi interface’den, hangi ip adresi alınmış, mac adresi, vlan bilgisi ve kira süreleri gibi verilerin tutulacağı bir veritabanı’na ihtiyacımız olacak. Bunu switch üzerinde oluşturabileceğimiz gibi TFTP protokolü ile okuma, yazma yetkisi olan bir klasörede aktarabiliriz. Biz switch’imizin flash’ı üzerinde bir veritabanı oluşturarak devam edeceğiz.
Veritabanımızı belirttikden sonra yapımızdaki vlanlar üzerinde yapılandırmaya devam ediyoruz. Yapımızda yukarıda da belirttiğimiz gibi Vlan 1 vardı sadece,
Yukarıdaki komutumuzla Vlan 1 üzerinde yapılandırmamızı aktif etmiş oluyoruz. Şuan bütün interface’ler default olarak untrust durumdadır. Bu sebeble DHCP sunucumuzun ip dağıtamadığını kullanıcılarımızdan birini statik duruma çekip tekrar DHCP seçeneğini seçtiğimizde aşağıdaki gibi görebiliyoruz.
Şimdi DHCP sunucumuzun bulunduğu interface’e güvendiğimizi belirterek devam edeceğiz.
Yukarıdaki yapılandırmadan sonra kullanıcılarımız ip durumlarını kontrol edecek olursak.
Gördüğünüz gibi artık makinalarımız ip adresi alabiliyor durumdadır. Bizim DHCP sunucumuzun portu haricinde bir porttan herhangi biri DHCP Offer paketi gönderilmeyecektir. Peki kullanıcılarımız ip adresi alıyor. Ne kadar ip isterse DHCP sunucumuz şuan buna cevap verebilecek durumda yani kullanıcılar DHCP ip havuzumuzu bitirebilir durumdalar. Peki bunun için neler yapabiliriz ?
Bunun için untrust olan bütün interfacelerde bir rate belirliyeceğiz. Bu rate pps (packets per second) yani saniyede geçebilecek paket sayısı ile ifade ediliyor. Bir kullanıcı dhcp’den ip adresi alabilmesi için bu değerin min 2 (Dhcp Discover ve DHCP Request) olması gerekmektedir. Burada belirttiğimiz rate değerinde bir aşım olursa switch tarafında port down edilecektir.
User_2’nin bağlı olduğu Fast Ethernet 0/2 portunda yukarıdaki gibi limitimizi belirledik. Peki bu değer 1 olduğunda ne gibi bir aksiyon olucak onu görelim. Diğer kullanıcımız switch’imiz üzerinde Fast Ethernet 0/3 portuna bağlı burada limitimizi 1 yaparak ne olacağını görelim.
Şeklinde yapılandırmamızı yaptık, şimdi USER_1 kullanıcımızın ip adresini bıraktırıp tekrar almasını isteyelim.
Gördüğünüz gibi ip adresini alamıyoruz. Peki switchde durum nedir ?
Fast Ethernet 0/3 gördüğünüz gibi kırmızı durumda yani interface down olmuştur.
Switch tarafına tekrar baktığımızda yukarıdaki uyarı ve bildirimleri görüyoruz. Fast Ethernet 0/3 üzerinden 2 DHCP paketi alınmış ve DHCP rate limitimizi aştığı için, portumuzun down olduğunu belirtiyor.
Peki, burada tam bir koruma mümkün mü? Saldırgan önceden saniyede birçok paket göndererek kısa sürede DHCP servisimizi servis dışı bırakıyordu. Şuan bunu saniyede 2 paketi geçmeyerek yine yapabilir durumda. Burada da port security tarafından biraz destek alıcağız. Switch’imize bir porttan eş zamanlı öğrenebileceği maximum mac adres sayısını belirteceğiz.
Yukarıdaki gibi bir yapılandırma ile belirttiğimiz interface’den 3 cihazdan fazla bir eş zamanlı aşım olduğu zaman default olarak bu portu kapatıyor. Portu kapatmayıp sadece gelen istekleri sınırlamak ve yapılan istek sayısını görmek istiyorsanız bu komutlardan sonra “Switch(config-if)# switchport port-security violation restrict” komutunu girerek bu isteklerin sayısını “Security Violation Count” değeri olarak görüntüleyebilirsiniz.
Yukarıda da görüldüğü gibi belirttiğimiz limit aşımını yaptığımızda Fast Ethernet 0/2 interface’i Secure-shutdown konumuna geçerek kendini kapatıyor. Bu kapamayı gerekli düzenlemeleri yaptıktan sonra interface içerisine girerek “shutdown” komutunu girdikten sonra “no shutdown” komutunu girerek tekrar up duruma getirebiliriz.
İnterface bu işlemimizden sonra tekrar Secure-up durumuna geçmiş bulunuyor.Buraya kadar yaptığımız yapılandırma adımlarını tüm kullanıcı interfacelerinde aktif edelim şimdide,
Bildiğiniz gibi Fast Ethernet 0/1 interface’i bizim trust olarak belirlediğimiz DHCP sunucumuzun bulunduğu porttur. Yukarıdaki komutlarımızlada az önce Fast Ethernet 0/2 üzerinde yaptığımız yapılandırmaları 0/2-24 şeklinde range belirterek 2. Porttan 24. Porta kadar olan tüm portlara uygulamış olduk.
Birde debug çıktısına bir göz atalım. Makinalardan bir DHCP discover mesajında neler oluyor ona bakalım.
Yukarıdaki komutumuzla dhcp snooping packetleri için bir debug açtık.
Yukarıda bir makinamızın DHCP sunucumuzdan ip adresi talep ettiğinde aldığımız debug çıktısını görüyoruz. Şimdide yapımızın genel dhcp snooping yapılandırma durumunu görüntüleyelim.
Yukarıda da gördüğünüz gibi DHCP Snooping yapılandırmamızın dahil olduğu vlan, bizde sadece default vlan olduğu için Vlan 1 gözüküyor. DHCP sunucumuzun bağlı olduğu porta DHCP paketleri için bir limit belirtmediğimizden limitsiz ve portun da trusted olduğu görülmektedir.
Peki yapılandırmamızın başlarında bir veritabanı oluşturmuştuk birazda onun ne işimize yaradığına bakalım,
“Show ip dhcp snooping binding” komutu ile bu veritabanımızdaki verileri görüntüleye biliyoruz. Hangi interface’den hangi mac adresi ile aldığı ip adresi ve kira süresini görebiliyoruz. Bu veritabanını ayrıca Ip source guard yapılandırmasında da kullanabiliriz.
Ayrıca “show ip dhcp snooping database” komutu ile oluşturduğumuz veritabanının lokasyonu, zaman bilgileri, okuma, yazma ve bunlarda oluşan hataların sayıları gibi değerleri görüntüleyebiliriz.
Bu yazımızda da DHCP Snooping nedir, nerede ve ne şekilde uygulanıcağı konusuna basit anlamda değinmiş olduk. Bir sonraki makalemizde görüşmek üzre…
Subnetimiz Çözümpark, pingimizin daim olması dileğiyle… J