Kurumsal ağlarda iç hizmetlerin güvenliğini sağlamak, özellikle TLS sertifikaları söz konusu olduğunda karmaşık bir hal alabilir. Harici hizmetler için Let's Encrypt gibi genel sertifika otoriteleri (CA) kullanmak yaygınken, iç ağlarda çalışan uygulamalar için aynı kolaylık geçerli değildir. Çoğu zaman özel alan adları (örneğin .internal) veya self-imzalı sertifikalar tercih edilir, ancak bu yöntemler beraberinde yönetim zorlukları ve güvenlik riskleri getirir. Peki, iç ağ hizmetleriniz için TLS sertifikalarını 'doğru' şekilde nasıl yapılandırabilirsiniz? İşte adım adım bir rehber.
Akla gelen ilk çözüm, ICANN tarafından özel kullanım için ayrılmış üst düzey alan adlarını (TLD) kullanmaktır. Örneğin, 'grafana.internal' gibi bir adres. Bu yöntem basit görünse de, sertifika yönetiminde ciddi sorunlara yol açar. Genel CA'lar bu alan adları için sertifika vermediğinden, self-imzalı sertifikalar oluşturmanız gerekir. Bu da her bir istemci cihazına bu sertifikayı güvenilir olarak eklemeyi veya kullanıcıların TLS uyarılarını görmezden gelmesini beklemeyi gerektirir. Özellikle çok sayıda cihazın olduğu bir ağda bu yaklaşım sürdürülemez ve güvenlik açıklarına yol açar.
Daha zarif bir çözüm, 'split-horizon DNS' olarak bilinen yöntemdir. Bu yöntemde, sahip olduğunuz genel bir alan adını (örneğin 'tuxnet.dev') kullanarak, DNS sorgularını kaynağa göre farklı yanıtlarsınız. Genel DNS çözümleyicileri, 'grafana.tuxnet.dev' sorgusuna sunucunuzun genel IP adresini döndürürken, VPN'e bağlı istemciler aynı sorguya iç ağ IP adresini (örneğin 10.0.1.10) alır. Bu sayede, genel bir CA'dan (Let's Encrypt, ZeroSSL vb.) sertifika alabilir ve iç ağda da aynı sertifikayı kullanabilirsiniz. Tek yapmanız gereken, genel trafiği engelleyen bir Web Uygulama Güvenlik Duvarı (WAF) eklemektir.
Split-horizon DNS'in avantajı, sertifika yönetimini merkezileştirmesidir. Her cihaza self-imzalı sertifika yüklemek yerine, tek bir noktada WAF yapılandırması yaparak güvenliği sağlarsınız. Ayrıca, sertifika yenileme işlemi de otomatikleştirilebilir. Bu yöntem, self-imzalı sertifika yönetiminin getirdiği iş yükünü ortadan kaldırır ve güvenlik seviyesini artırır. WAF, olası bir DNS yanıltması veya atlatma durumunda ek bir katman olarak çalışır.
Uygulamaya geçmek için üç temel bileşene ihtiyacınız var: DNS çözümleme özelliğine sahip bir VPN (örneğin NetBird), ACME istemcisi (acme.sh) ve WAF özellikli bir ters proxy (nginx). NetBird'in 'Custom Zones' özelliği sayesinde, split-horizon DNS yapılandırmasını kolayca gerçekleştirebilirsiniz. İlk adım olarak, sertifikanızı almak için acme.sh ile aşağıdaki komutu çalıştırın: 'acme.sh --issue -d grafana.tuxnet.dev --server letsencrypt --standalone'. Bu komut, geçici bir web sunucusu başlatarak HTTP-01 doğrulaması yapar.
Sertifikanızı aldıktan sonra, nginx yapılandırmanızı aşağıdaki gibi ayarlayın. Bu yapılandırmada kritik nokta, 'listen' direktifinde VPN arayüzüne bağlanmaktır. Örneğin, 'listen our-server.netbird.cloud:443 ssl;' ifadesi, sadece VPN üzerinden gelen bağlantıları kabul eder. Bu, WAF görevi görür ve genel internetten gelen tüm trafiği reddeder. Ayrıca, WebSocket bağlantıları için gerekli yönlendirmeleri de eklemeyi unutmayın. Son olarak, sertifika yenileme işlemini otomatikleştirmek için bir cron job oluşturun. acme.sh'in '--cron' parametresi, hangi sertifikaların yenilenmesi gerektiğini otomatik olarak belirler. Cron job'unuz, yeni sertifikaları nginx'in beklediği konuma kopyalamalı ve nginx'i yeniden yüklemelidir.
Bu yöntemin güvenliği, katmanlı yaklaşıma dayanır. İlk katman, split-horizon DNS ile iç kullanıcıların doğru IP'ye yönlendirilmesidir. İkinci katman ise, sadece VPN arayüzünden gelen trafiğe izin veren WAF'tır. Bu sayede, DNS yanıltması veya atlatma girişimlerine karşı ek bir koruma sağlanır. Ayrıca, sertifika yönetiminin otomatikleştirilmesi, insan hatasını en aza indirir ve güvenlik açıklarının oluşmasını engeller.
Sistem Güvenliği
Sonuç olarak, iç ağ hizmetlerinizde TLS sertifikalarını yönetmek için split-horizon DNS, genel CA ve WAF kombinasyonu en doğru yaklaşımdır. Self-imzalı sertifikaların yönetim zorluklarından kurtulurken, güvenlik seviyenizi de artırırsınız. NetBird, acme.sh ve nginx gibi araçlarla bu yapıyı kolayca kurabilir ve otomatikleştirebilirsiniz. Unutmayın, güvenlik katmanlı olmalıdır ve bu yöntem hem pratik hem de etkilidir.
Kaynak: tuxnet.dev