TLS sürümüne veya cipher'a göre trafiği farklı yönlendirebilir ya da engelleyebilir miyim?
Kısa cevap
Evet, TLS TR7'de sonlandırıldığında (HTTP vService'te Encrypted (HTTPS), L7 TCP vService'te TCP + TLS). Belirli sürüm ve cipher'ları hiç kabul etmemek için TLS Security Profile'daki sürüm ve cipher ayarları kullanılır; bağlantı el sıkışmada düşer. Kabul edilen bağlantıları ayırmak için SSL Version ve SSL Cipher koşulları oluşturulur: Conditional Backend Services ile farklı Kurum Servislerine yönlendirilir, HTTP vService'te Block aksiyonuyla, L7 TCP vService'te TCP Connection Management aksiyonuyla engellenir. Passthrough'da TLS çözülmediği için bu bilgiler okunamaz.
Sorun: Eski İstemciler Ayrı Ele Alınmalı
Eski TLS sürümleriyle ya da zayıf cipher'larla gelen istemciler güvenlik politikası gereği reddedilmek, uyarı sayfasına yönlendirilmek ya da ayrı, izole sunuculara gönderilmek istenebilir. Bunun için bağlantının TLS özelliklerine göre karar vermek gerekir.
Çözüm: Dört Yöntem
| Durumunuz | Uygun yöntem |
|---|---|
| Belirli sürüm ya da cipher'lar hiç kabul edilmesin | Yöntem 1: TLS Security Profile |
| Sürüm ya da cipher'a göre farklı sunuculara | Yöntem 2: Conditional Backend Services |
| HTTP vService'te durum koduyla reddetmek | Yöntem 3: Block aksiyonu |
| L7 TCP vService'te bağlantıyı kesmek | Yöntem 4: TCP Connection Management |
Yöntem 1: TLS Security Profile Önerilen
- Nasıl çalışır Profildeki en düşük ve en yüksek sürüm aralığı ile cipher listesinin dışında kalan istemciler el sıkışmada reddedilir; bağlantı koşullara hiç ulaşmaz.
- Nerede açılırCertificates & PKI → TLS Security Profiles
- Gereksinim vService'te şifreli frontend satırı (Encrypted (HTTPS) ya da TCP + TLS)
- vService tipi HTTP, L7 TCP
Adım adım yapılandırma
Sol alttaki TR7 logosuyla Configuration Menu açılır; Certificates & PKI → TLS Security Profiles ekranında Add tıklanır (nasıl eklenir). Mevcut bir profil değiştirilecekse profil seçilip Edit tıklanır. Security Profile Name girilir.
TLS Settings (Frontend & Backend) bölümünde Min. SSL Version kabul edilecek en düşük sürüme ayarlanır (ör. TLSv1.2). TLS 1.3'ü kapatmak gerekiyorsa Max. SSL Version açılıp TLSv1.2 seçilir; varsayılan olarak kapalıdır ve üst sınır uygulanmaz.
Cipher Algorithms alanında hazır setlerden biri seçilir ya da Manual ile Algorithm List elle oluşturulur (Zayıf cipher'ları nasıl devre dışı bırakırım?). Cipher listesi TLS 1.2 ve altındaki bağlantıları belirler.
Formun altındaki Add tıklanır (mevcut profil düzenleniyorsa Edit).
Load Balancer → Load Balancer vService List ekranında vService seçilip Edit tıklanır.
Details panelinde Frontend Settings altındaki SSL Security kutusu işaretlenir ve 4. adımdaki profil seçilir (vService'te profil seçimi). Kutu yalnızca en az bir frontend satırında şifreli protokol seçiliyken listelenir.
Save tıklanır. Cluster kurulumunda varsayılan auto-sync ile değişiklik eş cihaza da gönderilir; Manual Sync Mode açıksa eş cihaza elle gönderilir.
Doğrulama
Profilin dışında kalan sürümle bağlanılır; istemcinin kendi güvenlik seviyesi eski sürümü engellemesin diye seviye düşürülür.
Komut: openssl s_client -connect 203.0.113.10:443 -servername www.example.com -tls1_1 -cipher 'DEFAULT@SECLEVEL=0'
alert protocol version · el sıkışma tamamlanmazYöntem 2: Conditional Backend Services
- Nasıl çalışır SSL Version ya da SSL Cipher koşuluna uyan bağlantılar ayrı Kurum Servislerine gönderilir; uymayanlar Default Backend Services'e gider.
- Nerede açılırLoad Balancer → Conditions · vService → Conditional Backend Services
- Gereksinim TLS'in TR7'de sonlandırılması; ayrılan trafik için Kurum Servisi
- vService tipi HTTP, L7 TCP
Adım adım yapılandırma
Load Balancer → Conditions ekranında Add tıklanır (nasıl eklenir).
Condition Name girilir (ör. eski-tls). Sürüme göre ayırmak için Criteria = SSL Version seçilir ve SSL Protocol listesinden sürüm seçilir: TLSv1.3, TLSv1.2, TLSv1.1, TLSv1, SSLv3, SSLv2. Cipher'a göre ayırmak için Criteria = SSL Cipher seçilir ve Query alanına tam cipher adı yazılır (ör. ECDHE-RSA-AES128-SHA); eşleşme tam addır ve büyük/küçük harfe duyarlıdır.
Add tıklanır. Birden fazla sürüm ya da cipher ayrılacaksa her biri için 1–3. adımlar tekrarlanır; Add & Repeat formu açık tutar.
Ayrılan trafiğin gideceği sunucular henüz tanımlı değilse Load Balancer → Backend Services ekranında Add ile eklenir (Kurum Servisi nasıl eklenir; hangi bilgiler zorunludur?).
Load Balancer → Load Balancer vService List ekranında vService seçilip Edit tıklanır.
Backend Services tablosunun başlığındaki + Conditional Backend Services tıklanır; tablonun üstünde CONDITIONAL BACKEND #1 bloğu açılır (Conditional Backend Services).
Blokta koşul olarak 3. adımdaki koşul seçilir; bloğun Backend Services tablosuna 4. adımdaki Kurum Servisleri eklenir. Kurallar yukarıdan aşağıya değerlendirilir, ilk eşleşen kural uygulanır. Diğer bağlantılar Default Backend Services tablosundaki sunuculara gider.
Save tıklanır. Cluster kurulumunda varsayılan auto-sync ile değişiklik eş cihaza da gönderilir; Manual Sync Mode açıksa eş cihaza elle gönderilir.
Doğrulama
Koşuldaki sürümle (ör. TLSv1.1) ve güncel sürümle birer istek gönderilir.
Komut: curl -sk --tlsv1.1 --tls-max 1.1 --ciphers 'DEFAULT@SECLEVEL=0' https://www.example.com/ · curl -sk https://www.example.com/
İlk istek ayrılan Kurum Servisinden · ikincisi Default Backend Services'ten yanıt alırYöntem 3: Block Aksiyonu
- Nasıl çalışır Koşula uyan HTTP istekleri seçilen durum koduyla reddedilir (varsayılan 403) ya da Deny Type ile sessizce düşürülür.
- Nerede açılırLoad Balancer → Actions → Block
- Gereksinim Yöntem 2'nin 1–3. adımlarıyla oluşturulmuş SSL Version ya da SSL Cipher koşulu
- vService tipi HTTP
Adım adım yapılandırma
SSL Version ya da SSL Cipher koşulu yoksa Yöntem 2'nin 1–3. adımlarıyla oluşturulur.
Load Balancer → Actions ekranında Add tıklanır (nasıl eklenir).
Action Name girilir (ör. eski-tls-engelle); Action Type = Block seçilir. Deny Type Standard bırakılır ve Status Code seçilir (varsayılan 403). Conditions alanına 1. adımdaki koşul eklenir.
Add tıklanır.
Load Balancer → Load Balancer vService List ekranında HTTP vService seçilip Edit tıklanır.
Details panelinde Modules altındaki Actions kutusu işaretlenir ve 4. adımdaki aksiyon seçilir.
Save tıklanır. Cluster kurulumunda varsayılan auto-sync ile değişiklik eş cihaza da gönderilir; Manual Sync Mode açıksa eş cihaza elle gönderilir.
Doğrulama
Koşuldaki sürümle istek gönderilir.
Komut: curl -sk -o /dev/null -w '%{http_code}\n' --tlsv1.1 --tls-max 1.1 --ciphers 'DEFAULT@SECLEVEL=0' https://www.example.com/
403 · güncel sürümle gelen istekler etkilenmezYöntem 4: TCP Connection Management
- Nasıl çalışır L7 TCP vService'te koşula uyan bağlantı reddedilir (Reject) ya da yanıt verilmeden düşürülür (Silent Drop).
- Nerede açılırLoad Balancer → Actions → TCP Connection Management
- Gereksinim Frontend satırında Protocol = TCP + TLS; Yöntem 2'nin 1–3. adımlarıyla oluşturulmuş koşul
- vService tipi L7 TCP
Adım adım yapılandırma
SSL Version ya da SSL Cipher koşulu yoksa Yöntem 2'nin 1–3. adımlarıyla oluşturulur.
Load Balancer → Actions ekranında Add tıklanır (nasıl eklenir).
Action Name girilir; Action Type = TCP Connection Management seçilir. Action = Reject ya da Silent Drop seçilir ve Conditions alanına 1. adımdaki koşul eklenir.
Add tıklanır.
Load Balancer → Load Balancer vService List ekranında L7 TCP vService seçilip Edit tıklanır.
Details panelinde Actions kutusu işaretlenir ve 4. adımdaki aksiyon seçilir.
Save tıklanır. Cluster kurulumunda varsayılan auto-sync ile değişiklik eş cihaza da gönderilir; Manual Sync Mode açıksa eş cihaza elle gönderilir.
Doğrulama
Koşuldaki sürümle bağlanılır.
Komut: openssl s_client -connect 203.0.113.10:443 -tls1_1 -cipher 'DEFAULT@SECLEVEL=0'
El sıkışmadan sonra bağlantı kapanır · güncel sürümle bağlantı sürerSık Yapılan Hatalar
- Profilin reddettiği sürüme koşul yazmak. Profil o sürümü el sıkışmada reddettiği için koşul hiç tetiklenmez. Önce profilin hangi sürümleri kabul ettiğine bakılır; Default Profile TLSv1.1 ve üstünü kabul eder.
- Passthrough'da uygulamak. Frontend Protocol = TCP olan L7 TCP vService'te TLS çözülmediği için sürüm ve cipher bilgisi yoktur; koşul eşleşmez.
- Koşulda TLSv1.0 aramak. SSL Protocol listesindeki TLS 1.0 değeri TLSv1'dir.
- SSL Cipher koşuluna aile adı yazmak. Koşul tam cipher adıyla, büyük/küçük harf duyarlı eşleşir;
RC4yazmak RC4 ailesini yakalamaz. Bir aileyi tamamen kapatmak için Yöntem 1 kullanılır.
Dokümantasyonda nasıl yapılır
