Block
Block Aksiyonu Nedir?
Block aksiyonu, TR7 üzerinde çalışan vService'lere gelen isteklerin veya dönen yanıtların, tanımlanan koşullara göre kontrollü şekilde engellenmesini sağlar. Bu aksiyon, istek (request) veya yanıt (response) aşamasında devreye alınabilir.
Bloklanan istemciler, varsayılan olarak HTTP 403 (Forbidden) durum kodu ile yanıtlanır. İhtiyaca göre farklı HTTP durum kodları da kullanılabilir.
Block aksiyonu; yetkisiz erişimlerin engellenmesi, saldırı yüzeyinin daraltılması ve hassas servislerin korunması amacıyla yaygın olarak kullanılır.
Block Aksiyonunun Önemi
Trafik manipülasyonu kapsamında yapılan bloklama işlemleri, uygulama güvenliğinin ve trafik kontrolünün temel yapı taşlarından biridir. Uygun şekilde yapılandırılmış Bloklama aksiyonları sayesinde, zararlı veya istenmeyen istekler Kurum Servislerine ulaşmadan önce engellenir.
Bloklama aksiyonu;
- Yetkisiz erişim girişimlerini engeller,
- Hassas endpoint'lerin korunmasını sağlar,
- Güvenlik ihlallerinin Kurum Servislerini etkilemesini önler,
- Trafik üzerinde hızlı ve deterministik kontrol imkânı sunar,
- WAF, DDOS ve trafik kuralları ile birlikte bütünsel bir güvenlik katmanı oluşturur.
Bu nedenle Bloklama aksiyonu, TR7 üzerinde uygulanan güvenlik ve trafik politikalarının en kritik aksiyonlarından biridir.
Kullanılabildiği vService Tipleri
Çalışma Anı
Nasıl Eklenir?
Yeni bir Block Aksiyonu, TR7 web yönetim arayüzü üzerinden aşağıdaki adımlar izlenerek eklenebilir:
- Sol altta bulunan TR7 logosuna tıklanarak Configuration Menu açılır.
- Load Balancer → Actions → Add adımları takip edilir.
- Aksiyon için benzersiz ve açıklayıcı bir isim girilir.
- Action Type olarak Block seçilir.
- Aksiyona ait ilgili konfigürasyonlar yapılandırılır.
- Conditions sekmesinden aksiyonun hangi koşul/koşullarda devreye gireceği belirlenir.
Addbutonuna tıklanarak aksiyon eklenir.
Block Aksiyonu Ekleme Formu
Block Aksiyonu Ekleme Formu
INFO
Execution Level
Aksiyonun hangi aşamada çalıştırılacağını belirler.
- On Request: Aksiyon, istek ilgili Kurum Servisine iletilmeden önce uygulanır. Bu seviye, istek üzerinde değişiklik yapılması veya Kurum Servisine ek bilgi iletilmesi gereken durumlarda kullanılır.
- On Response: Aksiyon, yanıt istemciye iletilmeden önce uygulanır. Bu seviye, istemciye gönderilen yanıt üzerinde düzenleme veya ekleme yapılması gereken durumlarda kullanılır.
INFO
Hit Counter Varsayılan: Kapalı
Hit Counter, aksiyonun her çalışmasını sayar (aksiyonun kendi koşuluyla birlikte değerlendirilir; Deny gibi sonlandırıcı aksiyonlarda bile sayım kaybolmaz). Aksiyon bazlı hız ve toplamlar, vService panosundaki Action Hits sekmesinde ve canlı istatistik ekranında görüntülenir; listelerde ayrıca bir kolon olarak görünmez. Sayaç kümülatiftir; elle sıfırlama arayüzü yoktur: sayılan aksiyon kümesi değiştiğinde veya vService yeniden yüklendiğinde sıfırdan başlar, geçmiş ise panoda hız (hit/s) olarak korunur.
INFO
Set Variable on Hit
Aksiyon her çalıştığında değeri atanacak bir değişken adı girilebilir (isteğe bağlı; varsayılan boş). Ad; harf, rakam ve alt çizgiden oluşabilir (en fazla 32 karakter). Aksiyon tetiklendiğinde değişken 1 değerine atanır ve aynı vService'teki diğer koşul ve aksiyonlarda %TR7VAR(ad) akıllı değişkeniyle okunarak zincirleme davranışlar kurulabilir.
INFO
Deny Type
Bloklama işleminin istemci tarafında nasıl uygulanacağı seçilir. Seçilen deny tipi, istemciye dönecek davranışı ve bağlantının sonlandırılma şeklini doğrudan etkiler.
- Standard: İstek, tanımlanan koşul sağlandığı anda anında bloklanır ve istemciye seçilen HTTP durum kodu ile yanıt döndürülür. Bu yöntem, istemciye açık ve deterministik bir geri bildirim vererek erişimin reddedilmesini sağlar ve varsayılan bloklama yaklaşımı olarak en yaygın kullanılan deny tipidir.
- Tarpit: İstemci bağlantısı bilinçli olarak açık tutulur ve yanıt üretimi geciktirilerek trafik yavaşlatılır. Bekletme süresi, vService'in timeout profilindeki Connect timeout değerinden gelir (varsayılan 20 saniye). Bu yöntem, otomatik tarama araçları, botlar ve brute-force denemelerini bağlantı süresi ve kaynak tüketimi üzerinden yıpratmak amacıyla kullanılır.
- Silent Drop: İstemciye herhangi bir HTTP yanıtı döndürülmeden bağlantı sonlandırılır veya tamamen yok sayılır. Bu seçimde Status Code alanı gizlenir (yanıt üretilmediği için kod seçilmez). Bu yöntem, açıkça kötü niyetli olduğu tespit edilen bot, tarama ve saldırı trafiğinin sistem kaynaklarını minimum düzeyde etkileyecek şekilde engellenmesi amacıyla kullanılır.
Tarpit seçeneği yalnızca Execution Level olarak On Request seçiliyken listede yer alır; On Response seçildiğinde bu seçenek sunulmaz (önceden seçilmişse otomatik olarak Standard'a döner).
INFO
Status Code
Bloklama işlemi sırasında istemciye döndürülecek HTTP durum kodu bu alandan seçilir. Varsayılan olarak HTTP 403 (Forbidden) kullanılır.
Örnek 403 Bloklama Sayfası
Seçilen HTTP durum kodu, istemci tarafında engellemenin nasıl algılanacağını ve uygulamanın vereceği geri bildirimi doğrudan etkiler.
Yaygın kullanım senaryoları:
- 403 – Forbidden: Yetkisiz veya erişimi kısıtlanmış bir kaynağa erişim denendiğini ifade eder. En yaygın kullanılan bloklama kodudur ve çoğu güvenlik senaryosu için önerilir.
- 401 – Unauthorized: İstemcinin kimlik doğrulaması yapmadığını veya geçerli bir kimlik bilgisi sunmadığını belirtir. Bu kod seçildiğinde, istemciye erişimin kimlik doğrulama gerektirdiği mesajı verilmiş olur.
- 404 – Not Found: İstenen kaynağın mevcut olmadığı izlenimi verilir. Hassas endpoint'lerin (yönetim panelleri, özel path'ler vb.) gizlenmesi amacıyla tercih edilebilir.
- 429 – Too Many Requests: İstemcinin çok fazla istek gönderdiğini ifade eder. Rate limit, brute-force veya yoğunluk senaryolarında anlamlı bir geri bildirim sağlar.
- 503 – Service Unavailable: Servisin geçici olarak kullanılamadığı izlenimi oluşturur. Bakım, geçici kısıtlama veya kontrollü servis durdurma senaryolarında kullanılabilir.
Doğru HTTP durum kodunun seçilmesi, hem güvenlik politikalarının doğru ifade edilmesini hem de istemci davranışının istenen yönde yönlendirilmesini sağlar.
WARNING
Bazı kodlar için (ör. 426, 451) motorun hazır hata sayfası bulunmaz; bu kodlarda istemciye biçimli bir hata sayfası yerine yalnızca kodu içeren düz metin bir yanıt döner.
INFO
Conditions
Bu alanda, ilgili aksiyonun hangi koşul veya koşullar sağlandığında devreye gireceği tanımlanır.
Bir veya birden fazla koşul eklenerek, and/or yapısı ile davranışın hedefli ve kontrollü şekilde uygulanması sağlanabilir.
Koşullar hakkında detaylı bilgi Conditions sayfasında yer alır.
WARNING
Bu alanda herhangi bir koşul tanımlanmazsa, ilgili aksiyon koşulsuz (Always) olarak çalışır. Bu durumda aksiyon, ilgili vService'e gelen tüm trafiğe uygulanır.
Canlı ortamlarda, koşul tanımlanmadan aksiyon kullanılması beklenmeyen durumlara (servis kesintilerine) yol açabilir. Bu nedenle aksiyon oluşturulurken mutlaka en az bir koşul tanımlanması önerilir.
INFO
Form Butonları
Add
Add butonuna tıklanarak aksiyon ekleme işlemi tamamlanır.
Add & Repeat
Add & Repeat butonu ile aksiyon ekleme işlemi tamamlanır ve farklı konfigürasyonlarla ilgili pencereden çıkılmadan yeni bir aksiyon daha eklenebilir.
Aksiyon Eklendi
Operasyonel ve Güvenli Kullanım Önerileri
Block aksiyonu, TR7 üzerinde güçlü bir kontrol mekanizması sunar. Aşağıdaki öneriler, canlı ortamlarda güvenli ve kontrollü kullanım sağlar.
- Execution Level Seçimini Senaryoya Göre Yapın. Backend'e ulaşmaması gereken istekler için On Request, yanıt içeriğine göre kontrol gereken durumlar için On Response tercih edilmelidir.
- Deny Type Seçimini Bilinçli Yapın. Standart engellemeler için Standard, otomatik tarama ve bot aktiviteleri için Tarpit veya Silent Drop kullanımı değerlendirilebilir.
- Status Code Seçimini Amaca Göre Belirleyin. Yetkisiz erişimler için 403, rate limit veya yoğunluk senaryolarında 429 gibi uygun durum kodları tercih edilmelidir.
- Canlı Ortamda Değişiklik Öncesi "Used In" Bilgisini Kontrol Edin. Bir Block aksiyonunun hangi vService'lerde aktif olduğunu kontrol etmeden değişiklik yapılması, beklenmeyen servis kesintilerine neden olabilir.
- Bloklama Kapsamını Net Tutun. Gereğinden geniş koşullar, meşru trafiğin engellenmesine yol açabilir. Koşullar mümkün olduğunca hedefli ve net tanımlanmalıdır.
Canlı Ortamlarda Yaygın Kullanım Senaryoları
Aşağıdaki örnekler, ilgili aksiyonun gerçek sistemlerde en sık karşılaşılan kullanım senaryolarında nasıl uygulandığını göstermektedir. Bu senaryolar, canlı ortamlarda yaygın olarak tercih edilen ve sahada edinilmiş deneyimlere dayanan pratikleri temel alır.
Senaryo 1: WordPress Admin Güvenliği
Problem: WordPress yönetim paneline internet üzerinden herkes erişebiliyor, bu ciddi bir güvenlik riski oluşturuyor.
Çözüm: Sadece ofis ağından (192.168.10.0/24) gelen isteklere izin ver, diğerlerini engelle.
Konfigürasyon:
- Execution Level: On Request
- Deny Type: Standard
- Status Code: 403 Forbidden
- Conditions:
Sonuç:
- ✅ Ofis ağından (192.168.10.x) → WordPress admin panele erişim sağlanır.
- ❌ Dış ağlardan (Internet) → HTTP 403 Forbidden yanıtı alınır.
Senaryo 2: Exchange Admin Panel Koruma
Problem: Exchange Control Panel'e (ECP) internet üzerinden herkes erişebiliyor, yetkisiz erişim riski var.
Çözüm: Sadece whitelist'te tanımlı IP adreslerinden erişim izni ver, diğer tüm istekleri engelle.
Konfigürasyon:
- Execution Level: On Request
- Deny Type: Standard
- Status Code: 403 Forbidden
- Conditions:
Sonuç:
- ✅ Whitelist'teki IP'ler → Exchange Control Panel'e erişim sağlanır.
- ❌ Whitelist dışındaki IP'ler → HTTP 403 Forbidden yanıtı alınır.
Senaryo 3: Genel Admin Path Koruma
Problem: Generic admin paneline internet üzerinden herkes erişebiliyor, bu ciddi bir güvenlik riski oluşturuyor.
Çözüm: Sadece ofis ağından (192.168.10.0/24) gelen isteklere izin ver, diğerlerini engelle.
Konfigürasyon:
- Execution Level: On Request
- Deny Type: Standard
- Status Code: 403 Forbidden
- Conditions:
Sonuç:
- ✅ Ofis ağından (192.168.10.x) → Admin panele erişim sağlanır.
- ❌ Dış ağlardan (Internet) → HTTP 403 Forbidden yanıtı alınır.
Senaryo 4: SQL Injection Scanner Engelleme
Problem: SQLMap gibi SQL injection test araçları sistemde zafiyet taraması yapıyor ve Kurum Servisine gereksiz yük bindiriyor.
Çözüm: User-Agent header'ından SQLMap'i tespit et ve Tarpit modu ile yavaşlatarak engelle.
Konfigürasyon:
- Execution Level: On Request
- Deny Type: Tarpit
- Status Code: 403 Forbidden
- Conditions: HTTP Header User-Agent CONTAINS
sqlmap
Sonuç:
- ✅ Meşru kullanıcılar (normal User-Agent) → Kurum Servisine iletilir.
- ❌ SQLMap aracı → Bağlantı, timeout profilindeki Connect timeout süresi kadar (varsayılan 20 saniye) bekletilir ve HTTP 403 döndürülür.
Senaryo 5: Çoklu Scanner Tool Engelleme
Problem: Nikto, Nmap, Masscan gibi birden fazla vulnerability scanner aracı sistemde zafiyet taraması yapıyor.
Çözüm: Bilinen scanner araçlarını User-Agent header'ından tespit edip toplu olarak engelle.
Konfigürasyon:
- Execution Level: On Request
- Deny Type: Standard
- Status Code: 403 Forbidden
- Conditions:
- HTTP Header User-Agent CONTAINS
nikto ORHTTP Header User-Agent CONTAINSnmapORHTTP Header User-Agent CONTAINSmasscan
- HTTP Header User-Agent CONTAINS
Sonuç:
- ✅ Meşru kullanıcılar (normal User-Agent) → Kurum Servisine iletilir.
- ❌ Scanner araçları (Nikto/Nmap/Masscan) → HTTP 403 Forbidden yanıtı alınır.
Senaryo 6: Path Traversal Saldırı Engelleme
Problem: Saldırganlar path traversal (directory traversal) teknikleriyle üst dizinlere erişmeye çalışıyor ve hassas dosyalara ulaşmayı deniyor.
Çözüm: Path içinde traversal pattern'lerini tespit et ve hem normal hem URL-encoded formlarını engelle.
Konfigürasyon:
- Execution Level: On Request
- Deny Type: Standard
- Status Code: 403 Forbidden
- Conditions:
Sonuç:
- ✅ Normal path'ler (traversal pattern yok) → Kurum Servisine iletilir.
- ❌ Traversal girişimleri (../../ veya ..%2F) → HTTP 403 Forbidden yanıtı alınır.
Senaryo 7: Tek Domain Kontrolü
Problem: vService'e farklı Host header değerleriyle istekler geliyor, bu domain spoofing ve cache poisoning risklerine yol açıyor.
Çözüm: Sadece www.tr7.com domain'ine gelen isteklere izin ver, diğer Host header değerlerini engelle.
Konfigürasyon:
- Execution Level: On Request
- Deny Type: Standard
- Status Code: 403 Forbidden
- Conditions: HTTP Header Host NOT EQUALS
www.tr7.com
Sonuç:
- ✅ Host: www.tr7.com → Kurum Servisine iletilir.
- ❌ Farklı Host header değerleri → HTTP 403 Forbidden yanıtı alınır.
Senaryo 8: IP-Based Host Header Engelleme
Problem: Saldırganlar Host header olarak IP adresi kullanarak cache poisoning ve host header injection saldırıları yapıyor.
Çözüm: Host header içinde IP adresi pattern'i tespit et ve bu tür istekleri engelle. Domain kullanımını zorunlu kıl.
Konfigürasyon:
- Execution Level: On Request
- Deny Type: Standard
- Status Code: 403 Forbidden
- Conditions: HTTP Header Host CONTAINS IP Pattern (regex ile tespit)
Sonuç:
- ✅ Host: domain.com (domain formatı) → Kurum Servisine iletilir.
- ❌ Host: 192.168.1.1 (IP formatı) → HTTP 403 Forbidden yanıtı alınır.
Senaryo 9: Domain Fronting Engelleme
Problem: Saldırganlar TLS SNI ile HTTP Host header arasında uyumsuzluk oluşturarak domain fronting saldırısı yapıyor ve filtreleme mekanizmalarını atlatmaya çalışıyor.
Çözüm: TLS SNI değeri ile HTTP Host header değerini karşılaştır, uyumsuzluk varsa engelle.
Konfigürasyon:
- Execution Level: On Request
- Deny Type: Standard
- Status Code: 403 Forbidden
- Conditions:
- SSL SNI Info =
expected-domain.com ANDHTTP Header Host NOT EQUALSexpected-domain.com
- SSL SNI Info =
Sonuç:
- ✅ SNI ve Host header uyumlu → Kurum Servisine iletilir.
- ❌ SNI ve Host header uyumsuz (domain fronting) → HTTP 403 Forbidden yanıtı alınır.
Senaryo 10: Yüksek Riskli Ülke Engelleme
Problem: Belirli ülkelerden (Rusya, Çin, Kuzey Kore) gelen yüksek oranda saldırı trafiği tespit ediliyor ve sistemde güvenlik riski oluşturuyor.
Çözüm: GeoIP kullanarak bu ülkelerden gelen tüm istekleri engelle ve yasal sebeplerle erişilemez durum kodu döndür.
Konfigürasyon:
- Execution Level: On Request
- Deny Type: Standard
- Status Code: 451 Unavailable For Legal Reasons
- Conditions:
Sonuç:
- ✅ Diğer ülkelerden gelen istekler → Kurum Servisine iletilir.
- ❌ RU/CN/KP'den gelen istekler → HTTP 451 Unavailable For Legal Reasons yanıtı alınır (bu kodda biçimli hata sayfası yerine düz metin gövde döner).
Senaryo 11: Kritik Path'ler için Geo-Blocking
Problem: Admin paneline dünya genelinden erişim denemeleri yapılıyor, ancak sadece belirli ülkelerden erişim gerekiyor.
Çözüm: Admin paneline sadece Türkiye, ABD ve İngiltere'den erişim izni ver, diğer tüm ülkeleri engelle.
Konfigürasyon:
- Execution Level: On Request
- Deny Type: Standard
- Status Code: 403 Forbidden
- Conditions:
Sonuç:
- ✅ TR/US/GB'den /admin isteği → Kurum Servisine iletilir.
- ❌ Diğer ülkelerden /admin isteği → HTTP 403 Forbidden yanıtı alınır.
Senaryo 12: High-Risk Country List Kullanımı
Problem: Ödeme sayfalarına yüksek riskli ülkelerden gelen dolandırıcılık (fraud) girişimleri tespit ediliyor.
Çözüm: Ödeme sayfalarına sadece düşük riskli ülkelerden erişim izni ver, yüksek riskli ülkeleri engelle.
Konfigürasyon:
- Execution Level: On Request
- Deny Type: Standard
- Status Code: 403 Forbidden
- Conditions:
Sonuç:
- ✅ Düşük riskli ülkelerden /payment isteği → Kurum Servisine iletilir.
- ❌ Yüksek riskli ülkelerden /payment isteği → HTTP 403 Forbidden yanıtı alınır.
