Ben sistemd-resolved'i Linux sunucularımın çoğunda varsayılan DNS stub çözümleyici olarak bir süredir kullanıyorum. Hafif, NetworkManager ile iyi entegre olur ve doğru yapılandırıldığında DNS-over-TLS (DoT) ile yerleşik yedekleme ve DNSSEC doğrulamasını yapabilir. Bu yazıda güvenli çözümleme için nasıl kurduğumu anlatacağım, özellikle StubListener özelliğine odaklanarak ve doğrulamanın gerçekten çalıştığını nasıl kontrol edeceğimi göstereceğim.
İlk olarak resolved'in aktif olduğundan emin olalım. Çoğu modern dağıtımda zaten çalışıyor olsa da kontrol edebilirsin:
systemctl is-active systemd-resolved
Etkin değilse başlat ve etkinleştir:
sudo systemctl enable --now systemd-resolved
Varsayılan olarak resolved, /etc/resolv.conf'teki 127.0.0.53 adresine işaret eden tek yayın DNS kullanır. Bu stub dinleyicidir. Bu bağlantıyı DoT'ye yükseltmek için TLS destekleyen üst DNS sunucularını yapılandırman gerekir, örneğin Cloudflare (1.1.1.1) veya Quad9 (9.9.9.9), ve resolved'e bu sunucular için TLS kullanmasını söylemen gerekir.
Ana yapılandırma dosyası /etc/systemd/resolved.conf'tır. Genellikle önce yedek alır, sonra düzenlerim:
sudo cp /etc/systemd/resolved.conf /etc/systemd/resolved.conf.bak
sudo nano /etc/systemd/resolved.conf
İçinde aşağıdaki satırları açıp ayarları yaparım:
[Resolve]
DNS=1.1.1.1#cloudflare-dns.com 9.9.9.9#dns.quad9.net
FallbackDNS=8.8.8.8 8.8.4.4
DNSOverTLS=yes
DNSSEC=yes
DNS satırı, TLS doğrulaması için ana bilgi adıyla birlikte üst sunucuları belirtir. #hostname kısmı kritik — resolved'e TLS sertifikasının bu isimle eşleştiğini doğrularak düşürme veya sahtecılık saldırılarını önler. FallbackDNS, DoT sunucularına ulaşılamadığında normal UDP/TCP'ye geri dönmesini sağlar (DNSSEC etkinse hâlâ doğrulama yapar). DNSOverTLS=yes'i TLS'in mümkün olduğu yerlerde zorunlu kılmak için, DNSSEC=yes'i ise imza doğrulamasını etkinleştirmek için tutarım.
Kaydedip hizmeti yeniden başlatırım:
sudo systemctl restart systemd-resolved
Şimdi DoT'nin gerçekten kullanılıp kullanılmadığını kontrol etmeliyiz. Bunun en iyi yolu, stub çözümleyiciyi sorgulayıp AD (Kimlik Doğrulanmış Veri) bayrağını bakmaktır; bu bayrak DNSSEC doğrulamasının başarılı olduğunu gösterir:
systemd-resolve --status
Şunlara bak:
- Geçerli DNS Sunucusu: 1.1.1.1
- DNSSEC Destekli: evet
Ardından çözümlemeyi test et:
systemd-resolve example.com
Çıktıda "DNSSEC validation: yes" görüyorsan her şey yolunda. Ayrıca TLS el sıkışmasının başarılı olduğunu journal'den de kontrol edebilirsin:
journalctl -u systemd-resolved -f
Bazen karşılaştığım bir sorun, DNSOverTLS=yes'in sadece DoT kullanacağı anlamına gelmesi yanlış algılanıyor. Aslında opportunistic (gönüllü) bir davranış gösterir; TLS el sıkışması başarısız olursa, DNSOverTLS=opportunistic olarak ayarlanmadığı sürece veya güvenlik duvarı kurallarıyla zorunlu kılınmadığı sürece düz DNS'e geri döner. Daha sıkı kurulumlar için bazen 53 numaralı bağlantı noktası dışarıya doğru yalnızca DoT IP'lerine izin verecek şekilde engellerim, ancak bu ileri seviye ve captive portal'ları bozabilir.
Another useful feature is StubListener. By default, resolved listens on 127.0.0.53:53. But you can make it listen on other interfaces too — say, if you want to run a local DoT forwarder for other devices on your network. To enable that, add:
[Resolve]
...\nListeners=127.0.0.53 192.168.1.10
Then restart. Now, other devices can point to 192.168.1.10:53 and get DoT-protected, DNSSEC-validated resolution through your host. I use this on my home lab gateway.
Bir diğer yararlı özellik StubListener. Varsayılan olarak resolved 127.0.0.53:53'te dinler. Ancak başka arayüzlerde de dinlemesini sağlayabilirsin — örneğin ağdaki diğer cihazlar için yerel bir DoT iletici çalıştırmak istersen. Bunu etkinleştirmek için şunu ekle:
[Resolve]
...\nListeners=127.0.0.53 192.168.1.10
Sonra hizmeti yeniden başlat. Şimdi diğer cihazlar 192.168.1.10:53 adresini kullanarak konağın üzerinden DoT korumalı ve DNSSEC doğrulanmış çözümleme alabilir. Ben bu yapıyı ev laboratuvarı ağ geçidimde kullanıyorum.
Son olarak, drill veya dig +tls gibi bir araçla her şeyi doğrulayabiliriz:
drill @127.0.0.53 example.com
Yanıt bölümündeki ad bayrağını kontrol et. Ayarlıysa DNSSEC doğrulaması geçti.
Ortamımda bu kurulum, özellikle güvensiz ağlarda DNS sorgularının manipüle edilmediğine dair güven veriyor. Hafif, stubby gibi ekstra proxy gerektirmiyor ve DHCP ile VPN'lerle sorunsuz çalışıyor. Linux sunucularınız veya masaüstünüz varsa ve DNS bütünlüğü size önemliyse, systemd-resolved'i DoT ve DNSSEC için doğru şekilde ayarlamak 10 dakikanız değer.
systemd parçalarının sıkça kullanım dışı kaldığını, ancak ayarlandığında temiz bir şekilde gerçek sorunları çözdüğünü daha önce systemd dilimleri hakkındaki yazımda da belirttiğim gibi (https://furkanikkan.com/urun/systemd-slice-ile-bellek-ve-io-sinirlamasi-kaynak-izolasyonu-rehberi-88) hatırlatmak isterim.
Kapak görseli: personalgraphic.official · CC0 (Openverse / kamu malı) · https://www.flickr.com/photos/198895458@N04/53097628210
