Tag Archives: opendns

Unbound

Bugün, Google da Türk Telekom’un hukuki bir dayanak olmadan DNS sunucularını yönlendirdiğini ve Türkiye’deki Internet kullanıcılarının fişlendiğini belirten bir değerlendirme yaptı. İletişim özgürlüğüne ve özel hayatın gizliliğine yapılmış sayısız ihlale bir yenisinin daha eklenmesinin yanında henüz TİB ve Türk Telekom’dan da konuyla ilişkili bir bilgi verilmedi. Türkiye’de Google ve Open DNS sunucuları hukuka aykırı ve hiçbir dayanağı olmadan Türk Telekom’a yönlendiriledursun, bu durumu aşabilmek için çeşitli yöntemler de mevcuttur. Bunlardan biri GNU/Linux altında Unbound kurarak kullanıcı kendini DNS önbellek zehirlemesinden ve sahte yönlendirmelerden koruyabilir. Ayrıca, özellikle DNS sorgusunda araya girilmediği ve yapılan sorguların bu şekilde elde edilmediği takdirde de gayet iyi bir yöntem olacaktır.

Unbound; önbelleğe sahip ve DNSSEC doğrulaması yapan bir DNS çözümleyicisidir. Harici bir DNS sunucusuna ihtiyaç olmadan DNS çözümleme işlemini yerine getirir. İstenildiği takdirde harici DNS sunucusu da kullanılabilir. Bununla birlikte, DNSSEC ise Türkiye örneğindeki gibi kullancıyı ve uygulamayı manipüle edilen DNS verilerinden sahip olduğu dijital imza ile koruyan bir özelliktir. Biz ise örneğimizde DNSSEC doğrulaması yapan ve yerel bir DNS çözümleyici için Unbound kurup ayarlayacağız. İlk olarak, Türkiye’deki OpenDNS, Google DNS ve İSS’lerin kendi DNS sunucularının verdiği çıktıya bakalım:

nslookup twitter.com
Server:    192.168.1.100
Address:   192.168.1.100#53

Non-authoritative answer:
Name       twitter.com
Address:   195.175.254.2

nslookup twitter.com 8.8.8.8
Server:    8.8.8.8
Address:   8.8.8.8#53

Non-authoritative answer:
Name       twitter.com
Address:   195.175.254.2

nslookup twitter.com 208.67.222.222
Server:    208.67.222.222
Address:   208.67.222.222#53

Non-authoritative answer:
Name       twitter.com
Address:   195.175.254.2

Görüldüğü üzere iki DNS sunucusu ile İSS engelli sayfayı sahte bir DNS sunucusuna yönlendirilmekte ve kullanıcı sahte DNS sunucusunda bekletilmektedir. Bu, Google’ın değerlendirmesi ve ayrıca daha önceden de bu konuya ilişkin yazılmış yazılar da doğrulamaktadır.

Şimdi, Debian ve türevi dağıtımlar için Unbound kuruluma geçecek olursak (Windows için buradan indirebilir ve yönergeler için el kitabına bakabilirsiniz. Gayet basitçe anlatılmış.):

kame ~ $ apt-get install unbound unbound-anchor
kame ~ $ sudo cp /etc/unbound/unbound.conf /etc/unbound/unbound.conf.save
kame ~ $ sudo wget -c ftp://FTP.INTERNIC.NET/domain/named.cache -O /etc/unbound/root.hints
kame ~ $ sudo cp /var/lib/unbound/root.key /etc/unbound/root.key
kame ~ $ sudo chown -R unbound:unbound /etc/unbound/root.key

/etc/unbound/unbound.conf:

###
server:
	auto-trust-anchor-file: "root.key"
	interface: 127.0.0.1
	interface: ::1
	root-hints: "root.hints"
	num-threads: 2
	hide-identity: yes
	hide-version: yes
	msg-cache-size: 16m
	msg-cache-slabs: 8
	rrset-cache-size: 32m
	rrset-cache-slabs: 8
	infra-cache-numhosts: 20000
	infra-cache-slabs: 8
	key-cache-slabs: 8
	key-cache-size: 8m
	jostle-timeout: 250
	so-rcvbuf: 4m
	so-sndbuf: 4m
	harden-short-bufsize: yes
	harden-large-queries: yes
	harden-glue: yes
	harden-dnssec-stripped: yes
	harden-below-nxdomain: yes
	prefetch-key: yes
	prefetch: yes
	unwanted-reply-threshold: 10000000
	rrset-roundrobin: yes
	outgoing-range: 8192
	num-queries-per-thread: 4096
	do-udp: yes
	do-ip4: yes
	do-ip6: no
	do-tcp: yes
python:
remote-control:
forward-zone:
###

Kopyalayıp kaydedin. Ağ yöneticinizdeki DNS sunucuları ayarını 127.0.0.1 yapın ve Unbound servisini çalıştırın (systemd ve openrc için iki örnek aşağıda).
kame ~ $ systemctl enable unbound.service
kame ~ $ systemctl start unbound.service

kame ~ $ /etc/init.d/unbound start

Yukarıdaki ayarlar hemen hemen bütün dağıtımlarda çalışacaktır. Herhangi bir sıkıntı yaşayacağınızı düşünmüyorum. DNSSEC kontrolü yapalım:

kame ~ $ dig sigok.verteiltesysteme.net @127.0.0.1

; <<>> DiG 9.9.5 <<>> sigok.verteiltesysteme.net @127.0.0.1
;; global options: +cmd
;; Got answer:
;; HEADER opcode: QUERY, status: NOERROR, id: 5409
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 4

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;sigok.verteiltesysteme.net.	IN	A

;; ANSWER SECTION:
sigok.verteiltesysteme.net. 60	IN	A	134.91.78.139

;; AUTHORITY SECTION:
verteiltesysteme.net.	3600	IN	NS	ns1.verteiltesysteme.net.
verteiltesysteme.net.	3600	IN	NS	ns2.verteiltesysteme.net.

;; ADDITIONAL SECTION:
ns1.verteiltesysteme.net. 3600	IN	A	134.91.78.139
ns2.verteiltesysteme.net. 3600	IN	A	134.91.78.141

;; Query time: 1070 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Tue Apr 01 11:49:29 2014
;; MSG SIZE  rcvd: 167

Bu şekilde A çıktısı alıyorsanız DNSSEC doğrulaması yapılmakta olduğunu söyleyebiliriz. Bununla birlikte, DNSSEC doğrulaması yapabileceğiniz siteler de mevcuttur:

Şimdi, Unbound’un sorunsuz çalıştığını ve DNSSEC doğrulaması yapıldığını farzederek Twitter çıktımızı tekrar kontrol edelim:

nslookup twitter.com 127.0.0.1
Server:         127.0.0.1
Address:        127.0.0.1#53

Non-authoritative answer:
Name:   twitter.com
Address: 199.59.148.82
Name:   twitter.com
Address: 199.59.149.230
Name:   twitter.com
Address: 199.59.149.198

Her şey yolunda gözüküyor. Yerel DNS çözümleyicimiz sayesinde İSS’nin yapmış olduğu yönlendirmeye takılmadan kullanabiliriz. Diğer yandan, adres/IP manipülasyonlarında da sahip olunan dijital imza ile kullanıcı korunabilecektir. Unbound, yerel DNS çözümleyici ve DNSSEC ile doğrulama gerçekleştirerek yaşanabilecek sıkıntıların engelleyebilmektedir. Türkiye’de Internetin gelmiş olduğu noktaya bakacak olursak herhangi bir sosyal medya üzerinde verilen DNS sunucularını kullanmak yerine Unbound iyi ve güvenli bir çözüm gibi durmaktadır. Açıkçası, Türk Telekom ve TİB’in bundan sonra ne tür bir yöntem ile Internet üzerinde kullanıcı takibi, sorgu denetimi yapabileceğini, SSL sertifikalarında mitm yapıp yapmayacağını, sahte sertifika üretip üretmeyeceğini de kestiremediğim için kesin bir şey söyleyemiyorum. Aceleci bir yapım olmadığı için bekleyip görmeyi tercih ediyorum.

DNS’in Kökü

Gece itibariyle DNS’lerde bir sıkıntı olduğu söyleniyordu. Bana da bununla ilgili epey bir mesaj geldi. “Şu İSS’yi kullanıyorum, şu DNS sunucusunu kullanıyorum fakat Internete bağlanamıyorum, zaman aşımı alıyorum” diye gelen mesajlar sonrası kendim kontrol ettiğimde bir sıkıntı görememiştim. Fakat, Twitter‘da konuyla ilgili tweet sayıları giderek artmaya başladı ve ardından da Chip Türkiye‘nin “Türkiye’de DNS’lerin de kökü kazınıyor!” haberi geldi. Sanırım, söylentilerdeki doğruluk payı giderek artmaya başladı diyebilirim.

Yazıyı yayımladıktan bir süre sonra tekrar taslak formuna aldım. DNS’lerin kökünün kazınmasından ziyade daha farklı bir şeylerin döndüğünü düşünüyordum. Sabah ise OpenDNS ve Google DNS sunucuları üzerinden yapılan sorguların her ne hikmetse Türk Telekom sunucularına yönlendiğini gördüm. Bunun birçok sebebi olabilir. DNS spoofing, DNS hijacking, arada bulunan bir transparan DNS proxysisi ile sorguların açık DNS sunucularına ulaşmadan İSS’nin DNS sunucularına yönlendirilmesi gibi. Yaptığım basit bir analizde aldığım sonuç, yapılanı doğrular nitelikteydi:

kame ~ $ nslookup twitter.com 8.8.8.8
Server:    8.8.8.8
Address:   8.8.8.8#53

Non-authoritative answer:
Name       twitter.com
Address:   195.175.254.2

kame ~ $ nslookup twitter.com 208.67.222.222
Server:    208.67.222.222
Address:   208.67.222.222#53

Non-authoritative answer:
Name       twitter.com
Address:   195.175.254.2

Bir de engellenmemiş bir adresin çıktısına bakalım:

kame ~ $ nslookup duckduckgo.com 8.8.8.8
Server:    8.8.8.8
Address:   8.8.8.8#53

Non-authoritative answer:
Name       duckduckgo.com
Address:   176.34.131.233
Name       duckduckgo.com
Address:   46.51.197.88
Name       duckduckgo.com
Address:   46.51.197.89

Engellenmemiş adres için herhangi bir sıkıntı yok gibi durmakta. Şimdi bunu daha anlaşılır bir dille anlatalım. DNS (domain name system); türkçesi alan adı sistemi, Internet ağını oluşturan birimlerin IP adreslerini akılda daha kolay tutulması için dönüştürülen adresleri (domain, www.duckduckgo.com gibi) ve iletişimi organize eden bir sistemdir. DNS sunucuları ise Internet adreslerinin IP karşlığının kayıtlı tutulduğu sunuculardır. Bir örnekle anlatmak gerekirse, www.duckduckgo.com adresini tarayıcınızdan girdiniz, bu Intenet adresindeki makine ile iletişim kurulabilmesi için DNS sunucusuna sorgunuz gitti, DNS sunucusu ise eğer bu isim karşılığındaki IP adresine sahipse, 50.18.192.250 dedi ve bu IP’ye sahip makineye yönlendirildiniz. Fakat, yukarındaki çıktıda Google DNS kullanıyorsanız ve tarayıcınızdan www.twitter.com yazdığınız anda sorgunuz gitmesi gereken Google DNS sunucuları yerine 195.175.254.2 adresine, yani Türk Telekom’a yönlendirildi.

Bu işin biraz da tekniğine bakalım. Bir İSS’siniz ve kötü niyetli bir DNS sunucusu yapmak istiyorsunuz. Bu DNS sunucunuzun IP’sini 195.175.254.2 olduğunu varsayalım. Diğer yanda, ülkenizde hizmet veren güvenilir Google gibi DNS sunucuları var. Siz bu sunucuları kendi kullanım amacınızla işleyişlerini manipüle edip yani gasp edip kendi kötü niyetli sunucunuza yönlendirdiniz (route). Ardından Google DNS kullanan biri Twitter’a girmek istedi. Sorgusunu gönderdi, hop bu sefer Google DNS yanıt verecekken kurduğunuz kötü niyetli DNS sunucusu yanıt verdi. Yani bunu yapabilmek için de adresi twitter.com/195.175.254.2 olarak atadınız. twitter.com diyen 199.59.149.230‘a erişmek yerine tanımlanmış olan 195.175.254.2 IP adresli makineye erişecektir. Bu makine ne yapabilir? Sizi burada bekletebilir, … kararla site erişime engellendi yazısı ile karşılayabilir, DNS sorgularını loglayabilir, sizlere gereksiz reklam sonuçları gösterebilir (bunu yapan birçok İSS mevcut) vs.

Şu an bizim yaşadığım durum da; siz Google veya OpenDNS kullandığınız takdirde, sorgularınız Türk Telekom’un sunucusuna gidiyor ve burada bekletiliyorsunuz. Normalde bu DNS’ler ile erişmeniz gereken adrese de sahte DNS sunucusunda bekletildiğiniz için erişemiyorsunuz. Erişemediğiniz için de sadece yaptığınız sorgu biliniyor. Bu şekilde herhangi bir hesabın, kimin kullandığının bilinmesi mümkün olmaz. Fakat, bir spoofing yapılırsa o zaman işin rengi değişir.  Spoofing’de de siz herhangi bir siteye bağlandığınızı zannedersiniz fakat IP/adres manipüle edildiği için hiç alakası olmayan, saldırganın bilgilerinizi çalacağı sahte bir yere ulaşırsınız. Böylece, örneğin Twitter’a giriş yaptığınızı sanarken sahte bir Twitter sitesi üzerinden tüm bilgileriniz alınabilir.

Şimdi bu yönlendirme ile ilgili bir diğer bir tespite gelelim. İlk başta ben Twitter ve Youtube‘a girenleri mi tespit etmek istiyorlar, bu yüzden sadece bu ikisi mi yönlendirildi diye düşünmüştüm. Fakat sonradan rastgele, daha önce engellenmiş iki porno sitesi için tekrar nslookup yaptım. Sonuç:

kame ~ $ nslookup pornhub.com 8.8.8.8
Server:    8.8.8.8
Address:   8.8.8.8#53

Non-authoritative answer:
Name       pornhub.com
Address:   195.175.254.2

kame ~ $ nslookup xnxx.com 8.8.8.8
Server:    8.8.8.8
Address:   8.8.8.8#53

Non-authoritative answer:
Name       xnxx.com
Address:   195.175.254.2

Fakat, buna henüz gasp edilmemiş bir DNS sunucusu ile bakarsak:

kame ~ $ nslookup xnxx.com 77.88.8.8
Server:    77.88.8.8
Address:   77.88.8.8#53

Non-authoritative answer:
Name       xnxx.com
Address:   141.0.174.37
Name       xnxx.com
Address:   141.0.174.38
Name       xnxx.com
Address:   141.0.174.35
Name       xnxx.com
Address:   141.0.174.39
Name       xnxx.com
Address:   141.0.174.34

Anlaşılan engelli tüm adresler Google DNS ve OpenDNS için aynı yere yönlendirilmiş durumda. İSS tarafından Yandex DNS‘te herhangi bir yönlendirme (routing) olmadığı için sonuç sorunsuz gözüküyor. Şimdilik, Google DNS ve OpenDNS kullanmamak, yaşanabilecek manipülasyonlardan ve spoofing gibi saldırılardan etkilenmeyi azaltacaktır. Kaldı ki Türk Telekom tarafından yapılan bu şeyin yasalara aykırı ve suç olduğu da söylenmektedir. Daha önce de DNS gaspı (hijacking) ile ilgili belirttiğim üzere İSS’ler bunu daha öncede yapabilmekte, olmayan sayfa sorgularında sizlere yanıt vermekte, bunu sahte DNS sunucuları ile gerçekleştirmekte, sorguları reklamların olduğu sitelere yönlendirmekteydiler.

Sonuç olarak, ortada ciddi bir sıkıntının olduğunu söylemek gerekli ve bu durum yakından takip edilmeli. Açıkçası gasp edilen 2 DNS sunucusunun engellenmemiş adreslerin sorgularına verecekleri yanıtlar da “kötü niyetli” birileri tarafından manipüle edilmeye açıktır. Şu anda dava hazırlıkları da yapılmakta. Yazıyı kafam çok karışmış bir şekilde yazdım. Hatam varsa şimdiden kusura bakmayın. Bilgilendirirseniz memnun olurum.

Bu konuyla ilgili olarak kısaca birkaç link vereyim (siz de konuyla ilgili yazı linkleri verirseniz buraya eklerim):

[1] http://www.turk-internet.com/portal/yazigoster.php?yaziid=46356
[2] https://eksisozluk.com/entry/41565793

Ekleme (03.04.2013): Twitter yasağı Anayasa Mahkemesi tarafından kaldırıldı ve sonunda TİB denilen kurum-cuk kademeli olarak engeli kaldırdıklarını duyurdu. Peki DNS yönlendirmesi bitti mi? Hemen VPN, Tor vs kullanmayı bırakıp Twitter’a girmek mantıklı mı? Yeni analizimize bakalım:

kame ~ $ nslookup twitter.com 8.8.8.8
Server:         8.8.8.8
Address:        8.8.8.8#53

Non-authoritative answer:
Name:   twitter.com
Address: 199.16.156.70
Name:   twitter.com
Address: 199.16.156.38
Name:   twitter.com
Address: 199.16.156.198

Peki engeli henüz kaldırılmamış Youtube için bakalım:

kame ~ $ nslookup youtube.com 8.8.8.8
Server:         8.8.8.8
Address:        8.8.8.8#53

Non-authoritative answer:
Name       youtube.com
Address:   195.175.254.2

O da ne? DNS yönlendirmesi devam ediyor! Yani; VPN, Tor vs. kullanmaya GoogleDNS, OpenDNS gibi yönlendirilmiş DNS sunucuları kullanmamaya kaldığınız yerden devam ediyorsunuz.

DNSCrypt

Veri trafiğini daha iyi şifrelemenin en iyi yollarından biri de DNSCrypt kullanmaktır. Sizleri küresel dinleme ve yapacağınız hatalardan korumayacak ama DNS trafiğiniz şifreli bir hale dönüşecektir.

DNSCrypt kısaca, bir istemci ile DNS çözücü arasındaki iletişimi şifreleyen bir araçtır. Diğer bir deyişle, DNSCrypt proxysi doğrudan yerel çözücü olarak kullanabileceğiniz ya da DNSCrypt protokolü olarak DNS isteklerini gönderen, şifreleyen ve doğrulayan yerel bir servis sağlamaktadır. Bununla birlikte, DNSCrypt yüksek hızlı ve yüksek güvenlikli elliptic-curve kriptosu kullanmakta ve istemci ile birinci-seviye çözücü arasındaki iletişimi korumaya odaklanmaktadır.

DNSCrypt’i bu kadar farklı kılan şeylere bakarsak eğer, SSL nasıl HTTP web trafiğini HTTPS şifreli web trafiğine çeviriyorsa DNSCrypt de sıradan bir DNS trafiğini şifreli DNS trafiğine dönüştürmektedir. Bu da kullanıcıya dinleme ya da man-in-the-middle saldırıları gibi durumlarda koruma sağlamaktadır. Ayrıca, DNSCrypt platform bağımsız bir uygulamadır ve GNU/Linux, Windows ya da iOS (jailbreak şartı var) sistemlerde rahatlıkla kullabilirsiniz. Örneğimiz GNU/Linux üzerinde olacak fakat sizler farklı platformlar için en altta verilmiş bağlantılar üzerinden hareketle gidebilirsiniz.  Bununla birlikte, dağıtımınızın ne olduğunu bilmiyorum. Eğer, kullandığınız dağıtımın depolarında dnscrypt paketi yok ise direkt 2. yönteme bakabilirsiniz.

1. Depodan kurulum

İşlemlerimizi terminal üzerinden root olarak gerçekleştireceğiz. Hemen bir tane açın ve:

kame ~ $ apt-get install dnscrypt-proxy (pacman -S dnscrypt-proxy veya dağıtımınız neyse onun paket yöneticisi ile kurulumu gerçekleştirin.)

Kurulum tamamlandıktan sonra dnscrypt-proxy servisini başlatın. Debian ve türevi dağıtımlarda bu otomatik olarak gerçekleşecektir. Eğer başlamazsa:

kame ~ $ /etc/init.d/dnscrypt-proxy start

systemd kullanan farklı bir dağıtımda:

kame ~ $ systemctl enable dnscrypt-proxy
kame ~ $ systemctl start dnscrypt-proxy

yaparak başlatabilirsiniz.

2. Elle kurulum

Eğer depolarınızda yok ise aşağıdaki adımları gerçekleştirin.

kame ~ $ wget -c http://download.dnscrypt.org/dnscrypt-proxy/dnscrypt-proxy-1.3.3.tar.gz
kame ~ $ tar xzf dnscrypt-proxy-1.3.3.tar.gz
kame ~ $ cd dnscrypt-proxy-1.3.3
kame ~ $ ./configure
kame ~ $ make
kame ~ $ sudo make install

Bu aşamaların herhangi birinde (make install hariç) hata alırsanız mevcut hatayı aratarak eksik kütüphane veya paketleri kurmanız gerekebilir.

3. Kullanım

Kurulum aşamalarını tamamlamış iseniz artık kullanıma geçebiliriz. Statik IP ayarları yaparak kullanımını göstereceğim. Sadece DNS sunucusuna yazarak da kullanabilirsiniz. Seçim size kalmış.

kame ~ $ sudo ifconfig

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.3  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::52e5:49ff:feda:8b5a  prefixlen 64  scopeid 0x20
        ether 50:e5:49:da:8b:5a  txqueuelen 1000  (Ethernet)
        RX packets 345058  bytes 405146897 (386.3 MiB)
        RX errors 0  dropped 8  overruns 0  frame 0
        TX packets 231282  bytes 53324829 (50.8 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Görüldüğü üzere eth0 kullanmış olduğum bağlantım. inet değeri ise bilgisayarımın ip’si. Ağ yöneticiniz NetworkManager veya başka bir şey olabilir. Ağ yöneticinizinde düzenlemek üzerekullandığınız bağlantıyı (eth0, wlan0 vs.) açın (örneğin Edit connections -> Ethernet (eth0) -> Edit -> IPv4 Settings) ve:

Adress: 192.168.1.3
Netmask: 255.255.255.0
Gateway: 192.168.1.1

şeklinde düzenleyin. Son olarak DNS Servers (DNS sunucusu) kısmına 127.0.0.1 yazın, kaydedin ve ağ yöneticinizi tekrar başlatın. 127.0.0.1, bizim yerel DNSCrypt proxymizdir. Bundan sonraki süreçte artık trafiğimiz şifreli bir şekilde akmaya başlayacaktır.

Dikkat etminiz gereken en önemli nokta DNSCrypt erişime engelli siteleri aşmak için bir araç olmadığıdır. Veri trafiğini en iyi şekilde şifrelemeye çalışmakta fakat bu süreçte IP’niz gizlenmiyor, yeriniz değişmiyor, Internete çıkış noktanız farklılık göstermiyor. Bunu kesinlikle aklınızdan çıkarmayın. Diğer platformlar için indirme bağlantıları aşağıdadır:

DNS Leak Tehlikesi

Kullandığımız anonim ağlara ya da VPN tünellerine aldanıp anonim olduğumuzu zannederken, aslında tüm Internet aktivitelerimizin İSS tarafından rahatça izlenip kaydedilebilmesi, bir DNS sızıntısı ile o kadar kolay ki.

  • DNS Sızıntısı (Leak) Nedir?

what-is-a-dns-leak
Anonim bir ağ ya da VPN servisi kullandığınız zaman, bilgisayarınızdan geçen tüm trafiğin bu anonim ağ ya da  servis üzerinden güvenli bir şekilde gönderildiği varsayılır. Tor veya VPN kullanmanızdaki temel neden, trafiğinizi İSS’nizden ve diğer üçüncü kişilerden gizlemek, anonimliğinizi arttırmaktır. Fakat bazı durumlar vardır ki, siz güvenli bir VPN bağlantısı kurduğunuzu düşünseniz bile, İSS’niz Internet trafiğinizi izleyebilir ve çevrimiçi aktivitelerinizi monitörleyebilir. Yani, bir nedenle sorgularınız VPN bağlantınız ya da anonim ağ yerine İSS’nizin DNS sunucularına da yönleniyorsa, burada bir DNS sızıntısı (leak) var demektir. Şema üzerinden anlatırsak; bir VPN tüneline sahipsiniz ve EFF için bir sorguda bulundunuz. Normal olarak sorgunuz tünelden VPN servisine, VPN servisinin DNS sunucusu ve oradan da EFF’ye ulaşmalı. Fakat, sorgunuza İSS’niz DNS sunucusu da cevap vermektedir. Bu da şu anlama gelmektedir; İSS’niz İnternet aktivitilerinizi bir bir kaydetmekte, sizleri rahatça izlemektedir.

Anonimliği tehdit eden en büyük tehlikelerden biri DNS sızıntısıdır. Çünkü, anonim bir ağa bağlı olsanız bile (mesela Tor), işletim sisteminiz anonim servis tarafından atanan anonim DNS sunucuları yerine kendi varsayılan sunucularını kullanmaya devam etmektedir. Bu da kullanıcılara sahte gizlilik hissi vermekte ve sonuçları üzücü olmaktadır.

Etkilenenler;
VPN sunucuları
Socks proxyleri (Tor gibi)

Etkilenmeyenler;
CGI Proxyleri
SSH tünel ile HTTP proxyleri

  • Transparan DNS Proxyleri

transparent-dns-proxy

Günümüzde bazı İSS’lerin Transparan DNS Proxysi adında bir teknoloji kullandığı bilinmektedir. Bu şu işe yarıyor; siz eğer bir DNS sorgusu yaparsanız, İSS bunu sadece kendi DNS’leri üzerinden (TCP/UDP port 53) yapılmaya zorluyor. Bir örnek vererek anlatalım. Siz DNS sunucusu olarak OpenDNS‘i kullanmaktasınız ve EFF için bir sorgu yapacaksınız. Transparan DNS Proxysisi sizin isteğiniz OpenDNS sunucularına ulaşmadan araya girip akışı keserek İSS’nin kendi DNS sunucusuna yönlendirmekte ve OpenDNS sunucusu yerine İSS DNS sunucusu cevap vermektedir. Siz tabi bu noktada “Ben VPN kullanıyorum, güvendeyim.” veya “Tor kullanıyorum, güvendeyim.” diyebilirsiniz. Fakat, sonuçlar sizin beklediğiniz yönde gerçekleşmemektedir (şemalar DNS leak test’ten alıntıdır).

  • Tehlikenin Boyutlarına Dair

Bir tehlike modeli üzerinde (Modeller çoğaltılabilir. Mesela ücretsiz anonim socks proxyler üzerinden modeller oluşturulabilir, denemesi size kalmış.) sizlere DNS sızıntısı göstereyim. Modelimiz şu; Amerika lokasyonlı bir VPN servisi kullanıldığınızı düşünün. Ayrıca tarayıcınız da Tor üzerinden internete (exit-node da Amerika’da) girdiği farzedilmekte. Fakat, dinamik ip kullanmaktasınız ve özel bir DNS ayarına sahip değilsiniz;

2013-10-20-002934_1920x1080_scrot

Tor veya VPN servisinizin DNS sunucularını görmeniz (görmezseniz daha iyi) doğal olarak beklenendir. Sizin tek görmek istemeyeceğiniz şey ise, trafiğinizi ondan gizlediğinizi sandığınız İSS’niz olacaktır. Fakat, sonuca bakarsak;

2013-10-20-014138_1920x1080_scrot

Tam bir facia! En üstte VPN servisinizi görüyorsunuz. Daha da kötüsü, siz Tor kullanmanıza ve VPN tüneli oluşturmanıza rağmen, ve tüm bunların üzerine kendinizi tamamen güvende (tamamen olmasa da bir nebze) hissederken, farkında olmadığınız bir DNS sızıntısına sahipsiniz. Diğer enteresan nokta, Firefox, socks proxy (Tor) yerine işletim sisteminin bağlı olduğu ağ (İSS) üzerinden DNS sorgusu gerçekleştirip, Tor’u tamamen atlamış. Tabi burada benim aklımı daha çok kurcayalayan şey, TTNet’in ya da Türkiye’de hizmet veren herhangi bir İSS’nin transparan dns proxysine ya da proxlerine sahip olup olmadığı. Gerçi, TTNet pişkin pişkin Phorm kullanmaya devam edip ve DPI ile paket analizlerine dalmış olduğu için bunu sormak (gene de şunda veya bunda vardır diyemiyorum) abesle iştigaldir.

  • DNS Sızıntı Testi

Böyle bir durumla karşıya karşıya olup olmadığınızı anlamak için;

– DNS Leak Test: https://www.dnsleaktest.com
– IP Leak: http://ipleak.net/

  • İSS’nin DNS Gaspı (Ekleme: 19.11.2013)

Buradaki işlemleri terminalden gerçekleştireceğiz. Önce, varolmayan bir domain adresine ping atalım;

kame $ % ping yokboylebirdomain.ltd
PING yokboylebirdomain.tld (195.175.39.75): 56 data bytes
64 bytes from 195.175.39.75: icmp_seq=0 ttl=236 time=336 ms
64 bytes from 195.175.39.75: icmp_seq=1 ttl=236 time=292 ms
64 bytes from 195.175.39.75: icmp_seq=2 ttl=236 time=274 ms

İşte aradığımız! Var olmayan bir domain’e 195.175.39.75 IP’si üzerinden yanıt geliyor. Yani İSS’niz (örnekte gerçek) sahte bir adres üzerinden sorgularınıza yanıt veriyor.

kame $ % nslookup yokboylebirdomain.tld
Server: 192.168.2.1
Address: 192.168.2.1#53

Non-authoritative answer:
Name: yokboylebirdomain.tld
Address: 195.175.39.75
Name: yokboylebirdomain.tld
Address: 195.175.39.71

Sahte IP’yi sonunda yakaladık; 195.175.39.71!

  • Ne Yapmalı?

Öncelikle, testi yaptığınızı ve kötü sonuçla karşılaştığınızı varsayarak; bir, statik ip ayarını yapmayı öğrenin. Internette bununla ilgili girilmiş tonlarca yazı, alınmış ekran görüntüsü ve nasıl yapacağınızı anlatan videolar bulunmakta. Bir aramanıza bakar. Hangi işletim sistemini kullanırsanız kullanın, bunu yapın.

İki, iyi bir DNS servisi bulun. Benim bu konudaki önerim aşağıda. Eğer, sizin farklı görüşleriniz varsa, ben sadece Google DNS’i kullanmamanızı tavsiye ederim. Onun yerine OpenDNS‘i gönül rahatlığıyla (dediğime pişman olmam umarım) kullanın, kullandırın.

Üç, Firefox’unuzu aşağıda anlattığım şekilde ayarlayabilirsiniz. Ayrıca, kötü bir VPN servisi kullanmayın, para veriyorsanız da paranızı ziyan etmeyin.

Dört, eğer Windows kullanıyorsanız, öncelikle Toredo‘yu Windows cmd üzerinden kapatın (netsh interface teredo set state disabled). İyi bir firewall kurabilirsiniz. Son olarak, DNS Leak Test’in şu önerilerini uygulayın.

Beş, GNU/Linux’ta alternatif olarak Polipo kurup kullanabilirsiniz.

Altı, Dnscrypt kurup kullanabilirsiniz (Platform bağımsız!).

  • Hangi DNS Servisi?

Ben OpenNIC Project‘in DNS sunucularını kullanmaktayım. Beni kullanmaya iten en önemli ayrıntısı, ücretsiz, sunucuların kayıtlarını bir süre sonra (saatte bir, 24 saatte bir ya da hiç tutmayarak) silmesi (anonimleştirmesi), birçok ülkeden, istediğiniz DNS sunucusunu kullanmanıza olanak vermesi. Şimdilik, sicili gayet temiz ve sunucuları da performans olarak üzmeyecek düzeyde.

  • Firefox Ayarı

Firefox’ta bu dertten kolayca kurtulmak isterseniz eğer, adres çubuğuna about:config yazarak Firefox’un ayarlarını açabilirsiniz. Açtıktan sonra;

network.proxy.socks_remote_dns bulun ve onu true yapın. Böyleyece Firefox bağlı olduğu ağ üzerinden değil socks proxy üzerinden (ayarladıysanız Tor) DNS sorgusu yapacaktır. Eğer kullandığınız uygulamalar DNS ön yüklemesi yapıyorsa, ayarlarında DNSPrefech var mı yok bu bir bakın. Firefox için network.dns.disablePrefetch bulun ve true yapın.

  • Sonuç

DNS sızıntısı basit ve küçümsenecek bir durum değildir. Bunu iyice anlamak lazım. Bir diğer nokta da, “ben Tor’la yasaklı siteye girebiliyorsam nasıl isteğim İSS’me gitsin?” sorusu. Burada bir hataya düşüyorsunuz; Tor’la siteye girmek farklı bir şeydir, siteye girmek için gönderdiğiniz isteğin aynı anda İSS’nize de gitmesi (İSS üzerinden girmeseniz dahi) farklı bir şeydir. Sizin kaçınmanız gereken, konunun da özü, isteğin İSS’nin DNS  sunucularına da gitmesi. “Onu kullanmayı bilen zaten şunu da ayarlar.” yanlış bir bakış açısıdır. Ayarladığını zannedersiniz, güncellersiniz ayarlarınız sıfırlanır, değişir, “VPN kullanıyorum ya, n’olcak.” dersiniz, böyle bir olasılıktan haberdar değilsinizdir ya da iyi bir tehlike modeliniz yoktur, zor duruma düşersiniz.

Anonimlik sizin tehlike modelinize dayanır ve anonimlik düzeyiniz ölçülebilir (bunu her yazımda tekrarlayacağım). Bunun bilincinde olun!