Ağ Güvenliği 101 #3 DHCP: Nedir? Nasıl Çalışır? Neden UDP Kullanır?
Merhaba sevgili okurlarımız. “Ağ Güvenliği 101” yazı serimizin bu yazısında DHCP’ye değinerek serimizin ağ temelleri kısmına bir nokta koyacağız. Öncelikle DHCP’nin ne olduğuna ve ne işe yaradığına değinerek konumuza başlayalım.

DHCP Nedir?
DHCP bir ağ ortamına girdiğimiz zaman bize otomatik olarak IP adresi, alt ağ maskesi, DNS sunucusu adresi, varsayılan ağ geçidi gibi değerleri tanımlayan BOOTP adlı protokolün geliştirilmiş hali olan TCP/IP protokollerinden birisidir. IP adreslerimizin bizim özel isimlerimiz olduğunu daha önceden bahsetmiştik. Bu isimlerimiz bize özel ve benzersiz olmalılar. DHCP de bize bu benzersizliği sağlıyor. Eğer biz IP adreslerimizi elle almaya çalışırsak başka IP adresleriyle çakışma, parametreleri yanlış girme gibi durumlarla karşılaşabiliriz. DHCP ise bu karışıklığa maruz kalmamamızı ve bu zahmetli işten kurtulmamızı sağlar.
DHCP’ye Dair Kavramlar:
Scope(Kapsam): İstekte bulunan istemcilere verilmek üzere tutulan IP adreslerinin bulunduğu havuzlardır.
Superscope(Üst Kapsam): Aynı alt ağda etkileşime geçebilecek kapsamların gruplandırılması/gruplandırılmış halidir.
Exclusion Range(Dışlama Aralığı): Kapsamlarda istemciye verilmemesi için ayrılan özel IP havuzlarıdır.
Address Range(Adres Aralığı): Toplam kapsamdan dışlama aralığının çıkarılmasıyla kalan kullanılabilir IP havuzlarıdır.
Lease(Kira): DHCP sunucusunun istemciye atadığı IP’nin kullanılabilme süresidir.
Reservation(Rezervasyon): Adından da anlaşılacağı üzere bir IP adresinin bir makineye sürekli kullanımı için özel olarak ayrılması durumudur.
Scope Options(Kapsam Ayarları): DHCP sunucusu tarafından IP adresine ek olarak tanımlanan Alt ağ maskesi, varsayılan ağ geçidi, DNS sunucusu gibi parametrelerdir.
DHCP Nasıl Çalışır
DHCP bize benzersiz IP adresleri sağlıyor dedik. Peki bunu nasıl yapıyor? DHCP protokolleri için bulunduğumuz ağlarda DHCP sunucuları bulunmaktadır. Bu DHCP sunucularında parametrelerimiz ve IP adreslerimiz için havuzlar bulunmakta. Biz DHCP sunucusuna istekte bulunduğumuz zaman dahilindeki havuzları kontrol ederek havuzunda boş olan IP adreslerini ve parametrelerini bize atar. Bu havuzlar ise cidden bildiğimiz havuz mantığı ile çalışıyor lakin boşalma kısmı değil dolma kısmıyla aynı. DHCP havuzunu gözünüzde boş bir havuz gibi canlandırın. Her gelen istekte bu havuza bir miktar su doluyor ve suyumuza boş alanından yer veriyor. Havuzun boşalmasına izin vermeden sürekli su akışı sağlarsak bir yerden sonra suyumuza vereceği boş alanı kalmıyor ve havuz taşıyor. Bundan sonra gelen su ise kendisine yerleşecek yer bulamıyor. Buradaki suyu bizim isteğimize verilen boş alanı ise DHCP sunucusunun bize döndüğü verilere eşleştirebiliriz. Olayımızın bu kısmına çok da uzak olmayan bir gelecekte güvenlik kısmına ait yazılarımızda tekrar değinip bundan faydalanacağız.
Şimdi gelin beraber DHCP Sunucusu ile iletişimimizin nasıl olduğuna bakalım. DHCP sunucusuyla iletişim kurarken arada kullanılan 4 adet DHCP paketimiz bulunmakta. Bunlar sırasıyla: DHCP Discover, DHCP Offer, DHCP Request, DHCP ACK paketleridir. Şimdi sırayla bu paketlerimizi inceleyelim.

1)DHCP Discover Paketi:
İletişimde öncelikle broadcast olarak bir mesaj yayınlanır. Yayınladığımız bu mesajın içine MAC adresimizi ekleriz.

Paketleri incelerken fark edildiği üzere bu mesajı UDP aracılığı ile yayınlarız. Paket alışverişlerini ise 67. ve 68. porttan yürütürüz.

Bu mesaj paketinin içinde bize ulaşacak sunucudan neler istediğimizi de belirtiriz. Bunlar konunun başında bahsettiğimiz IP Adresi, DNS Sunucusu, Varsayılan Ağ Geçidi, Alt Ağ Maskesi ve daha birçok şey.

Bu paketin ve genel olarak iletişimin daha rahat anlaşılması için size günlük hayattan bir senaryo üzerinden de örnekleme yapayım bir restorana girdiğinizi düşünün. Boş bir masa buldunuz ve oturdunuz. Baktınız gelen giden yok “Garson! Ne vereceksin abine?” diye sordunuz. Discover paketinin yaptığı işlem de bu olaydaki gibi önce kendisiyle ilgilenecek birisini aramak için topluluğa sesleniyor. Seslendiği yerin konumunun tespit edilmesi paketimize eklediğimiz MAC adresine karşılık geliyor. Sonra muhatap olacağı kişiye “Ne vereceksin abine?” diye sorması da “Parameter Request List” kısmında talepte bulunulan parametrelerden hangilerini verebileceğini sormaya karşılık geliyor.
2)DHCP Offer Paketi:
Bu paketimizde DHCP sunucusu bize discover paketimizde eklediğimiz MAC adresi aracılığı ile dönüş sağlıyor.


Havuzunu kontrol edip bize istediğimiz parametreler için verebileceği değerleri gösteriyor. Bu değerleri “Bootstrap Protocol” kısmında görebilirsiniz. “Bu değerler bana uygun senin için de uygun mu?” Şeklinde bize bir soru yöneltip bizden cevap bekliyor.

Bu paket için restoran hikayemize devam edecek olursak garson bizim seslenişimizi duyup yanımıza geliyor ve “Abi çok güzel kuruyla pilavım var yanına da buz gibi cacık vereyim. İster misin?” şeklinde bir cevap veriyor. Olaydaki garsonun yanımıza gelmesi bölümü yolladığımız discover paketimizde bulunan MAC adresi sayesinde bize dönüş yapmasını temsil ediyor. Yemekleri önerip bizden dönüş beklemesi de DHCP sunucusunun bize sunduğu parametreler ve beklediği onay kısmına denk geliyor.
3)DHCP Request Paketi:
Bu paketimize DHCP sunucusunun bize önerdiği parametreleri girerek broadcast olarak yayınlıyoruz ve bu parametreler ile verilerin bize uygun olduğunu belirtip resmi olarak talebimizi gerçekleştirmiş oluyoruz.



Hikayemize devam edersek garsona “Olur sen bana kuruyla pilav ver ama kuru pilav üstü olsun kardeşim.” diyoruz ve bu şekilde garsona isteğimizi belirtip aynı zamanda da onun önerisini onayladığımızı söylüyoruz.
4)DHCP ACK
Bu paketimizde DHCP sunucusu bizim onay verdiğimiz kendinde de boşta bulunan verileri bize iletiyor ve ağdaki diğer cihazlarla özel olarak iletişim kurmaya hazır hale geliyoruz. Paketimizin içeriği DHCP Offer paketine çok benziyor. Atanan parametreleri “Bootstrap Protocol” kısmında görebilirsiniz.



Hikayemizde ise olaylar beklenildiği üzere bize servis edilen siparişle son buluyor. Paketlerimizde görüldüğü üzere DHCP Sunucusuyla iletişim kurulurken UDP kullanılıyor ve 67. ile 68. port olmak üzere iki adet port kullanılıyor. Gelin biraz da bunların üzerinde duralım.
DHCP Neden UDP Kullanır?
DHCP TCP varken gidip UDP kullanıyor. Peki ama neden bunu yapıyor? İletişimin başlangıcın ve devamında broadcast olarak da yayınlanan mesajlar olduğundan bahsetmiştik. Aslında DHCP’de her zaman broadcast yayın yapılacak diye bir şey yok. Bazen paketlerde broadcast değilde belli bir hedefe yönelik discover paketleri gönderildiğini de görebilirsiniz yani iletişimde unicast yayın da kullanılabilir ancak bizim şuan üzerinde duracağımız kısım broadcast olarak yapılan yayın. Broadcast yayın DHCP üzerinde yüksek önem taşıyor ve bu şekildeki bir yayını TCP’de yapamıyoruz. DHCP’nin TCP yerine UDP kullanmasının sebeplerinden birisi bu. Bir diğeri ise yine bu sebebe paralel olarak sunucunun anlık olarak çok fazla istemciyle iletişim kurma durumuna maruz kalma olasılığı. UDP’nin TCP’ye göre daha hızlı bir iletişim protokolü olduğunu ve kontrol kısmınında uygulama katmanı seviyesinde gerçekleştiğini daha önceki konularımızda belirtmiştik. Bunu bir örnekle daha iyi açıklayabileceğimizi düşünüyorum. DHCP sunucusuna istek yollayan kişinin sadece siz değil de aynı zamanda 50 adet istemcinin istekte bulunduğunu düşünün. Oluşacak trafiği bir gözünüzde canlandırın. Bu demek oluyor ki 51 adet “Üçlü el sıkışma” gerçekleşmeli ve ancak bunlardan bir tanesi gerçekleşebilecek. Yani TCP kullanmak DHCP için verimsiz ve anlamsız olacaktır. İşte bu sebeplerden DHCP UDP kullanır.
DHCP Neden Çift Port Kullanır?
Paketlerimizi incelerken iletişimin 67. ve 68. portlartdan gerçekleştiğini fark etmiştik. Çoğu protokolde tek port kullanılırken DHCP’de neden çift port kullanılıyor? DHCP’nin UDP kullandığını yukarıda belirttik. UDP için tam bir istemci-sunucu ayrımı geçerlidir diyemeyiz. İstemcinin bilgisayarı iletişim sürecinde bir yandan cevapları alırken bir yandan da sunucuymuş gibi trafiği dinlemeye de devam etmelidir. Bu durum sunucu tarafında da geçerlidir. Her iki işlemin tek porttan yapılması sorun çıkaracağından ayrıca broadcast yayınlarda yanlış cevaplar verilebileceğinden çift port kullanılır.
Umarım faydalı bir yazı olmuştur. Şu internetsiz günlerimde yazı yazmak için internetini kullandığım Brew Mood’a da teşekkürler :) Serimizin ağ temelleri kısmını noktalamış bulunuyoruz. İlerleyen yazılarımızda görüşmek üzere esen kalın.
Devam yazılarım:
Ağ Güvenliği 101 #4: Bilgi Toplama #1: Ping, Whois Nasıl Çalışır?,CyberOps, RIPE:
https://link.medium.com/lqazmF5qzV
Ağ Güvenliği 101 #5 Bilgi Toplama #2: Email ve Sosyal Medya Üzerinden Bilgi Toplama:
https://link.medium.com/GN4Y6e9qzV

