Blog
Mert Özen'in yazılım geliştirme, backend, frontend ve DevOps üzerine blog yazıları.
Domain Almak ve Sahip Olmak: Registry, Registrar, Nameserver Delegation ve Domain'i Kaybetmemek
Bir domain'i registry işletir, registrar satar, sen registrant olarak sahibisin; DNS'in nerede tutulacağı ise registrar'a yazdığın nameserver'larla belirlenir ve registrar'ın panelindeki DNS ekranı o andan sonra etkisizdir. BIND ile kurulan iki container'lık bir laboratuvarda referral'ı, glue record'u ve lame delegation'ı görüyor, RDAP ile expire tarihini izleyen bir script yazıyor ve domain'i kaybetmemek için lock, MFA ve auto-renew kontrol listesini çıkarıyoruz.
Bir Web Uygulaması için DNS Kayıtlarını Kurmak: Apex, www, api, CNAME Flattening, CAA ve Doğrulama TXT'leri
Apex'te CNAME kullanılamaz, çünkü CNAME olan bir isimde başka kayıt olamaz ve apex'te SOA ile NS zorunludur; çözüm sağlayıcının ALIAS, CNAME flattening veya Azure DNS alias özelliğidir. Bookstore'un apex, www, api ve staging kayıtlarını BIND'de kuruyor, PowerDNS'te ALIAS'ın TTL davranışını görüyor, App Service ve Front Door doğrulama TXT'lerini, CAA aramasının üst isimlere tırmanmasını ve dangling CNAME'leri bulan bir script'i gerçek koşularla inceliyoruz.
E-posta için DNS: MX, SPF, DKIM ve DMARC ile Bookstore'un Mail'lerinin Spam'e Düşmemesi
Bir mail'in spam'e düşmemesi için SPF veya DKIM'in geçmesi yetmez; DMARC, geçen domain'in kullanıcının gördüğü From: domain'iyle hizalı olmasını ister ve Gmail, Yahoo ve Outlook bunu toplu göndericilerden şart koşuyor. Laboratuvarda Bookstore'un MX, SPF, DKIM ve DMARC kayıtlarını kuruyor, gerçek kütüphanelerle bir sipariş mail'ini imzalayıp doğruluyor, 10 sorgu limitinin yalnızca bazı IP'lerde kırıldığını ve sağlayıcının varsayılan DKIM'inin neden DMARC'ı geçemediğini görüyoruz.
DNS Değişikliğini Kesintisiz Yapmak: TTL Stratejisi, Nameserver Taşıma, DNSSEC ve DNS as Code
DNS'te propagation yoktur, resolver cache'i vardır: bir değişikliği kesintisiz yapmak için TTL'i en az eski TTL kadar önce düşürür, değişikliği yapar, eski hedefi log'lar sessizleşene kadar açık tutarsın. Laboratuvarda resolver cache'ini ve negative caching'i saniye saniye izliyor, DNSSEC açıkken sağlayıcı değiştirip eski DS yüzünden SERVFAIL alıyor, güvensiz ve multi-signer geçişi karşılaştırıyor ve zone'u DNSControl ile kod olarak yönetiyoruz.
CDN Nasıl Çalışır? Edge, Origin, Cache Key, s-maxage ve Angular + API için Doğru Cache Stratejisi
Bir CDN, cevabı cache key'e göre edge'de saklar ve origin'in header'larına uyar; bu yüzden hash'li Angular dosyalarına immutable, index.html'e no-cache, katalog API'sine s-maxage ve CDN-Cache-Control, kişiye özel cevaplara private, no-store verilir. Nginx ile kurduğumuz bir edge'de public header'ın Grace'e Ada'nın siparişlerini gösterdiğini, query string'siz cache key'in sayfaları karıştırdığını ve stale yönergelerinin origin çökükken siteyi nasıl ayakta tuttuğunu gerçek isteklerle görüyoruz.
Cloudflare ile Bookstore'u Yayına Almak: Proxy, SSL/TLS Modları, Cache Rules ve Gerçek Client IP
Cloudflare'e geçerken nameserver'ı taşır, web kayıtlarını proxied, mail kayıtlarını DNS-only bırakır, SSL/TLS modu olarak Full (strict) seçer, Page Rules yerine Cache ve Redirect Rules yazar ve origin'de CF-Connecting-IP'ye yalnızca Cloudflare'in IP aralıklarından gelen bağlantılarda güvenirsin. Laboratuvarda Flexible modun ürettiği redirect döngüsünü, ASP.NET Core'da KnownIPNetworks ile sahte header'ları reddeden testleri ve Azure Front Door karşılıklarını görüyoruz.
Edge'de Güvenlik: WAF, DDoS Koruması, Rate Limiting, Bot Yönetimi ve Origin'i Kilitlemek
Edge'deki WAF, DDoS koruması, rate limit ve bot kuralları yalnızca edge'den geçen trafiği görür; origin'in IP'si sızarsa hepsi atlanır, bu yüzden origin yalnızca CDN'den gelen bağlantıları kabul etmeli. Nginx'li bir edge'de login rate limit'inin saldırıyı origin'e ulaşmadan durdurduğunu, ASP.NET Core rate limiter'ında forwarded header sırasının müşterileri nasıl koruduğunu ve IP allowlist'in neden Authenticated Origin Pulls, tunnel veya X-Azure-FDID ile tamamlanması gerektiğini görüyoruz.