CyberFlow Logo CyberFlow BLOG
Dns Pentest

Recursion Açıklığı Kontrolü: DNS Güvenliğini Sağlama Yöntemleri

✍️ Ahmet BİRKAN 📂 Dns Pentest

Recursion açıklığı nedir? DNS sunucularındaki güvenlik açıkları nasıl kontrol edilir? Bu blogda öğrenin.

Recursion Açıklığı Kontrolü: DNS Güvenliğini Sağlama Yöntemleri

Bu blog yazısında, DNS sunucularında özyineleme açıklıkları nasıl tespit edilir ve bu açıklar nasıl kapatılır? Jeopolitik etkilerden DDoS saldırılarına kadar birçok alanda önemi olan bu konuya derinlemesine bakıyoruz.

Giriş ve Konumlandırma

Siber güvenlik alanında, DNS (Domain Name System) temel bir bileşen olarak karşımıza çıkmaktadır. DNS, bir alan adının IP adresine çevrilmesini sağlayarak, internetin çalışma şeklinin temel taşlarından birini oluşturur. Ancak, yanlış yapılandırmalar ve etksiz koruma önlemleri sonucunda DNS sunucuları, siber saldırılara karşı açık hale gelebilir. Bu bağlamda, recursion (özyineleme) açıklığı kontrolü, DNS güvenliğini sağlamak amacıyla kritik bir öneme sahiptir.

Recursion Nedir?

Bir DNS sunucusu, istemcinin talebi üzerine internet hiyerarşisini dolaşarak, hedef alan adının IP adresini bulma görevini üstlenir. Bu sürece "özyineleme" ya da "rekürsiyon" denir. Ancak, bazı sunucular bu özyineleme işlevini sansürsüz bir biçimde gerçekleştirebilir. Open Resolver olarak bilinen bu tür sunucular, dünya genelindeki herhangi bir IP adresinden gelen sorgulara yanıt verebilecek şekilde yanlış yapılandırılmış olduklarından, hem sistemin güvenliğini riske atar hem de saldırganlar için potansiyel bir silah haline gelir.

Neden Önemlidir?

Siber güvenlik açısından özyineleme açıklığının denetlenmesi, hem saldırılara karşı korunmak hem de bu tür açıkların kötü niyetli kişiler tarafından istismarını engellemek adına oldukça kritik bir adımdır. Açık özyineleme, DDoS (Distributed Denial of Service) saldırılarında sıkça kullanılan bir yöntemdir; burada, saldırganlar genellikle bir DNS sunucusunu hedef alarak, kurbanın bant genişliğini tüketmek ve sunucularının kaynaklarını aşırı yüklemekte kullanmaktadırlar. Böylece, güçlü bir saldırı gerçekleştirebilirler.

Siber Güvenlik ve Pentest Bağlamı

Pentest (sızma testi) süreçleri, organizasyonların siber güvenlik açıklarını belirlemek için yürütüldüğü çalışmalar bütünüdür. DNS özyineleme açıklığının tespiti ve gereksinimlerine uygun güvenlik önlemlerinin alınması, bu testlerin bir parçası olmalıdır. Ağ yapılandırmalarının, DNS sunucularının bileşenleriyle birlikte değerlendirilmesi, güvenlik açığı analizi açısından önemli bir adımdır.

Teknik Hazırlık

Bu blog seri boyunca, DNS özyineleme açıklığı kontrolü için dikkate alınması gereken adımlar, kullanılan test araçları ve en iyi uygulamalar ele alınacaktır. Özellikle dig ve nmap komutlarının kullanımı, teknik testlerin gerçekleştirilmesinde önemli rol oynayacaktır. Aşağıda, bu araçların temel işlevleri hakkında kısa bilgiler bulunacaktır.

# Örnek sorgu
dig @10.0.0.5 google.com A

Bu komut, belirtilen DNS sunucusunun Google'ın A kaydını ne şekilde işlediğini sorgular.

Elde edilen veriler, hangi önlemlerin alınması gerektiği konusunda bir rehberlik sağlayacaktır. Örnek olarak, DNS yanıt paketlerinde bulunan bayraklar, sunucunun özyineleme hizmetini sunup sunmadığını anlamada kritik bir rol oynamaktadır.

Bu süreç, sadece teknik bilgi edinimi değil, aynı zamanda kurumsal güvenlik uygulamalarını geliştirmek için de önem arz eden bir aşamadır. Sonuç olarak, DNS özyineleme açıklığı kontrolü, siber güvenlik stratejilerinin ayrı bir parçası olmalı ve sızma testleri ile birlikte sürekli bir gözlem altında tutulmalıdır. Doğru yapılandırmalar ve düzenli denetimlerle, bu alandaki riskler minimize edilebilir.

Teknik Analiz ve Uygulama

Recursion Nedir?

Recursion, bir DNS sunucusunun istemci adına tüm internet hiyerarşisini (Root, TLD, Authoritative) dolaşarak nihai IP adresini bulma ve bu bilgiyi istemciye iletme işlemidir. Bu süreçte, DNS sunucusu sorumlu olmadığı alan adlarına yönelik sorguları işlemekte özyineleme yeteneğine sahiptir. Ancak bu durum, yanlış yapılandırılmış sunucuların kötü niyetli aktörler tarafından istismar edilmesine neden olabilmektedir.

İlk Test: Dış Domain Sorgulama

Özyineleme açıklığı kontrolü yapmak için en basit test, bir DNS sunucusuna kendi yetki alanı dışındaki bir domain (örneğin, google.com) sorgulamaktır. Bu işlem, sunucunun özyineleme yapma yeteneğini test etmenin ilk adımıdır.

Örnek sorgu komutu:

dig @10.0.0.5 google.com A

Bu komut, 10.0.0.5 IP adresine sahip DNS sunucusunu kullanarak google.com’un A kaydını sorgular. Eğer sunucu cevap veriyorsa, bu, sunucunun özyineleme yeteneğine sahip olduğunu gösterir ve potansiyel bir açık anlamına gelir.

Bayrak Analizi (Flags)

DNS yanıt paketindeki bayraklar, sunucunun yeteneklerini ve sorgunun nasıl işlendiğini ifade eder. Aşağıda bazı temel bayraklar ve anlamları verilmiştir:

  • RA (Recursion Available): Sunucunun özyineleme hizmeti sunduğunu doğrulayan bir bayraktır. Bu durum, zafiyet belirtisi olarak kabul edilir.
  • RD (Recursion Desired): İstemcinin, sunucudan özyineleme yapmasını talep ettiğini gösterir.
  • AA (Authoritative Answer): Yanıtın, doğrudan sorumlu sunucudan geldiğini belirtir.

Bu bayrakları kontrol ederek sunucunun güvenlik durumunu daha iyi anlayabiliriz.

Tehdit Aktörü: Open Resolver

"Open Resolver" terimi, internet üzerindeki herhangi bir IP adresinden gelen rekürsif sorgulara yanıt veren, yanlış yapılandırılmış DNS sunucularını tanımlamak için kullanılır. Bu tür sunucular, kötü niyetli aktörlere, DDoS saldırıları gibi kötü amaçlı aktiviteleri gerçekleştirmeleri için olanak sağlar. Açık rekürsiyon, DNS Amplification saldırılarının temel zeminini oluşturmaktadır.

DDoS Amplification İlişkisi

DDoS saldırıları, hedefe büyük miktarda trafiği yönlendirmek için kullanılan tekniklerdir. Açık rekürsiyon, bu tür saldırılarda genellikle bir amplifier (yükseltici) olarak işlev görür. Yani, bu tür sunucular, saldırganın küçük sorgularını büyük yanıtlara dönüştürerek kurbanın bant genişliğini tüketir.

Sorgu Kısıtlama Testi: +norecurse

Bir DNS sunucusunun yalnızca özyineleme kapalıyken (iterative) nasıl davrandığını görmek için kullanılan bir diğer strateji, norecurse parametresi ile yapılmış sorgulardır. Bu test, sunucunun yetkisi olmayan bir rekürsif sorguya nasıl tepki verdiğini değerlendirir.

Örnek sorgu komutu:

dig @10.0.0.5 google.com +norecurse

Bu komut, belirtilen IP adresindeki sunucudan özyineleme talep etmeden bir sorgu gönderir. Sunucunun bu duruma verdiği yanıt, güvenlik açığını değerlendirmek için kritiktir.

Sunucu Yanıt Kodları

DNS sunucusu, çeşitli durum kodları ile yanıtlarda bulunur:

  • NOERROR: Sorgu başarıyla çözüldü; sunucu rekürsiyona açık (riskli).
  • REFUSED: Sunucu sorguyu reddetti; rekürsiyon kısıtlanmış (güvenli).
  • SERVFAIL: Sunucuda teknik bir hata oluştu veya kısıtlama politikası devrede.

Bu kodlar, sunucunun cevaplarını analiz ederek güvenlik durumunu değerlendirmeye yardımcı olur.

Nmap NSE: dns-recursion

Nmap, ağ taraması sırasında hedef sunucunun rekürsiyon açıklığını otomatik olarak tespit edebilen bir betiğe sahiptir. dns-recursion script'i, belirli bir IP adresinde özyineleme olup olmadığını kontrol etmek için kullanılır. Aşağıdaki örnek komut ile bir tarama gerçekleştirilebilir:

nmap -sU -p 53 --script dns-recursion 10.0.0.5

Bu komut, belirtilen DNS sunucusunu (10.0.0.5) tarayarak açık rekürsiyon durumu olup olmadığını kontrol eder.

Nmap ile Otomatik Tarama

Nmap’in sunduğu bu tür taramaları otomatikleştirerek güvenlik durumunu düzenli olarak izlemek büyük bir avantaj sağlar. Güvenli bir ağ yapısında, yalnızca belirli IP bloklarına özyineleme hizmeti verilmesi önerilir. Bu uygulama, sunucu yapılandırmasında aşağıdaki gibi bir ACL (Access Control List) kullanımı ile sağlanabilir:

allow-recursion { trusted_nets; };

Bu yapılandırma, sadece belirli ve güvenilir ağların DNS sorgularına özyineleme hizmeti sunmasına izin verirken, diğer IP adreslerinden gelen talepleri reddeder.

Hardening: BIND Yapılandırması

BIND (Berkeley Internet Name Domain), dünya genelinde en yaygın kullanılan DNS sunucularından biridir. Güvenli bir yapılandırma için /etc/bind/named.conf dosyasında gerekli düzenlemeler yapılmalıdır. Örneğin, özyinelemeyi kapatmanın temel yapılandırma ayarları şöyle olabilir:

recursion no;

Bu ayar, sunucunun hiçbir rekürsif sorgu yapmasına izin vermez ve bu sayede dışarıdan gelebilecek potansiyel saldırıları önler.

Windows DNS Koruması

Windows tabanlı DNS sunucuları için ise özyinelemeyi devre dışı bırakmanın birkaç yöntemi bulunmaktadır. Bunun için, DNS sunucusunun özellikleri sekmesinden gerekli ayarlamalar yapılabileceği gibi, PowerShell komutları ile de yapılandırma gerçekleştirilir:

Set-DnsServerRecursion -Enable $false

Bu komut, PowerShell üzerinden DNS sunucusunda özyinelemeyi kapatır ve sistem güvenliğini artırır.

Sızma Testi Raporlama

Son olarak, açık rekürsiyon bulguları, sızma testi raporlarında detaylı bir şekilde sunulmalıdır. Bulgu detayları, risk seviyesine göre konumlandırılmalı ve gerekli önerilerle desteklenmelidir. Raporlama aşaması, güvenlik açıklarının ciddiyetinin anlaşılmasını ve düzeltici önlemlerin alınmasını sağlamak açısından kritik bir öneme sahiptir.

Bu analiz ve uygulama adımlarının doğru bir şekilde uygulanması, DNS güvenliğinin artırılması için önemli bir katkı sağlayacaktır.

Risk, Yorumlama ve Savunma

Risk Değerlendirmesi

DNS sunucularındaki özyineleme açıklarının tespiti, siber güvenlik açısından kritik bir adımdır. Özyineleme açıklığı, yanlış yapılandırılmış bir DNS sunucusunun, istemciden gelen sorgulara yanıt vererek bütün internet hiyerarşisini (Root, TLD, Authoritative) dolaşmasına olanak tanır. Bu durum, kötü niyetli aktörlerin sunucuyu, DNS amplifikasyon saldırılarında yansıtıcı olarak kullanması için bir fırsat yaratır. Bir DNS sunucusunun özyineleme açıklığı riski, "RA" (Recursion Available) bayrağının varlığıyla doğrulanır.

Yanlış yapılandırmalar veya mevcut açıklar, bu tür sunucuların, sızan verilere ve ağ topolojisi bilgilerine erişim sağlanmasına olanak tanıyabilir. Örneğin, bir saldırgan, kötü niyetli bir sorgu göndererek DNS sunucusunun verdiği yanıt aracılığıyla, iç ağın yapısını ve üzerinde çalışan hizmetleri tespit edebilir.

Aşağıda, DNS sunucularında özyineleme açıklığına yönelik örnek bir test ve sonuçları sunulmaktadır:

dig @10.0.0.5 google.com A

Çıktı analizi, "NOERROR" yanıtı alındığında, sunucunun özyineleme açık olduğuna işaret eder; bu durum riskli bir yapı olarak nitelendirilebilir. Buna karşın, "REFUSED" yanıtı almak, sunucunun güvenli bir yapılandırmaya sahip olduğunu gösterir.

Yorumlama

Özyineleme açıkları ile ilişkili risklerin tam anlaşılması için çeşitli faktörlerin göz önünde bulundurulması gerekmektedir. DNS sunucusunun yanlış yapılandırılmış olması, siber güvenlik tehditleri için bir zemin oluşturur. Genellikle "Open Resolver" olarak adlandırılan bu tür sunucular, dışarıdan gelen belirli sorgulara yanıt vererek B aşamasında DDoS almak için fırsatlar sunarlar. Saldırganlar, bu açıkları, sahte bir kaynak IP adresi kullanarak gerçekleştirdikleri yansıtma teknikleri ile birleştirip, kurban üzerinde büyük ölçekli saldırılar düzenleyebilirler.

Bir sorgu gönderildiğinde sunucu yanıt kodları da önemli bir değerlendirme aracı sunar. Aşağıda yaygın olan bazı yanıt kodları ve bunların güvenlik durumlarıyla ilişkisi yer almaktadır:

  • NOERROR: Sorgu başarıyla çözüldü; sunucu özyinelemeye açık (Riskli).
  • REFUSED: Sunucu sorguyu reddetti; özyineleme kısıtlandı (Güvenli).
  • SERVFAIL: Sunucuda teknik bir hata meydana geldi veya kısıtlama politikasının devrede olduğu anlamına gelir.

Kodların doğru yorumlanması, sunucunun güvenlik durumu hakkında hızlı bir analiz yapabilmeyi sağlar.

Savunma

Özyineleme açıklıklarını önlemek için alınabilecek bazı profesyonel önlemler ve hardening önerileri şunlardır:

  1. Erişim Kontrol Listelerinin Uygulanması: "allow-recursion" ve "allow-query" direktifleri ile sadece belirli IP bloklarına özyineleme hizmeti vermek etkili bir yöntemdir. Aşağıdaki yapılandırma örneği, yalnızca güvenilir iç ağların DNS sorgularını işleyebileceğini belirtir:

    allow-recursion { trusted_nets; };
    
  2. BIND Yapılandırması: BIND sunucularında özyinelemeyi tamamen devre dışı bırakmak için "named.conf" dosyasında aşağıdaki şekilde düzenleme yapılmalıdır:

    recursion no;
    
  3. Düzenli Güvenlik Testleri: Nmap gibi araçlarla düzenli taramalar yaparak potansiyel açıkların tespit edilmesi gerekmektedir. Aşağıda Nmap ile özyineleme testinin nasıl gerçekleştirileceğine dair bir komut örneği verilmiştir:

    nmap -sU -p 53 --script dns-recursion 10.0.0.5
    
  4. Windows DNS Sunucusu Güvenliği: Windows sunucularında özyinelemeyi kapatmak için PowerShell kullanabiliriz:

    Set-DnsServerRecursion -Enable $false
    

Sonuç

DNS özyineleme açıklıkları, siber tehditlere karşı ciddi bir risk oluşturur ve bu durum muhtemel veri sızıntılarına, hizmet kesintilerine ve büyük ölçekli DDoS saldırılarına neden olabilir. DNS sunucularının güvenliği sağlanırken, uygun yapılandırmalar ve düzenli testlerle bu açıklıkların önlenmesi kritik önem taşır. Erişim kontrol listelerinin doğru uygulanması, sunucu yapılandırmalarının güncellenmesi ve düzenli sızma testlerinin gerçekleştirilmesi, olası saldırılara karşı etkili savunma yöntemleri arasında yer almaktadır.