- DNS trafiğini şifrelemenin avantajlarından birkaçı
Normal şartlarda DNS trafiği şifrelenmez ve açık metin şeklinde akar. Dolayısıyla resimde göreceğiniz gibi ağı dinleyen bir kişi nereyegidiyorum.com için bir sorgu yapıldığını görecektir.
İnternet bulutunda hangi sunuculara ulaştığınız bilgisini kolayca ortaya çıkarabilecektir. Sunucular ile aranızdaki trafiğin http ya da https kullanılarak akması bu durumu değiştirmiyor. Dolayısıyla (https kullanırken) internette ne yaptığınız üçüncü bir gözden (trafiği dinleyenler, aradaki kişiler adamlar, kadınlar, atlardan) gizlense de nerede yaptığınız DNS sorgularınız aracılığıyla açıkça anlaşılabilir. Belirtmekte fayda var ki sadece bir web sitesini ziyaret ederken değil; mail gönderirken, anlık mesajlaşma uygulamalarını kullanırken (vs.) de DNS sorguları kullanılır. Bu noktada DNS trafiğini şifrelemek gizlilik açısından mantıklı olur. DNS bazlı kısıtlamalardan kurtulmak için de trafiği şifrelemek faydalıdır.
- DNS Trafiği Nasıl Şifrelenir?
Bu iş için DNSCrypt istemcisi olan DNSCrypt-proxy kuracağız ve kullanacağız. DNSCrypt-proxy kurmadan önce kodunu derlemek için gereken tek bağımlılık olan libsodium kütüphanesini kuracağız.
- libsodium Kurulumu
https://download.libsodium.org/libsodium/releases/ adresinden son sürümü (LATEST.tar.gz) indiriyoruz ve arşivden çıkarıyoruz. Çıkarılan dizine geçtikten sonra ilk olarak sırasıyla
./configure
make && make check
komutlarını veriyoruz. Hata almazsak şuna benzer bir çıktı göreceğiz.
sudo make install
komutunu çalıştırıyoruz ve kurulum tamamlanıyor. Eğer kütüphanenin önceden derlenmiş halini kullanmayıp (bizim yaptığımız gibi) kaynak koddan derleyerek bir kütüphane kurarsanız;
ldconfig
komutunu çalıştırmanız gerekmekte.
- DNSCrypt-proxy kurulumu
Eğer şanslıysanız depolarda dnscypt-proxy’yi bulabilirsiniz ve
sudo apt-get install dnscrypt-proxy
komutuyla kurulumu yapıp bu kısmı atlayabilirsiniz. Aksi takdirde aşağıdan devam edin.
http://download.dnscrypt.org/dnscrypt-proxy/ adresinden son sürümü (LATEST.tar.gz) indirip arşivden çıkarıyoruz. Çıkardığımız dizinde sırasıyla;
./configure
make
sudo make install
komutlarıyla kurulumu yapıyoruz.
- DNSCrypt-proxy Kullanımı
sudo dnscrypt-proxy –resolver-name=<çözümleyici-ismi>
komutuyla yerel sunucumuzu başlatıyoruz. Varsayılan olarak sunucu 127.0.0.1 adresinde 53 numaralı port üzerinde dinlemede olacaktır.
Örneğin;
sudo dnscrypt-proxy –resolver-name=dnscrypt.org-fr –daemonize
komutuyla varsayılan adreste, dnscrypt.org sunucusunu kullanmak üzere, (–daemonize ile) arka planda çalıştırdık.
Ağ arayüzümüzü dnscrypt-proxy
adresi olarak ayarlamamız gerekiyor (varsayılan 127.0.0.1:53). Ardından network hizmetini yeiden başlatmalıyız.
Temel kullanımı bu şekilde belirttikten sonra birkaç noktaya değinmekte fayda var.
Dinleme adresinin 127.0.0.1 yerine 127.0.0.2 gibi aynı bloktaki başka bir adreste dinlemek üzere ayarlanmasın çakışma olmaması açısından faydalı olacağını düşünüyorum.
Eğer ortamda bir güvenlik duvarı (firewall) varsa 443 numaralı port kullanılması trafiğin birçok güvenlik duvarından rahat geçmesini sağlar.
IPV6 da desteklenmekte. IPv6 ayarlarını da yapmayı unutmamak gerekiyor.
Sisteminizi kapatıp açtığınızda dnscrypt-proxy’yi yeniden başlatmanız gerekiyor.
Aynı anda, farklı ayarlar ile birden fazla dnscrypt-proxy çalıştırabilirsiniz.
Son olarak DNSCrypt-proxy yi yetkisiz bir kullanıcı ile kullanmak güvenliğiniz açısından tavsiye edilir.
Komut satırından ek ayarları şu parametrelerle yapabilirsiniz:
–ephemeral-keys: Her sorguda bir geçici (ephemeral) açık (public) anahtar kullanılarak gizliliğin artırılmasını sağlar. Kendi sunucunuzu kullanmıyorsanız tavsiye edilir.
–local-address=<ip>[:port] Yerel olarak bağlanılacak adresi belirtir. Varsayılan 127.0.0.1:53’tür.
–logfile=<dosya> Özel bir dosyaya kayıt (log) tutmak için kullanılır. Varsayılan olarak kayıtlar, işlem eğer önplanda (foreground) çalışıyorsa stdout’a ; arkaplanda (background) çalışıyorsa syslog’a gönderilir.
–max-active-requests=<sayı> Maksimum aktif istek sayısını belirtmeye yarar. Varsayılan değer 250 dir. Hizmetin devamı için bazı durumlarda sınırlanması gerekebilir.
–pidfile=<dosya> işlem tanım değerini (PID) değerini bir dosyaya depolak için kullanılabilir.
–resolvers-list=<dosya> Çözümleyici listesini ve kullanılacak parametreleri içeren (CSV) dosyayı belirtmekte kullanılır.
–test Sunucu tarafının doğru yapılandırılmış ve geçerli bir sertifikanın kullanılabileceğini kontrol etmek için kullanılır.Kendi dnscrypt proxy’nizi izlemek (monitor etmek) için kullanabilirsiniz.
- Sonuç
Evet artık DNS sorgularımız şifreli. 3. gözler sorgularımızı dinlese bile kimin IP adresini istediğimizi göremeyecekler. Peki yeterince gizlilik sağladık mı? Bunun cevabı size kalmış.
DNS’in çalışma mantığına geri dönersek (kabaca) siz bir siteyi tarayıcınıza yazarsınız ve enter’a basarsınız, o sitenin IP adresi DNS sunucuya sorulur. Buraya kadar sızıntı sağlamıyoruz. DNS sunucudan bize IP adresi döndüğünde biz o adrese bir HTTP isteği yollarız, işte burada başka bir sızıntı var. Basitçe bir ters sorgulama (reverse lookup) ile 3. kişiler hala nereye gittiğinizi anlayabilir. Buna engel olmak için VPN ya da proxy kullanmalısınız.
- Ek bilgi için bağlantılar ve referanslar
- dnscrypt destekleyen sunucuların listesi
https://github.com/jedisct1/dnscrypt-proxy/blob/master/dnscrypt-resolvers.csv
- dnscrypt-proxy ile ilgili geniş bilgi için
https://github.com/jedisct1/dnscrypt-proxy
https://dnscrypt.org/#dnscrypt-proxy
- libsodium kütüphanesi dokümanı
https://download.libsodium.org/doc/