- Konu sahibi
- #1
SSL proxy, istemci ile web sunucusu arasındaki TLS/SSL bağlantısını arada karşılayan ve trafiği sunucuya ileten proxy katmanıdır. En yaygın kullanımda ziyaretçi HTTPS bağlantısını proxy’ye kurar; proxy isteği inceleyip yönlendirir ve ardından origin sunucuya yeni bir bağlantı açar. Bu nedenle SSL proxy, çoğu senaryoda şifrelemeyi sonlandıran bir ters proxy işlevi görür.
Proxy bulunmayan basit bir HTTPS yapısında tarayıcı web sunucusuyla TLS el sıkışması yapar. SSL proxy kullanılan yapıda akış iki ayrı bağlantıya bölünür:
Proxy ile origin arasındaki ikinci bağlantı HTTPS değilse, ziyaretçi ile proxy arasındaki trafik şifreli olsa bile proxy ile sunucu arasındaki bölüm ağ üzerinde açık taşınabilir. Bu nedenle hassas verilerde yalnızca dış bağlantının HTTPS olması yeterli görülmemelidir.
Örneğin
Kullanılacak yapı, proxy’nin yalnızca geçiş yapıp yapmadığına ve origin’e giden bağlantının nasıl korunacağına göre belirlenir:
İkinci bağlantının da HTTPS olması iki ağ bölümünü şifreler; proxy içeriği çözdüğü için bunu yalnız istemci ile origin arasında kurulan tek bir uçtan uca şifreli oturumla karıştırmayın. TLS sonlandırma, proxy’nin HTTP içeriğini görebildiği anlamına gelir. Proxy güvenilir bir bileşen olmalı, sertifika özel anahtarları korunmalı ve origin yalnızca beklenen proxy kaynaklarından erişilebilir olacak şekilde sınırlandırılmalıdır. Proxy’nin arkasındaki uygulama, gerçek istemci IP’sini taşıyan başlıklara da koşulsuz güvenmemelidir; bu başlıklar yalnızca güvenilen proxy tarafından yazılıyorsa kullanılmalıdır.
Dış bağlantı HTTPS görünmesine rağmen uygulama sürekli HTTP’ye yönlendiriyorsa sorun genellikle proxy’nin TLS’i sonlandırdığı bilgisini origin’e doğru aktarmaması veya uygulamanın güvenilen proxy ayarının eksik olmasıdır. Sertifika hatası ise çoğunlukla yanlış alan adı, eksik sertifika zinciri ya da proxy’de tanımlanmamış bir host nedeniyle oluşur.
Nasıl çalışır?
Proxy bulunmayan basit bir HTTPS yapısında tarayıcı web sunucusuyla TLS el sıkışması yapar. SSL proxy kullanılan yapıda akış iki ayrı bağlantıya bölünür:
- Tarayıcı, alan adı için proxy’nin sunduğu sertifikayı doğrular ve proxy ile şifreli bağlantı kurar.
- Proxy, HTTP isteğini çözer; yönlendirme, erişim kontrolü, oran sınırlama veya günlükleme gibi işlemleri uygulayabilir.
- Proxy, origin sunucuya HTTP veya HTTPS üzerinden ayrı bir bağlantı açar.
- Origin yanıtı proxy üzerinden tekrar tarayıcıya iletilir.
Proxy ile origin arasındaki ikinci bağlantı HTTPS değilse, ziyaretçi ile proxy arasındaki trafik şifreli olsa bile proxy ile sunucu arasındaki bölüm ağ üzerinde açık taşınabilir. Bu nedenle hassas verilerde yalnızca dış bağlantının HTTPS olması yeterli görülmemelidir.
Örneğin
example.com için ziyaretçi proxy’ye bağlanır. Proxy, sertifikayı sunar ve isteği özel ağdaki web sunucusuna HTTPS ile iletir. Kullanıcı açısından tek bir HTTPS sitesi vardır; işletim açısından ise iki ayrı TLS oturumu bulunur. Proxy ile origin arasında TLS kullanılmıyorsa bu örnekte güvenli zincir proxy’de sona erer.SSL proxy seçerken temel kararlar
Kullanılacak yapı, proxy’nin yalnızca geçiş yapıp yapmadığına ve origin’e giden bağlantının nasıl korunacağına göre belirlenir:
| Yapı | Proxy’de TLS | Proxy-origin bağlantısı | Uygun kullanım |
|---|---|---|---|
| TLS geçişi | Sonlandırılmaz | İstemcinin TLS oturumu devam eder | Proxy’nin içeriği incelemeden iletmesi |
| TLS sonlandırma | Proxy’de çözülür | HTTP veya HTTPS olabilir | Yönlendirme, filtreleme ve önbellekleme |
| TLS sonlandırma ve yeniden şifreleme | Proxy’de çözülür | Yeni HTTPS oturumu | İnternet ve iç ağ bölümünü de şifreli tutma |
İkinci bağlantının da HTTPS olması iki ağ bölümünü şifreler; proxy içeriği çözdüğü için bunu yalnız istemci ile origin arasında kurulan tek bir uçtan uca şifreli oturumla karıştırmayın. TLS sonlandırma, proxy’nin HTTP içeriğini görebildiği anlamına gelir. Proxy güvenilir bir bileşen olmalı, sertifika özel anahtarları korunmalı ve origin yalnızca beklenen proxy kaynaklarından erişilebilir olacak şekilde sınırlandırılmalıdır. Proxy’nin arkasındaki uygulama, gerçek istemci IP’sini taşıyan başlıklara da koşulsuz güvenmemelidir; bu başlıklar yalnızca güvenilen proxy tarafından yazılıyorsa kullanılmalıdır.
Uygulama öncesi ve sonrası kontrol listesi
- DNS veya ağ yönlendirmesinde alan adının gerçekten SSL proxy’ye ulaştığını doğrulayın. Origin sunucunun doğrudan dışarı açılması, proxy kurallarını devre dışı bırakabilir.
- Proxy üzerinde alan adıyla eşleşen sertifikayı tanımlayın. Sertifikanın istemci tarafından doğrulanabilir olması ve özel anahtarın yalnızca gerekli bileşenlerde bulunması gerekir.
- Proxy-origin bağlantısı için HTTP mi HTTPS mi kullanılacağına karar verin. Hassas veriler için ikinci bağlantıyı da koruyun. HTTPS seçmekle yetinmeyin; origin sertifikasının güven zinciri ve hedef sunucu adı doğrulamasını etkinleştirin.
- Origin sunucuda proxy’den gelen isteğin doğru sanal host’a ve doğru porta yönlendiğini kontrol edin. Yanlış host bilgisi, hatalı site veya döngü oluşturabilir.
- Test sırasında tarayıcıdaki sertifika bilgilerini, uygulamanın HTTPS algısını ve yönlendirme davranışını inceleyin. Uygulama kendisini HTTP sanıyorsa güvenli olmayan yönlendirmeler veya hatalı çerez ayarları oluşabilir.
- Proxy devre dışı bırakıldığında origin’e doğrudan erişilebiliyorsa bunun beklenen bir yönetim yolu olup olmadığını değerlendirin. Beklenmiyorsa güvenlik duvarı veya ağ erişim kuralını düzeltin.
Dış bağlantı HTTPS görünmesine rağmen uygulama sürekli HTTP’ye yönlendiriyorsa sorun genellikle proxy’nin TLS’i sonlandırdığı bilgisini origin’e doğru aktarmaması veya uygulamanın güvenilen proxy ayarının eksik olmasıdır. Sertifika hatası ise çoğunlukla yanlış alan adı, eksik sertifika zinciri ya da proxy’de tanımlanmamış bir host nedeniyle oluşur.