Büyük boyutlu istekleri (ör. belirli bir boyutun üzerini) engelleyebilir miyim?
Kısa cevap
Evet. WAF etkinse sayfa tipinin RAW sekmesindeki Raw Body Size kısıtı, istek gövdesinin Content-Length başlığında bildirilen boyutu sınırı aşan istekleri ihlal sayar ve Blocking Mode'da engeller. WAF yoksa Dynamic Condition ile Content-Length başlığı Integer greater than operatörüyle bayt eşiğine karşılaştırılır ve koşul Block aksiyonuna (Status code 413) bağlanır. Request Size (bytes) koşulu isteğin yalnızca ilk bölümünü (başlık bloğu ve tampona alınan gövde kısmı) ölçer; şişirilmiş başlıklara karşı kullanılır, dosya boyutu sınırı için kullanılmaz.
Sorun: Aşırı Büyük İstekler Kurum Servisini Yoruyor
Çok büyük dosya yüklemeleri ve şişirilmiş istek gövdeleri Kurum Servisinin belleğini ve bant genişliğini tüketir; bazı saldırılar bu yolla servisi yavaşlatır. Uygulamanın kabul ettiği boyutun üzerindeki isteklerin TR7'de durdurulması istenir.
Çözüm: Dört Yöntem
Yöntem 1 ve 2 gövde boyutunu sınırlar ve birbirinin alternatifidir; Yöntem 3 başlık bloğu için ayrıca kullanılır; Yöntem 4, Yöntem 2'nin komut satırı karşılığıdır.
| Durumunuz | Uygun yöntem |
|---|---|
| WAF lisansı var; gövde boyutu sınırı | Yöntem 1: WAF → Raw Body Size |
| WAF yok; gövde boyutu için kesin bayt sınırı | Yöntem 2: Dynamic condition (Content-Length) + Block |
| Anormal büyük başlık blokları | Yöntem 3: Request Size (bytes) + Block |
| Yöntem 2'yi komut satırından kurmak | Yöntem 4: WEB-CLI |
Yöntem 1: WAF → Raw Body Size Önerilen
- Nasıl çalışır Denetim, içerik türünden bağımsız olarak gövde taşıyan her istekte ve bütün gövde denetimlerinden önce bildirilen gövde boyutunu (
Content-Length) kısıtla karşılaştırır; kısıta uymayan istek Structure Limits kategorisinde Raw Body Size ihlali olarak puanlanır. Gövdesiz istekler bu denetime girmez. - Nerede açılır Left Monitor Panel → WAF-Protected vServices → vService → WAF Management → Page Types → kural → RAW sekmesi
- Gereksinim WAF lisansı; WAF etkin HTTP vService
- vService tipi HTTP
Adım adım yapılandırma
vService'te WAF açık değilse HTTP vService düzenlenir, Details altındaki WAF kutusu işaretlenip Save ile kaydedilir; ayrıntı: WAF, L7 DDoS & Threat Protection ve AGS'yi bir vService'e nasıl bağlarım?
WAF Management sekmesinde Page Types listesinden kural açılır (tüm site için Any paths, tek bir yükleme ucu için ilgili yol); RAW sekmesinde Add Common Rule for Raw (kural varsa Edit common rule for Raw) tıklanır.
Raw Body Size alanında Less than or Equal to seçilir ve bayt değeri (ör. 10 MB için 10485760) girilir. Denetim tamponuna sığmayan gövdeler için Block Unparsed Contents da açılabilir.
Form Add ile kaydedilir.
WAF Management sekmesinde mod kartının Edit butonuyla WAF Mode = Blocking Mode seçilip kaydedilir (WAF mode Edit ekranı). WAF Learning modunda başlar; Learning ve Monitor modlarında istek engellenmez, yalnızca kaydedilir.
Doğrulama
Komut: curl -s -o /dev/null -w '%{http_code}' -X POST --data-binary @buyuk.bin https://www.example.com/upload
WAF engelleme durum kodu (varsayılan 418)WAF-Protected vServices → vService → Event Logs ekranına bakılır.
Raw Body Size ihlali, Attack blockedYöntem 2: Dynamic Condition (Content-Length) + Block
- Nasıl çalışırDynamic Condition, isteğin
Content-Lengthbaşlığındaki değeri sayı olarak okur ve Integer greater than ile bayt eşiğine karşılaştırır; eşiği aşan istek Block ile 413 yanıtı alır ve Kurum Servisine iletilmez. - Nerede açılırLoad Balancer → Conditions → Dynamic Condition · Load Balancer → Actions → Block
- Gereksinim Yok
- vService tipi HTTP
Adım adım yapılandırma
Load Balancer → Conditions → Add ile koşul formu açılır (nasıl eklenir).
Condition Name = buyuk-govde, Criteria = Dynamic Condition seçilir; Condition Level = On Request, Condition Protocol = HTTP bırakılır (ikisi kayıttan sonra değiştirilemez). Query Key alanında fx ile Request HTTP header content değişkeni Content-Length argümanıyla seçilir; Operator = Integer greater than, Integer to compare = 10485760 (10 MB) girilir.
Koşul Add ile kaydedilir.
Load Balancer → Actions → Add ile aksiyon formu açılır.
Action Name = buyuk-istek, Action Type = Block seçilir; Execution Level varsayılan On request, Deny Type varsayılan Standard bırakılır ve Status Code = 413 seçilir (varsayılan 403).
Conditions alanında buyuk-govde seçilir. Sınır yalnızca belirli bir yükleme yoluna uygulanacaksa aynı grupta bir Path koşulu and ile eklenir.
Aksiyon Add ile kaydedilir.
Load Balancer → Load Balancer vService List ekranında HTTP vService seçilip Edit ile düzenleme formu açılır.
Details → Actions alanında buyuk-istek seçilir. Aksiyon vService'e eklenmedikçe çalışmaz.
Form Save ile kaydedilir. Cluster'da değişiklik varsayılan olarak eş cihaza otomatik aktarılır; Manual Sync Mode açıksa Synchronize ile gönderilir.
Doğrulama
Komut: head -c 11000000 /dev/zero > buyuk.bin; curl -s -o /dev/null -w '%{http_code}' -X POST --data-binary @buyuk.bin https://www.example.com/upload
413Eşiğin altında bir dosya aynı komutla gönderilir.
Uygulamanın normal yanıtı (ör. 200)Yöntem 3: Request Size (bytes) + Block
- Nasıl çalışır Koşul isteğin TR7'ye ulaşan ilk bölümünün (başlık bloğu ve o ana kadar tampona alınan gövde kısmı) bayt uzunluğunu ölçer. Gövdenin toplam boyutunu ve
Content-Lengthbaşlığını görmez; bu yüzden anormal büyük başlık bloklarına karşı kullanılır. - Nerede açılırLoad Balancer → Conditions → Request Size (bytes)
- Gereksinim Yok
- vService tipi HTTP
Adım adım yapılandırma
Load Balancer → Conditions → Add ile koşul formu açılır.
Condition Name = buyuk-baslik, Criteria = Request Size (bytes), Operator = Greater than (>) ve değer 16384 girilir (Request Size (bytes) · Senaryo 1). Ölçülen değer vService'in tampon boyutuyla sınırlı olduğundan megabayt düzeyindeki eşikler bu koşulda eşleşmez.
Koşul Add ile kaydedilir.
Yöntem 2'nin 4–10. adımları uygulanır; Conditions alanında buyuk-baslik seçilir ve Status Code = 413 kullanılır.
Doğrulama
Komut: curl -s -o /dev/null -w '%{http_code}' -H "X-Test: $(head -c 20000 /dev/zero | tr '\0' a)" https://www.example.com/
413Yöntem 4: WEB-CLI
- Nasıl çalışır Yöntem 2'deki Dynamic condition ve Block aksiyonu
lb condition/lb actionile oluşturulur, aksiyonlb serviceile vService'e eklenir. - Nerede açılır TR7 WEB-CLI →
lb condition·lb action·lb service - Gereksinim WEB-CLI erişimi
- vService tipi HTTP
Adım adım yapılandırma
WEB-CLI her satırı ayrı bir komut olarak çalıştırır; komutlar tek satırda yazılır.
smartCond = Dynamic condition, intGt = Integer greater than; %REQHEADER(Content-Length) = Request HTTP header content (Content-Length). Değişken tek tırnak içinde yazılır (dinamik koşullar).
lb condition add criteria smartCond smartVar '%REQHEADER(Content-Length)' smartOperator intGt smartIntRefValue 10485760 --name buyuk-govdeAksiyonun --cond alanı koşulun adını değil kimliğini ister. lb condition add başarılı olduğunda çıktı vermez; kimlik aşağıdaki listenin id sütununda görülür (lbConditions- ile başlar).
lb condition listlb action add type deny name buyuk-istek --denyStatusCode 413 --cond <buyuk-govde-kimliği>rules.0, rules.1… satırları vService'e bağlı aksiyonları gösterir.
lb service show <vService>Yeni aksiyon ilk boş indekse, yani mevcut aksiyon sayısına yazılır. Örnekte vService'te iki aksiyon (rules.0, rules.1) olduğu için --rules.2 kullanılır; dolu bir indekse yazmak oradaki aksiyonun yerine geçer.
lb service update id <vService> --rules.2 buyuk-istekDoğrulama
Yöntem 2'deki curl denemesi tekrarlanır.
413Sık Yapılan Hatalar
- Request size (bytes) ile yükleme boyutunu sınırlamaya çalışmak. Bu koşul yalnızca isteğin ilk bölümünü ölçer; gövdenin toplamını görmez.
- Buffer size'ı üst sınır sanmak. vService Limits'teki Buffer Size büyük dosyaları sınırlamaz (Buffer size ne işe yarar; ne zaman değiştirmeliyim?).
- Content-Length taşımayan istekleri unutmak. Parçalı (chunked) gönderilen gövdelerde
Content-Lengthbaşlığı yoktur; Yöntem 2'nin koşulu bu isteklerde eşleşmez. - WAF'ı Learning ya da Monitor modunda bırakıp engelleme beklemek. Raw Body Size ihlali yalnızca Blocking modunda engellenir.
--condalanına koşul adını yazmak. WEB-CLI'da--condkoşul kimliği bekler; ad yazılırsa aksiyon var olmayan bir koşula bağlanır.
Dokümantasyonda nasıl yapılır
