Kubuntu – Ubuntu üzerinde DNSCrypt kullanımı

  • 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.

nereyegidiyorumwireshark

İ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.

makecheck

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ç

crypted

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.