DNS Recursion Nasıl Kapatılır? Açık Resolver ve DNS Kapatma Rehberi

DNS Recursion Nasıl Kapatılır? Açık Resolver ve DNS Kapatma Rehberi

Kısaca

DNS recursion (özyineleme), bir DNS sunucusunun kendi barındırmadığı alan adlarını başkaları adına çözmesidir. İnternete açık bir sunucuda bu özellik herkese açık bırakılırsa sunucunuz “açık resolver” olur ve DDoS saldırılarında yansıtıcı olarak kullanılabilir.

  • Yalnızca kendi alan adlarınızın kayıtlarını yayınlayan (yetkili) bir DNS sunucusunun dış dünyaya recursion sunmasına gerek yoktur.
  • BIND’de recursion no ya da allow-recursion ile yalnızca güvenilir adreslere izin verilir; Windows Server DNS’te Advanced sekmesindeki Disable recursion kutusu işaretlenir.
  • Değişiklikten sonra dışarıdan, sunucunun barındırmadığı bir alan adıyla test edip REFUSED yanıtı alındığını doğrulayın.

“DNS kapatma” ya da “DNS nasıl kapatılır” diye arama yapan sunucu yöneticilerinin çoğu aslında DNS servisini tamamen durdurmak değil, sunucunun herkese açık özyinelemeli sorgu yanıtlamasını kapatmak ister. Çünkü recursion’ı açık bir DNS sunucusu, haberiniz olmadan başka sistemlere yönelik saldırılara alet edilebilir ve kendi ağ bağlantınızı da doldurabilir. Bu yazıda DNS recursion’ın ne olduğunu, neden kapatılması gerektiğini ve BIND, Windows Server (2016, 2019, 2022) ile Plesk’te nasıl kapatılıp test edileceğini anlatıyoruz.

DNS Recursion Nedir? Yetkili ve Özyinelemeli DNS Farkı

DNS sunucuları iki farklı iş yapabilir. Yetkili (authoritative) sunucu, yalnızca kendisine tanımlı alan adları (zone) için “bu alan adının IP’si şudur” yanıtını verir; hosting sunucunuzdaki ns1/ns2 kayıtları buna örnektir. Özyinelemeli (recursive) sunucu ya da resolver ise herhangi bir alan adını, kök sunuculardan başlayarak adım adım çözer ve sonucu soran istemciye iletir; internet servis sağlayıcınızın DNS’i böyle çalışır.

Yetkili DNS Özyinelemeli DNS (resolver)
Ne yapar? Kendi zone’ları için yanıt verir Herhangi bir alan adını çözer
Kime hizmet eder? Tüm internete Yalnızca kendi kullanıcılarına veya ağına
İnternete açık olmalı mı? Evet (port 53) Hayır
Örnek Hosting sunucusundaki ns1/ns2 ISS DNS’i, şirket içi DNS, 127.0.0.1

Sorun, iki rolün aynı sunucuda birleşip resolver tarafının herkese açık kalmasıyla başlar. Bu durumdaki sunucuya açık resolver (open resolver) denir.

Açık Resolver Neden Tehlikeli? DNS Amplification

DNS sorguları çoğunlukla UDP ile gönderilir ve UDP’de kaynak IP adresi kolayca sahte gösterilebilir. Saldırgan, kaynak adresi kurbanın IP’si olacak şekilde binlerce açık resolver’a küçük sorgular gönderir. Birkaç onluk baytlık bir sorguya, özellikle DNSSEC imzalı ya da çok kayıtlı yanıtlarda, onlarca kat büyük yanıtlar döner ve bu yanıtların hepsi kurbana yağar. Bu yönteme DNS amplification (yükseltme) saldırısı denir.

Mail hosting 1 ay ücretsiz

Sunucunuz bu zincirin bir halkası olursa sonuçlarını siz de yaşarsınız:

  • Giden trafik ağ bağlantınızı doldurur, sunucunuz ve üzerindeki siteler yavaşlar ya da erişilemez hale gelir.
  • IP adresiniz kötüye kullanım listelerine girebilir; e-posta teslimatınız da bundan etkilenir.
  • Saldırının hedefinden ve ağ sağlayıcılarından kötüye kullanım (abuse) bildirimleri gelir.
  • Önbelleğe sahte kayıt yerleştirme (cache poisoning) denemelerine açık bir yüzey bırakmış olursunuz.

Önce Hangi DNS Yazılımını Kullandığınızı Öğrenin

Linux’ta 53 numaralı portu dinleyen yazılımı şu komutla görebilirsiniz:

ss -ulnp | grep ':53 '

Çıktıda named görüyorsanız BIND kullanıyorsunuz demektir. pdns_server PowerDNS Authoritative Server’dır; yalnızca yetkili yanıt verir, recursion yapmaz. Yalnızca 127.0.0.53 adresinde systemd-resolved görüyorsanız servis dışarıya kapalıdır. Windows Server’da ise genellikle DNS Server rolü (Microsoft DNS) kullanılır; Plesk sunucularda Linux’ta BIND, Windows’ta Microsoft DNS veya BIND bulunur.

Linux’ta BIND ile DNS Recursion Kapatma

BIND’in ana yapılandırma dosyası RHEL tabanlı dağıtımlarda ve cPanel sunucularda /etc/named.conf, Debian ve Ubuntu’da /etc/bind/named.conf.options dosyasıdır. Sunucuya SSH ile bağlandıktan sonra şu adımları izleyin:

  1. Dosyanın yedeğini alın: cp /etc/named.conf /etc/named.conf.yedek
  2. Dosyayı açın ve options { ... }; bloğunu bulun. recursion ve allow-recursion satırlarını arayın; özellikle allow-recursion { any; }; gibi herkese izin veren bir satır varsa sunucunuz açık resolver’dır.
  3. Aşağıdaki iki senaryodan size uyanı uygulayın.
  4. Yapılandırmayı denetleyin; komut çıktı vermiyorsa sözdizimi doğrudur: named-checkconf
  5. Değişikliği uygulayın: rndc reconfig ya da systemctl restart named (Debian/Ubuntu’da servis adı sürüme göre named veya bind9 olabilir).

Senaryo A: Sunucu yalnızca yetkili DNS olarak çalışıyor

Sunucu sadece kendi alan adlarınızı yayınlıyorsa recursion’ı tamamen kapatın:

options {
    // ... mevcut ayarlar ...
    recursion no;
    allow-query-cache { none; };
};

Senaryo B: Sunucu kendisi ve güvendiğiniz ağ için de çözümleme yapıyor

Sunucunun kendi sorgularını da bu BIND çözüyorsa recursion’ı yalnızca güvenilir adreslere açın:

acl "guvenilir" {
    127.0.0.1;
    ::1;
    // gerekiyorsa kendi ağınız: 192.0.2.0/24;
};

options {
    // ... mevcut ayarlar ...
    recursion yes;
    allow-recursion { guvenilir; };
    allow-query-cache { guvenilir; };
};

Yapılandırmanızda view blokları varsa bu ayarlar her view içinde ayrıca tanımlanabilir; hepsini kontrol edin. Yetkili sunucularda, kendi zone’larınıza ait yanıtların da yansıtma amacıyla kötüye kullanılmasını sınırlamak için options içine rate-limit { responses-per-second 10; }; ile yanıt hızı sınırlaması (RRL) ekleyebilirsiniz.

Windows Server 2019’da Disable Recursion

Aşağıdaki adımlar Windows Server 2016, 2019 ve 2022’deki DNS Server rolünde aynıdır:

  1. Başlat menüsünde “DNS” yazarak ya da dnsmgmt.msc komutuyla DNS Yöneticisi’ni açın.
  2. Sol taraftaki sunucu adına sağ tıklayıp Properties (Özellikler) seçeneğine girin.
  3. Advanced sekmesinde Disable recursion (also disables forwarders) kutusunu işaretleyip OK ile kaydedin.
  4. Sunucu adına yeniden sağ tıklayıp All Tasks > Restart ile DNS servisini yeniden başlatın.

Aynı işlemi PowerShell ile de yapabilirsiniz:

Set-DnsServerRecursion -Enable $false
Get-DnsServerRecursion
Restart-Service DNS

Önemli: Kutunun yanındaki açıklamanın söylediği gibi bu ayar iletici (forwarder) sunucuları da devre dışı bırakır. Sunucu aynı zamanda Active Directory etki alanı denetleyicisiyse, iç ağdaki bilgisayarlar internet adlarını çözmek için ona ihtiyaç duyar. Bu durumda recursion’ı tamamen kapatmak yerine 53 numaralı portu güvenlik duvarında internete kapatın ya da Windows Server 2016 ve sonrasında gelen recursion kapsamlarıyla özyinelemeyi yalnızca iç ağa açın:

Add-DnsServerClientSubnet -Name "IcAg" -IPv4Subnet "10.0.0.0/8"
Set-DnsServerRecursionScope -Name . -EnableRecursion $false
Add-DnsServerRecursionScope -Name "IcAgKapsami" -EnableRecursion $true
Add-DnsServerQueryResolutionPolicy -Name "IcAgRecursion" -Action ALLOW -ApplyOnRecursion -RecursionScope "IcAgKapsami" -ClientSubnet "EQ,IcAg"

Plesk sunucularda

Plesk’te bu ayar DNS şablonu ayarları içindedir: Araçlar ve Ayarlar > DNS Şablonu altındaki DNS özyineleme (recursion) seçeneğini yalnızca yerel istekler (localhost) olacak şekilde değiştirin, ardından Hizmet Yönetimi ekranından DNS servisini yeniden başlatın.

DNS Recursion Kapalı mı? Nasıl Test Edilir

Testi mutlaka sunucunun dışından, örneğin kendi bilgisayarınızdan yapın; izinli bir ağdan yapılan test yanıltıcı olur. Sorguda sunucunuzun barındırmadığı bir alan adı kullanın, aksi halde yetkili yanıt alırsınız. 203.0.113.10 yerine sunucunuzun IP adresini yazın.

Windows komut isteminde:

nslookup -q=a example.org 203.0.113.10

Yanıt Query refused ise recursion kapalıdır. Alan adının IP adresleri listeleniyorsa recursion açıktır ve hemen kapatılmalıdır. Linux veya macOS’ta:

dig @203.0.113.10 example.org A

Çıktıda status: REFUSED ya da yanıtsız bir sonuçla birlikte “recursion requested but not available” uyarısı görüyorsanız sorun yoktur. Son olarak kendi alan adınızı sorgulayıp yetkili yanıtların sürdüğünü doğrulayın; dig @203.0.113.10 alanadiniz.com A çıktısında aa bayrağı görünmelidir.

DNS’i Tamamen Kapatmak Ne Zaman Doğru?

Sunucunuz hiçbir alan adı için ad sunucusu (nameserver) değilse ve DNS servisine ihtiyaç duymuyorsa servisi tamamen kapatmak en temiz çözümdür: Linux’ta systemctl disable --now named, Windows’ta DNS Server rolünü kaldırarak. Ancak alan adlarınızın NS kayıtları bu sunucuyu gösteriyorsa DNS’i kapatmak sitelerinizin ve e-postalarınızın çözülmesini durdurur; bu durumda yalnızca recursion’ı kapatın. Kendi bilgisayarınızda “DNS sunucusu yanıt vermiyor” hatası alıyorsanız konu farklıdır; DNS sunucu hatası çözümü rehberimize göz atın.

Alastyr altyapısında ağ, AS3188 üzerinde 40 Gbit yedekli bağlantılar ve Voxility’nin 1 Tbps üzeri L3-L4 anti-DDoS korumasıyla çalışır. Kendi yönettiğiniz sunucularda DNS yapılandırmasıyla ilgili sorularınız için 7/24 Türkçe destek ekibimize destek@alastyr.com adresinden ulaşabilirsiniz.

Sıkça Sorulan Sorular

DNS recursion’ı kapatırsam sitelerim erişilemez olur mu?

Hayır. Sunucunun kendi alan adlarınız için verdiği yetkili yanıtlar etkilenmez. Kapanan tek şey, sunucunun dışarıdan gelen isteklerle başka alan adlarını çözmesidir.

Recursion kapalıyken sunucunun kendisi alan adlarını çözebilir mi?

Sunucu, /etc/resolv.conf dosyasında tanımlı resolver’ı kullanır. Bu adres 127.0.0.1 ise BIND’de allow-recursion ile localhost’a izin verin; ya da sunucuyu sağlayıcınızın resolver adreslerine yönlendirin.

Windows Server 2019’da Disable recursion seçeneği nerede?

DNS Yöneticisi’nde sunucu adına sağ tıklayıp Properties penceresini açın. Advanced sekmesindeki Disable recursion (also disables forwarders) kutusunu işaretleyip kaydedin ve DNS servisini yeniden başlatın.

Disable recursion işaretliyken forwarder’lar çalışır mı?

Hayır, bu seçenek iletici sunucuları da devre dışı bırakır. İç ağınızın DNS çözümlemesi bu sunucuya bağlıysa recursion’ı kapatmak yerine 53 numaralı portu internete kapatın ya da recursion kapsamlarıyla yalnızca iç ağa izin verin.

Sunucumun açık resolver olup olmadığını nasıl anlarım?

Kendi bilgisayarınızdan, sunucunun barındırmadığı bir alan adını nslookup veya dig ile sunucunuzun IP adresine sorun. Query refused veya REFUSED yanıtı alıyorsanız kapalıdır; IP adresleri dönüyorsa açık resolver’dır.

Telefonumdaki özel (gizli) DNS ayarı bu konuyla ilgili mi?

Hayır. Telefonlardaki özel DNS ayarı, cihazın hangi resolver’ı kullanacağını belirleyen bir istemci ayarıdır. Bu yazı ise sunucu tarafındaki DNS servisinin dışarıya özyineleme yapmasını kapatmayı anlatır.

Recursion’ı kapatmak beni DDoS saldırılarından korur mu?

Sunucunuzun başkalarına yönelik saldırılarda yansıtıcı olarak kullanılmasını önler. Sunucunuza doğrudan gelen saldırılara karşı ise ağ seviyesinde DDoS koruması ve güvenlik duvarı kuralları gerekir.

DNS’iniz ve sunucunuz kontrolünüzde olsun

İzmir’deki kendi veri merkezimizde, AS3188 ağında ve Voxility anti-DDoS korumasıyla çalışan VDS sunucularda root ve yönetici erişimi sizdedir. İhtiyacınıza göre cPanel, Plesk veya DirectAdmin lisansı ekleyebilir, 7/24 Türkçe destek ekibimizden yardım alabilirsiniz.

VDS Sunucuları İncele

Alastyr Telekomünikasyon A.Ş. — 2002'den beri İzmir'de, sahip olduğu veri merkezinde hosting, alan adı ve sunucu hizmeti veriyor. RIPE NCC üyesi (AS3188) ve BTK yetkili .tr kayıt kuruluşudur. Yazılar, teknik ve destek ekibimizin müşterilerden en sık aldığı sorulara göre hazırlanır.
İnternet sitesi Alastyr İnternet Sitesi
Yazı oluşturuldu 711

Benzer yazılar

Aramak istediğinizi üstte yazmaya başlayın ve aramak için enter tuşuna basın. İptal için ESC tuşuna basın.

Üste dön