Check-Host.cc

Global WKS (Well Known Service) Sorgulama

WKS (Well Known Service) kaydı, RFC 1035'teki Domain Name System'in ilk taslağı sırasında ortaya atılan, oldukça katı ve büyük ölçüde kullanımdan kaldırılmış (deprecated) bir DNS kayıt türüdür. Birincil mühendislik hedefi, belirli bir IP adresini desteklenen internet protokollerinin (özellikle TCP veya UDP) tanımlı bir listesiyle herkese açık bir şekilde eşlemek ve ilgili açık portlarını herkese açık bir şekilde ilan etmekti. Örneğin, bir yönetici, 192.168.1.100 adresinde bulunan bir sunucunun aktif olarak 25 numaralı portta SMTP ve 21 numaralı portta FTP'yi desteklediğini yayınlamak (broadcast) için bir WKS kaydı kullanabilirdi.

Bağlantı Öncesi Kaynak Optimizasyonu

Ağ hesaplamasının ilk günlerinde, sınırlı bant genişliğine sahip, yüksek gecikmeli (latency) ARPANET bağlantıları üzerinden bir TCP Handshake kurmak, hesaplama açısından pahalı ve inanılmaz derecede yavaştı. WKS kaydı bir verimlilik hilesi (efficiency hack) olarak tasarlanmıştı. Bir istemci uygulamasının, trafiği o sunucuya yönlendirmeye çalışmadan önce uzak bir sunucunun belirli bir hizmeti gerçekten destekleyip desteklemediğini doğrulamak için hafif, UDP tabanlı DNS katmanını sorgulamasına olanak tanıyordu. Bir kullanıcı bir Telnet oturumu başlatmaya çalıştıysa, ancak alan adının WKS kaydı bitmap'inde açıkça 23 numaralı portu listelemediyse, yerel istemci uygulaması bağlantı girişimini derhal iptal edebilirdi. Bu, istemcinin bir ağ zaman aşımı (timeout) beklerken takılıp kalmasını önledi ve kıtalararası bağlantılarda değerli bant genişliğinden tasarruf sağladı.

Bitmap Darboğazı (Bottleneck)

WKS kaydının ölümcül kusuru, temelindeki veri yapısıydı. Payload, her bir bitin Internet Assigned Numbers Authority (IANA) tarafından tanımlanan belirli bir port numarasına karşılık geldiği, oldukça katı bir ikili (binary) bitmap olarak kodlanmıştı. İnternet hizmetlerinin karmaşıklığı arttıkça, bu format inanılmaz derecede hantal hale geldi ve insan yöneticilerin manuel olarak sürdürmesi neredeyse imkansız hale geldi. Bir sistem yöneticisi her yeni hizmet yüklediğinde veya bir portu kapattığında, yalnızca sunucunun doğru durumunu yansıtmak için bitmap'i yeniden oluşturmak, zone serial'ını güncellemek ve global DNS yayılımını (propagation) beklemek zorundaydı. Yönetimsel ek yük (overhead), bant genişliği tasarruflarını fazlasıyla aştı.

Güvenlik Açığı ve SRV ile Değiştirilmesi

HINFO kaydı gibi, WKS protokolü de ağ güvenliğine karşı tamamen kördü. Bir sunucudaki açık olan her portun kapsamlı, düz metin (plain-text) bir listesini doğrudan public DNS katmanında yayınlamak, hacker'lara önceden taranmış, kapsamlı bir keşif (reconnaissance) haritası verdi. Nmap gibi gürültülü, kolayca tespit edilebilen port tarayıcılarına duyulan ihtiyacı tamamen ortadan kaldırdı. Bu kritik mimari ve güvenlik açıklarını kabul eden IETF, RFC 1123'ün yayınlanmasıyla WKS kaydının resmi olarak kullanılmadığını (obsolete) ilan etti. Belirli servisleri ve portları alan adlarıyla eşleme gereksinimi daha sonra tamamen SRV (Service) kaydına devredildi. SRV kayıtları, hedef makinenin tüm temel port profilini açığa çıkarmadan dinamik port ataması, Load Balancing ağırlıkları (weights) ve öncelikli failover'lara izin vererek sonsuz derecede daha fazla esneklik sağladı. BIND9 veya CoreDNS gibi modern DNS yazılımları, WKS formatlamasını tamamen yok sayacaktır.