Linux Sunucular Üzerinde Dns Recursion Özelliğini Kapatmak

DNS Recursion özelliğinin açık olması, “DNS Amplification Attack” saldırılara maruz kalmanız demektir. Bu atak DNS kuvvetlendirmeli DDOS saldırısı olarakta bilinir. Bu nedenle DNS Recursion özelliğinin kapatılması gerekiyor ve biz bu işlemi nasıl yapacağımıza bakacağız. DDOS saldırısının sonuçlarına az/çok aşina olduğunuzu varsayarak, DNS Amplification Attack nedir.? çok fazla ayrıntıda boğmadan durumu anlatan güzel bir videoyu buraya bırakıyorum.

https://www.youtube.com/watch?v=xTKjHWkDwP0

Şimdi ilgili DNS sunucusunda Recursion özelliği açık/kapalı mı.? Herhengi bir kullanıcı makinasından sorgu göndererek test edelim. Ben linux bir client kullanıcam. Aslında DNS sunucusunun yapılandırma dosyasına bakıp bu durumu anlayabiliz ki zaten değişiklik DNS sunucusunun conf dosyasında yapılacak.

Testi “nmap” komutu ile yapacağım.

> sudo nmap -sU -p 53 -sV -P0 –script “dns-recursion” (DNS inizin IP si)

Yukarıdaki ss den de anlaşılacağı üzere DNS Recursion özelliği açık ve DNS Amplification Attack larına karşı savunmasız durumda. Şimdi Recursion özelliğini “/etc/named.conf” dosyasından disable edelim.

Recursion özelliğini disable etmek için “/etc/named.conf” dosyasının “options” bölümüne “recursion no;” satırı eklenmelidir. Aşağıda ss ile de gösterilmiştir.

Şimdi tekrar “nmap” komutumuzla test yapalım ve recursion özelliğinin son durumunu görelim.

> sudo nmap -sU -p 53 -sV -P0 –script “dns-recursion” (DNS inizin IP si)

Yukarıdan da anlaşılacağı üzere recursion özelliği pasif durumda.

Redhat/Centos 7 Üzerine DNS Server Kurulumu ve Yapılandırması – BİND(NAMED), NS(NAMESERVER) – Public DNS or Private DNS

Daha önceki yazılarımda DNS ile alakalı olarak bir çok bilgi paylaştım. DNS nedir.?, NS nedir.? gibi birçok soruyu ilgili makalelere havele edip bu yazımızda direk konuya geçiş yapmak istiyorum.

NoT : Makalede kullanılacak olan domain fatlan.com’dur, ip ler tamamen sallamasyondur.

Linux sistemlerde DNS sistemi kurup, aktif edebilmek için Bind paketini kurmalısınız. Servisin adı ise Named olarak bilinmektedir. Named ile servis yönetimini sağlayabilirsiniz.

İlk etapta bir Centos 7 sunucusu kurup ardından sabit bir ip ile network’ünü ayağa kaldırıyorum. Daha sonra yum update komutunu çalıştırıp sunucuyu stabil hale getirelim. Ardından “/etc/hostname” dosyasından sunucunun hostname’ini ns1.fatlan.com olarak değiştiriyorum. Bu değişikliği “/etc/hosts” dosyasında da yapıyorum. Bu arada update ve paketlerin kurulumundan sonra “/etc/resolv.conf” ve “/etc/sysconfig/network-scripts/ifcfg-ens0” dosyalarından dns sunucusu olarak kendi kendini göstermeyi unutmayın.

Daha sonra aşağıdaki komut ile DNS için gerekli paketlerin kurulumunu yapalım.

> yum install bind bind-utils

Şimdi asıl önemli olan yapılandırma kısmı ve ilk olarak “/etc/named.conf” dosyasını yapılandıracağız ama öncesinde “named.conf” dosyasının bir yedeğini alın.

Varsayılan olarak “named.conf”un içeriği aşağıda ss gibidir.

Şimdi bir editör yardımıyla dosyayı edit’lemeden önce neler değişecek ya da eklenecek onlardan bahsedelim.

Varsayılan satırlar;

listen-on port 53 { 127.0.0.1; };

listen-on-v6 port 53 { ::1; };

allow-query { localhost; };

Değişecek şekli;

listen-on port 53 { any; };

listen-on-v6 port 53 { none; };

allow-query { any; };

Eklenecek satırlar;

forward only; //optional

forwarders { 8.8.8.8; }; //optional

fatlan.com’a ait zone ve reverse zone bilgileri bu dosyada belirtilir.

Son ekran görüntüsü aşağıdaki gibidir.

Şimdi sıra zone dosyalarını yani dns kayıtlarının barındılacağı dosyaları oluşturmaya geldi. Bu zone ve revzone dosyalarını “/var/named/” dizininin içinde ve “/etc/named.conf” dosyasında belirttiğimiz zone isimlerinde oluşturmalıyız.

İlk öce dizine gidelim.

> cd /var/named

Ardından ilgili zone dosyalarını oluşturalım(ben named.conf’ta belirttiğim isimlere göre oluşturuyorum).

> touch fatlan.com.zone

> touch 100.34.203.revzone

Son olarak herhangi bir editör aracılığı ile “fatlan.com.zone” ve “100.34.203.revzone” zone dosyalarının içeriğini aşağıdaki ss görüldiği gibi dns kayıtlarını giriyorum.

NoT : A, CNAME ve PTR kayıtlarını örnek olsun diye ekledim. Diğer yapılandırma şekilleri önemli, zone ve revzone da farklı olmasının sebebi her iki türlü de olabildiğine örnek olması için ekledim.

fatlan.com.zone;

100.34.203.revzone;

Şimdi buraya kadar herşey tamam gibi ama bundan sonra yapmamız gereken yapılan tüm bu ayarlamalarının doğruluğunu test etmek.

İlk önce “/etc/named.conf” dosyasını doğru yapılandırmış mıyız?, kontrol edelim. Sonucunda birşey dönmüyorsa doğru demektir.

> named-checkconf

Şimdi de fatlan.com.zone dosyasını kontrol edelim.

> named-checkzone fatlan.com /var/named/fatlan.com.zone

Son olarakta 100.34.203.revzone dosyasını kontrol edelim.

> named-checkzone 100.34.203.in-addr.arpa /var/named/100.34.203.revzone

Herşey yolunda olduğuna göre named servisini başlatalım.

> systemctl start named.service

Son olarak 53 portunu dinlediğinden emin olalım. Firewall’dan 53 portuna erişim izinlerini sakın unutmayın.

> netstat -plntua | egrep -i named

Sunucu tarafında herşey bitti, şimdi bir kullanıcı makinasının dns’ini yeni sunucumuza yönlendirip kayıtları çözme durumunu kontrol edelim.

BIND Servisi Sorgu Logları Nasıl Aktif-Pasif Edilir.

Bunun için kontrol etmemiz gereken değişken query logging parametresidir. Yani bu parametre On ise sorgu log’u düşüyor, Off ise düşmüyor.

İlk önce durumunu kontrol edelim. Bunun için çalıştıracağımız ilk komut rndc status komutudur. Ve bu komutu çalıştırıdığımızda aşağıdaki gibi query logging is OFF olduğunu görünüyoruz.

> rndc status

Aktif etmek için, yani log’ları alabilmek için rndc querylog komutunu çalıştırıyoruz.

> rndc querylog yada (rndc querylog ON)

Tekrar rndc status ile durum kontrolü yapalım ve aşağıdaki gibi ON olduğunu görelim.

> rndc status

Tail komutu ile de çıktıyı alıp teyit edelim.

> tail -f /var/log/messages

Burada tekrar OFF yapmak için rndc querylog yada (rndc querylog OFF)komutunu çalıştırabilirsiniz. Bu komutu her çalıştığında durumunu tersine çevirir. OFF ise ON, ON ise OFF yapar.