Mertcan GÖKGÖZ
Takip Et
Horus Teknoloji, Sistem Uzmanı & DevOps & Python
· 3 dak. Okunur

Unbound ile DNS Over TLS Kurulumu

Yeni bir teknoloji olan ve DNS protokolünü daha güvenli bir hale getirmesi ile bilinen DNS Over TLS teknolojisini Unbound üzerinde nasıl kullanabileceğinizi anlatmaya çalışacağım.

DNS Over TLS Nedir?

TLS üzerinden DNS**(DNS Over TLS)**, SSL sunucularıyla tüm bağlantıların TLS kullanılarak güvenli bir şekilde yapılmasını sağlayan bir güvenlik protokolüdür. Bu, İSS'lerin hangi web sitesine eriştiğinizi görmesini engellemede etkilidir. TLS zaten bu işe yaramaktadır.

TLS üzerinden DNS aslında RFC 7858'de belirtilmiştir. Tüm DNS verilerinin bir TLS üzeri DNS bağlantı noktasına gönderilmesini gerektirir.

TCP Fast Open kullanıldığında TLS el sıkışmasının hemen başlatılması gerekir.

dns-over-tls-gorsel1

TLS el sıkışması, TLS bağlantısının doğrulamasının sağlandığı süreçtir.

Kullanım oranları DNS endüstrisine(sunucuların desteklemelerine) bağlıdır. Bir sunucu SSL/TLS ile yapılandırılmışsa, TLS'nin üzerindeki DNS kendi yetenekleri dahilinde kullanılacak ve TLS üzerinden DNS keyfi sunacaktır.

Google’ın DNS sunucuları zaten TLS üzerinden DNS'yi desteklemektedir. Aynı zamanda bu özellik CloudFlare DNS hizmetindede bulunmaktadır.

dns-over-tls-gorsel2

DNS'yi TLS üzerinden etkinleştirmek istiyorsanız, yalnızca onu destekleyen bir DNS sunucusu bulmak zorundasınız.

Unbound Üzerinde Yapılacak Değişiklikler

Unbound bir ana bilgisayar adı sorgulamak için root DNS sunucularında en baştan başlamalı ve yetkili sunuculara doğru ilerlemelidir. (recursive DNS)

unbound-dns-temsili-gorsel

root.hints bir kopyasını Internic'ten indirin ve /var/unbound/etc/root.hints olacak şekilde konumlandırım.

wget ftp://FTP.INTERNIC.NET/domain/named.cache -O /var/unbound/etc/root.hints

Root DNS sunucularını unbounda dahil ettikten hemen sonra ayarlarımızı yapmamız gerekiyor. Bu yüzden aşağıdaki parametreleri /etc/unbound/unbound.conf.d içerisine herhangi bir ad ile sonu .conf olacak şekilde konumlandırın.

server:
   server:
    num-threads: 2
    access-control: 0.0.0.0/0 allow
    cache-max-ttl: 14400
    cache-min-ttl: 600
    do-tcp: yes
    do-ip4: yes
    do-ip6: yes
    do-daemonize: yes
    hide-identity: yes
    hide-version: yes
    interface: 0.0.0.0
    port: 53
    minimal-responses: yes
    prefetch: yes
    qname-minimisation: yes
    rrset-roundrobin: yes
    ssl-upstream: yes
    use-caps-for-id: yes
    verbosity: 1
    root-hints: "/etc/unbound/root.hints"

remote-control:
    control-enable: no

forward-zone:
    name: "."
    forward-addr: [email protected]         # quad9.net primary
    forward-addr: [email protected]         # cloudflare primary
    forward-addr: [email protected] # quad9.net secondary
    forward-addr: [email protected]         # cloudflare secondary

Firewall Kurallarının uygulanması ile işlemimiz son buluyor. Artık DNS sunucunuzu rahatlıkla kullanabilirsiniz.

iptables -A INPUT -p tcp --dport 53 -j ACCEPT
iptables -A INPUT -p udp --dport 53 -j ACCEPT

DNS servisinin başlatılması işlemini yapıyoruz.

systemctl start unbound.service

cloudflare-ile-dns-over-tls-keyfi

Bonus

Unbound kullanırken, DNS üzerinden reklam engelleme işlemi yapabilirsiniz. Bunun için yapmanız gereken aşağıdaki komutu çalıştırmak.

curl -sS -L --compressed "http://pgl.yoyo.org/adservers/serverlist.php?hostformat=unbound&showintro=0&mimetype=plaintext" > /etc/unbound/unbound_ad_servers

Bundan hemen sonra unbound yapılandırma dosyanızın içerisine aşağıdaki tek satırlık parametreyi eklemek

include: "/etc/unbound/unbound_ad_servers"