DNS(alan adı sunucusu)'nun yaptığı iş ulaşılmak istenen alan adının ip adresini döndürmek, ya da ters dns ile yazılan ipnin gerçekten hangi alan adına sahip olduğunu doğrulamaktır.
Web tarayıcımızda ulaşmak istediğimiz sitenin adını yazıp açmak için tıkladığımızda kısaca olanlar:
İlk önce yerelde cache'e, ip adresi var mı diye bakılır. Yoksa sorgu yerel ağdaki DNS sunucuya yollanır.(udp 53) Burada da yoksa yereldeki dns sunucusu kendisinden bir üstteki dns sunucusuna sorgu yapar.(tcp 53) En son bulunan ip istemciye döndürülür.
İlk önce yerelde cache'e, ip adresi var mı diye bakılır. Yoksa sorgu yerel ağdaki DNS sunucuya yollanır.(udp 53) Burada da yoksa yereldeki dns sunucusu kendisinden bir üstteki dns sunucusuna sorgu yapar.(tcp 53) En son bulunan ip istemciye döndürülür.
Peki biz bulunduğumuz ağdaki DNS sorgularına cevap vermek istersek nasıl bir yol izleyeceğiz?
Kendi bilgisayarımda olan Ubuntu üzerine bir dhcp sunucusu, bir http sunucusu, bir de dns sunucusu kurdum. DHCP sunucusu ile sanal makinalarıma ip dağıtıyorum. Yapılandırmalarını düzenledikten sonra, aynı ağda bulunan sanal makinadaki kullanıcı hurriyet.com'a ulaşmak istediğinde dns sorgusu benim dns sunucuma gelecek ve benim istediğim sayfayı hurriyet.com'muş gibi gösteriyor olacak.
Kurulumlar için:
DHCP sunucusu:
$sudo apt-get install isc-dhcp-server
HTTP sunucusu (Apache2):
$sudo apt-get install apache2 php5 libapache2-mod-php5 mysql-server-5.5 php5-mysql libapache2-mod-auth-mysql phpmyadmin
DNS sunucusu (bind):
$sudo apt-get install bind9 bind9utils
Yapılandırmalar:
* DHCP için: /etc/dhcp/dhcp.conf içinde:
"option domain-name-servers 192.168.56.1;" diyerek dns sunucu adresimizi tanımlamalıyız.
* Apache2'nin yapacağı iş, dns sonucu gösterilecek sayfayı ulaşılabilir kılmak. Bunun için kullanıcıya göstermek istediğimiz sayfanın web tasarımı kodları .conf dosyasında da yazdığı gibi /var/www/html/ dizini altında olmalı. Ben yeni bir sayfa oluşturmayıp hazır olan index.html sayfasını gösterdim.
* Dns kısmını ayarlarken:
/etc/bind/named.conf.options dosyasının sonuna aşağıdaki kısım eklenmeli. Burada bir zone tanımı yapıyoruz. "hurriyet.com" diye gelen isteklere dns sunucumuzun hangi dosyadan bakacağını söylüyoruz.
$sudo vim /etc/bind/named.conf.default-zones
zone "hurriyet.com" {
type master;
file "/etc/bind/hurriyet.zone";
allow-update { none; };
};
tanımladığımız /etc/bind/hurriyet.zone dosyasını oluşturmalıyız ve içeriği aşağıdaki gibi olmalı:
$sudo vim /etc/bind/hurriyet.zone
Son olarak DNS sunucumuzu başlatırken: $sudo /etc/init.d/bind9 start
Sanal makinadan hurriyet.com sayfasına ulaşmak istersem:
$dig hurriyet.com çıktısı:
Görüşmek üzere.
Peki istekte bulunan client ın ip adresini nasıl görebiliriz ?
YanıtlaSiltcpdump ile sunucuya gelen paketlere bakabilirsiniz. Bunun için promisc modunu aktif hale getirmek gerekiyor.
YanıtlaSilAyrıyetten dns (bind) sunucu loglarından da çıkarılabilir gibi geldi bana
YanıtlaSilAyrıyetten dns (bind) sunucu loglarından da çıkarılabilir gibi geldi bana
YanıtlaSilPeki Aybüke Hanım Bu DNS Hijacking olayını güzel anlatmışsınzı mantık olarak localde göstermişsiniz bir çok arkadaşımızın uzun suredır merakla beklediği ve hala yol bulamadığı remote dns hijacking yani herhangi bir siteyi nasıl dns zehirlenmesi gerçekleştirebiliriz bunun içinde açıklayıcı ve sonuç alınabilen bir makale hazırlamanız münkünmüdür
YanıtlaSilÖrnekleri her geçen gün görülmekte microsft yahoo google v.s dns zehirlenmesi yaşıyabiliyor ve farklı sitelere yönlendiriliyor ve bunu dünyadaki tüm kullanıcılar görebiliyor.
bunu nasıl yapabilirz__??