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.