waf rule-parts
waf rule-parts komutu, bir WAF kuralının denetim parçalarını yönetir. Her parça isteğin bir bölgesini (yol, sorgu dizesi, başlıklar, gövde) ve o bölgedeki bir anahtarı hedefler; anahtarın adının, sayısının ve değerinin hangi sınırlar içinde kalacağını belirler.
Komut Özeti
Zorunlu Alanlar
add komutunda CLI zorunlu alanları aşağıdaki sırayla, tek tek ister; biri yazılmadan sonrakini göstermez. Alanlar alan adı ile değeri birlikte yazılır. Bölgeye özgü alanlar dördüncü sıradaki loc yazıldıktan sonra listelenir.
| Sıra | Alan | Durum | Değer |
|---|---|---|---|
| 1 | poolId | Zorunlu | Parçanın bağlı olduğu vService kaydı |
| 2 | hostGroupId | Zorunlu | Parçanın bağlı olduğu host grubu kaydı |
| 3 | ruleId | Zorunlu | Parçanın ait olduğu kural; kurallar eşleştikleri yolla listelenir |
| 4 | loc | Zorunlu | path · query · header · json · xml · form · raw. Oluşturulduktan sonra değiştirilemez |
update komutunda dördüncü sırada loc yerine id istenir; list, show ve delete komutları ilk üç alanı ister.
show ve delete komutlarında ilk üç alandan sonra parçanın kimliği alan adı olmadan yazılır. Parçalar seçim listesinde bölge: anahtar biçiminde, anahtarsız olanlar bölge: (all keys) olarak görünür.
Hedef Anahtar
| Alan | Ne yapar | Arkasına ne yazılır |
|---|---|---|
--arg | Denetimin bölgedeki hangi anahtara uygulanacağını belirler | Anahtar adı. Boş bırakıldığında denetim bölgedeki bütün anahtarlara uygulanır. Oluşturulduktan sonra değiştirilemez |
Bölgelere Göre Alan Aileleri
Her bölge kendi alan ailelerini açar. Aşağıdaki tablo hangi ailenin hangi bölgelerde bulunduğunu gösterir; ardından her bölgenin alanları tek tek yazılmıştır.
| Alan ailesi | Hangi bölgelerde |
|---|---|
Toplam boyut kısıtı (Size) | path · raw · query · header |
Derinlik kısıtı (Depth) | path · json · xml |
Anahtar kısıtları (KeyLength, KeyCount, AllowedArgs) | query · header · json · xml · form |
Zorunlu anahtarlar (MustArgs) | query · header · form |
İçerik engelleme (BlockAll, BlockInvalid) | json · xml · form |
İzinli MIME tipleri (AllowedMimeTypes) | form · raw |
Boyut, derinlik, anahtar uzunluğu ve anahtar sayısı kısıtlarının hepsi aynı üç alandan oluşur: işleç (.op), değer (.val) ve aralık sonu (.val2).
İşleç none değilse değer zorunludur
Şemadaki kısıt, işleç none dışında bir değer aldığında .val alanının sayı olmasını, işleç - iken ayrıca .val2 alanının da sayı olmasını gerektirir.
loc path — istek yolu
| Alan | Ne yapar | Arkasına ne yazılır |
|---|---|---|
--pathSize.op | Bölgenin toplam boyutunun nasıl karşılaştırılacağını seçer | none kısıtlama yok · <= · = · >= · - aralık (varsayılan -, 1–1024) |
--pathSize.val | Karşılaştırılacak değeri belirler | Sayı; işleç - iken aralığın başı |
--pathSize.val2 | Aralığın sonunu belirler | Sayı; yalnız işleç - iken kullanılır |
--pathDepth.op | Derinliğin nasıl karşılaştırılacağını seçer | none kısıtlama yok · <= · = · >= · - aralık (varsayılan <= 8) |
--pathDepth.val | Karşılaştırılacak değeri belirler | Sayı; işleç - iken aralığın başı |
--pathDepth.val2 | Aralığın sonunu belirler | Sayı; yalnız işleç - iken kullanılır |
loc query — sorgu dizesi
| Alan | Ne yapar | Arkasına ne yazılır |
|---|---|---|
--querySize.op | Bölgenin toplam boyutunun nasıl karşılaştırılacağını seçer | none kısıtlama yok · <= · = · >= · - aralık (varsayılan <= 8192) |
--querySize.val | Karşılaştırılacak değeri belirler | Sayı; işleç - iken aralığın başı |
--querySize.val2 | Aralığın sonunu belirler | Sayı; yalnız işleç - iken kullanılır |
--queryKeyLength.op | Anahtar adı uzunluğunun nasıl karşılaştırılacağını seçer | none kısıtlama yok · <= · = · >= · - aralık (varsayılan -, 1–128) |
--queryKeyLength.val | Karşılaştırılacak değeri belirler | Sayı; işleç - iken aralığın başı |
--queryKeyLength.val2 | Aralığın sonunu belirler | Sayı; yalnız işleç - iken kullanılır |
--queryKeyCount.op | Anahtar sayısının nasıl karşılaştırılacağını seçer | none kısıtlama yok · <= · = · >= · - aralık (varsayılan <= 16) |
--queryKeyCount.val | Karşılaştırılacak değeri belirler | Sayı; işleç - iken aralığın başı |
--queryKeyCount.val2 | Aralığın sonunu belirler | Sayı; yalnız işleç - iken kullanılır |
--queryAllowedArgs.N | Bölgede hangi anahtarlara izin verileceğini belirler | Anahtar adı; her anahtar kendi indeksiyle. Boş liste kısıtlama yok demektir |
--queryMustArgs.N | Bölgede bulunması zorunlu anahtarları belirler | Anahtar adı; her anahtar kendi indeksiyle |
loc header — HTTP başlıkları
| Alan | Ne yapar | Arkasına ne yazılır |
|---|---|---|
--headerSize.op | Bölgenin toplam boyutunun nasıl karşılaştırılacağını seçer | none kısıtlama yok · <= · = · >= · - aralık (varsayılan <= 4096) |
--headerSize.val | Karşılaştırılacak değeri belirler | Sayı; işleç - iken aralığın başı |
--headerSize.val2 | Aralığın sonunu belirler | Sayı; yalnız işleç - iken kullanılır |
--headerKeyLength.op | Anahtar adı uzunluğunun nasıl karşılaştırılacağını seçer | none kısıtlama yok · <= · = · >= · - aralık (varsayılan -, 1–128) |
--headerKeyLength.val | Karşılaştırılacak değeri belirler | Sayı; işleç - iken aralığın başı |
--headerKeyLength.val2 | Aralığın sonunu belirler | Sayı; yalnız işleç - iken kullanılır |
--headerKeyCount.op | Anahtar sayısının nasıl karşılaştırılacağını seçer | none kısıtlama yok · <= · = · >= · - aralık (varsayılan <= 32) |
--headerKeyCount.val | Karşılaştırılacak değeri belirler | Sayı; işleç - iken aralığın başı |
--headerKeyCount.val2 | Aralığın sonunu belirler | Sayı; yalnız işleç - iken kullanılır |
--headerAllowedArgs.N | Bölgede hangi anahtarlara izin verileceğini belirler | Anahtar adı; her anahtar kendi indeksiyle. Boş liste kısıtlama yok demektir |
--headerMustArgs.N | Bölgede bulunması zorunlu anahtarları belirler | Anahtar adı; her anahtar kendi indeksiyle |
loc json — JSON gövde
| Alan | Ne yapar | Arkasına ne yazılır |
|---|---|---|
--jsonDepth.op | Derinliğin nasıl karşılaştırılacağını seçer | none kısıtlama yok · <= · = · >= · - aralık (varsayılan <= 8) |
--jsonDepth.val | Karşılaştırılacak değeri belirler | Sayı; işleç - iken aralığın başı |
--jsonDepth.val2 | Aralığın sonunu belirler | Sayı; yalnız işleç - iken kullanılır |
--jsonKeyLength.op | Anahtar adı uzunluğunun nasıl karşılaştırılacağını seçer | none kısıtlama yok · <= · = · >= · - aralık (varsayılan -, 1–32) |
--jsonKeyLength.val | Karşılaştırılacak değeri belirler | Sayı; işleç - iken aralığın başı |
--jsonKeyLength.val2 | Aralığın sonunu belirler | Sayı; yalnız işleç - iken kullanılır |
--jsonKeyCount.op | Anahtar sayısının nasıl karşılaştırılacağını seçer | none kısıtlama yok · <= · = · >= · - aralık (varsayılan <= 1024) |
--jsonKeyCount.val | Karşılaştırılacak değeri belirler | Sayı; işleç - iken aralığın başı |
--jsonKeyCount.val2 | Aralığın sonunu belirler | Sayı; yalnız işleç - iken kullanılır |
--jsonAllowedArgs.N | Bölgede hangi anahtarlara izin verileceğini belirler | Anahtar adı; her anahtar kendi indeksiyle. Boş liste kısıtlama yok demektir |
--jsonBlockAll | Bölgedeki tüm içeriğin engellenmesini açar | true (varsayılan) · false |
--jsonBlockInvalid | Bölgedeki geçersiz içeriğin engellenmesini açar | true (varsayılan) · false |
loc xml — XML gövde
| Alan | Ne yapar | Arkasına ne yazılır |
|---|---|---|
--xmlDepth.op | Derinliğin nasıl karşılaştırılacağını seçer | none kısıtlama yok · <= · = · >= · - aralık (varsayılan <= 32) |
--xmlDepth.val | Karşılaştırılacak değeri belirler | Sayı; işleç - iken aralığın başı |
--xmlDepth.val2 | Aralığın sonunu belirler | Sayı; yalnız işleç - iken kullanılır |
--xmlKeyLength.op | Anahtar adı uzunluğunun nasıl karşılaştırılacağını seçer | none kısıtlama yok · <= · = · >= · - aralık (varsayılan -, 1–64) |
--xmlKeyLength.val | Karşılaştırılacak değeri belirler | Sayı; işleç - iken aralığın başı |
--xmlKeyLength.val2 | Aralığın sonunu belirler | Sayı; yalnız işleç - iken kullanılır |
--xmlKeyCount.op | Anahtar sayısının nasıl karşılaştırılacağını seçer | none kısıtlama yok · <= · = · >= · - aralık (varsayılan <= 1024) |
--xmlKeyCount.val | Karşılaştırılacak değeri belirler | Sayı; işleç - iken aralığın başı |
--xmlKeyCount.val2 | Aralığın sonunu belirler | Sayı; yalnız işleç - iken kullanılır |
--xmlAllowedArgs.N | Bölgede hangi anahtarlara izin verileceğini belirler | Anahtar adı; her anahtar kendi indeksiyle. Boş liste kısıtlama yok demektir |
--xmlBlockAll | Bölgedeki tüm içeriğin engellenmesini açar | true (varsayılan) · false |
--xmlBlockInvalid | Bölgedeki geçersiz içeriğin engellenmesini açar | true (varsayılan) · false |
loc form — form gövdesi
| Alan | Ne yapar | Arkasına ne yazılır |
|---|---|---|
--formKeyLength.op | Anahtar adı uzunluğunun nasıl karşılaştırılacağını seçer | none kısıtlama yok · <= · = · >= · - aralık (varsayılan -, 1–64) |
--formKeyLength.val | Karşılaştırılacak değeri belirler | Sayı; işleç - iken aralığın başı |
--formKeyLength.val2 | Aralığın sonunu belirler | Sayı; yalnız işleç - iken kullanılır |
--formKeyCount.op | Anahtar sayısının nasıl karşılaştırılacağını seçer | none kısıtlama yok · <= · = · >= · - aralık (varsayılan <= 32) |
--formKeyCount.val | Karşılaştırılacak değeri belirler | Sayı; işleç - iken aralığın başı |
--formKeyCount.val2 | Aralığın sonunu belirler | Sayı; yalnız işleç - iken kullanılır |
--formAllowedArgs.N | Bölgede hangi anahtarlara izin verileceğini belirler | Anahtar adı; her anahtar kendi indeksiyle. Boş liste kısıtlama yok demektir |
--formMustArgs.N | Bölgede bulunması zorunlu anahtarları belirler | Anahtar adı; her anahtar kendi indeksiyle |
--formBlockAll | Bölgedeki tüm içeriğin engellenmesini açar | true (varsayılan) · false |
--formBlockInvalid | Bölgedeki geçersiz içeriğin engellenmesini açar | true (varsayılan) · false |
--formAllowedMimeTypes.N | Bölgede hangi MIME tiplerine izin verileceğini belirler | MIME tipi; her tip kendi indeksiyle. Boş liste kısıtlama yok demektir |
--formFileOwasp | Yüklenen dosyalara OWASP denetimi uygulanmasını açar | true (varsayılan) · false |
loc raw — ham gövde
| Alan | Ne yapar | Arkasına ne yazılır |
|---|---|---|
--rawSize.op | Bölgenin toplam boyutunun nasıl karşılaştırılacağını seçer | none kısıtlama yok · <= · = · >= · - aralık (varsayılan -, 1–16384) |
--rawSize.val | Karşılaştırılacak değeri belirler | Sayı; işleç - iken aralığın başı |
--rawSize.val2 | Aralığın sonunu belirler | Sayı; yalnız işleç - iken kullanılır |
--rawAllowedMimeTypes.N | Bölgede hangi MIME tiplerine izin verileceğini belirler | MIME tipi; her tip kendi indeksiyle. Boş liste kısıtlama yok demektir |
--rawBlockUnparsed | Ayrıştırılamayan ham gövdenin engellenmesini açar | true (varsayılan) · false |
--rawBlockUnexpectedError | Beklenmedik ayrıştırma hatasında engellemeyi açar | true · false (varsayılan false) |
Her Bölgede Ortak Alanlar
Aşağıdaki alanlar loc değerinden bağımsız olarak her parçada bulunur.
| Alan | Ne yapar | Arkasına ne yazılır |
|---|---|---|
--valueLength.op | Anahtarın değerinin uzunluğunun nasıl karşılaştırılacağını seçer | none kısıtlama yok · <= · = · >= · - aralık (varsayılan -, 0–1024) |
--valueLength.val | Karşılaştırılacak değeri belirler | Sayı; işleç - iken aralığın başı |
--valueLength.val2 | Aralığın sonunu belirler | Sayı; yalnız işleç - iken kullanılır |
--argOwasp | Bu parçaya OWASP denetimlerinin uygulanmasını açar | true (varsayılan) · false |
--argOwaspExclusions.N | Bu parçada uygulanmayacak OWASP kural anahtarlarını belirler | Kural anahtarı; her anahtar kendi indeksiyle, aynı anahtar iki kez yazılamaz |
--argLog | Engellemede değerin günlüğe yazılmasını açar | true (varsayılan) · false |
--argRegex.input | Değerin eşleşmesi gereken düzenli ifadeyi belirler | Hyperscan lehçesinde düzenli ifade. Boş girdi kısıtlama yok demektir |
--argMultiple | Aynı anahtarın en çok kaç kez yinelenebileceğini belirler | 0–1000000 arası tam sayı |
Örnekler
Bilinmesi Gerekenler
- Parça bir kurala aittir. Her komutta
poolId,hostGroupIdveruleIdile hangi kuralın parçaları üzerinde çalışıldığı belirtilir; kurallarwaf fw-ruleskomutundadır. - Bölge ve anahtar sonradan değiştirilemez.
locve--argalanları şemada sabit işaretlidir; başka bir bölge ya da anahtar için yeni bir parça oluşturulur. - Anahtar boş bırakılırsa bölge geneli denetim olur.
--argverilmediğinde denetim bölgedeki bütün anahtarlara uygulanır. - Bölge, alanları belirler.
locdeğeri hangi alanların listeleneceğini belirler; CLI onupoolId,hostGroupIdveruleIdalanlarından sonra ister ve bölgeye özgü alanlar ancak ondan sonra görünür. - Zorunlu alanlar
--almaz.poolId,hostGroupId,ruleIdvelocalan adı ile değeri yan yana yazılır; isteğe bağlı alanlar--alan değerbiçimindedir. Ayrıntı API Commands sayfasındadır. - Karşılaştırma işleçleri tırnak ister.
<=,>=ve-gibi değerler kabuk tarafından yönlendirme sayılmasın diye çift tırnak içinde yazılır. - Boş liste kısıtlama yok demektir. İzinli anahtar ve izinli MIME tipi listeleri boş bırakıldığında o bölgede kısıtlama uygulanmaz.
- Kayıtlar yalnız kendi bölgelerinin alanlarını taşır. Şemadaki açıklamaya göre bir parça, oluşturulduğu bölgenin dışındaki alanları saklamaz.
