Skip to content
Smarter by Design.Simpler for Business

TR7 WAF Log Format (HTTP) ​

Format Hakkında ​

TR7 WAF Log Format, yalnızca WAF (Web Application Firewall) olay bilgilerini içeren özelleşmiş bir log formatıdır. Profil formundaki Line Format listesinde TR7 WAF Log seçeneğiyle yer alır.

Bu format, güvenlik olaylarına odaklanır: yalnızca WAF tarafından engellenen istekler için log üretilir; temiz trafik ve yalnızca izlenen (monitor) istekler log üretmez. Tam erişim logu yerine yalnızca güvenlik olaylarını izlemek isteyen ortamlar için idealdir.

Kullanım senaryoları

  • WAF-only güvenlik izleme.
  • Güvenlik olayı korelasyonu.
  • Düşük hacimli güvenlik logu.
  • SOC ve güvenlik analitiği.

Uyarı

Bu format yalnızca WAF profili atanmış vService'lerde çalışır. WAF profili olmayan vService'lerde (L7 TCP dahil) bu format seçilse bile hiç log üretilmez; tanımlı log sunucularına da gönderim yapılmaz ve arayüzde uyarı verilmez.

Desteklenen Özellikler ​

HTTP vService
L7 TCP vService
WAF Bilgisi (zorunlu)
SSL Bilgisi

Örnek Log ​

json
{
  "uid": "AC10652A:D7236AA19B66:240002D",
  "totalScore": 8,
  "attacks": [
    {
      "payload": "/cmd.exe",
      "id": 130005,
      "score": 8,
      "monitor": false,
      "scope": "path"
    }
  ],
  "action": "block",
  "wafTime": 1.485
}

Alan Açıklamaları ​

Temel Alanlar ​

AlanÖrnekAçıklama
uidAC10652A:D7236AA19B66:240002DBenzersiz olay tanımlayıcısı
totalScore8Toplam saldırı skoru
actionblockUygulanan aksiyon: block · monitor · fpc. Bu formatta pratikte her zaman block'tur; diğer iki durumda kayıt zaten üretilmez.
wafTime1.485WAF işlem süresi (milisaniye)

Alanların sırası sabit değildir; JSON ayrıştırılırken anahtar adına göre okunmalıdır. score, scope, monitor ve payload alanları WAF profilindeki log alanı seçimine bağlıdır ve kapatılabilir; ek olarak severity ve kural meta bilgileri (name, desc, category, cwe, mitre, capec, owaspWeb, owaspApi, target) eklenebilir.

WAF zaman aşımı kaydı bu şemayı taşımaz

WAF taraması zaman aşımına uğradığında üretilen sentetik kayıtta uid ve action alanları bulunmaz; attacks girdisi de payload ve monitor taşımaz. Kayıt totalScore 100, id 369999 ve wafTime 2000 değerleriyle gelir. Sabit şema varsayan ayrıştırıcılar bu satırda hata verir.

attacks Dizisi ​

Her saldırı objesi şu alanları içerir:

AlanÖrnekAçıklama
attacks[...]Tespit edilen eşleşmelerin listesi. Aynı istekte birden fazla kural eşleşebileceği gibi aynı kural birden çok kez de listeye girebilir.
payload/cmd.exeTespit edilen zararlı içerik. Kural payload üretmiyorsa yerine kuralın açıklaması yazılır; WAF profilinden tamamen kapatılabilir.
id130005WAF kural ID'si. Koşulsuz basılan tek alandır.
score8Bu kuralın skoru
monitorfalseKuralın kendi durumu: true ise bu kuralın skoru toplama katılmaz. Tek başına isteğin engellenip engellenmediğini göstermez.
scopepathSaldırının tespit edildiği bileşen: path · query · header · form · json · xml · raw

uid Yapısı ​

Benzersiz olay tanımlayıcısı (uid), iki nokta işaretiyle üç gruba ayrılan beş bilginin onaltılık gösteriminden oluşur; iki nokta işaretleri bu bilgilerin sınırlarıyla hizalı değildir:

text
AC10652A : D7236AA19B66 : 240002D
    │        │      │      │  │
    │        │      │      │  └── İstek sayacı
    │        │      │      └───── Milisaniye
    │        │      └──────────── Unix zaman damgası (saniye)
    │        └─────────────────── İstemci kaynak portu
    └──────────────────────────── İstemci IP adresi

Örnekteki değerin çözümü:

ParçaHexKarşılığı
İstemci IP adresiAC10652AAC=172, 10=16, 65=101, 2A=42 → 172.16.101.42
İstemci kaynak portuD72355075
Unix zaman damgası6AA19B66Kaydın üretildiği saniye
Milisaniye240576 ms
İstek sayacı002D45

Bu yapı sayesinde:

  • Aynı istemciden gelen saldırılar IP bileşeniyle gruplanabilir.
  • Her kayıt benzersiz biçimde tanımlanabilir ve WAF Event Log ile eşleştirilebilir.

WARNING

Değer bir oturum kimliği taşımaz. Aynı istemcinin iki isteği, ancak aynı saniyede aynı kaynak porttan geldiğinde ortak bir orta bileşen paylaşır; pratikte her TCP bağlantısında değişir. Kaynak port (4 hane) ve zaman damgası (8 hane) sabit uzunluktadır; milisaniye (2-3 hane) ile istek sayacı (en az 4 hane) ayraçsız bitiştiği için son grup her zaman kesin olarak ayrıştırılamaz.

Skor Hesaplama ​

WAF, her kural için bir skor tanımlar. Toplam skor (totalScore), eşleşen kurallardan yalnızca izleme modunda olmayanların skorlarının toplamıdır:

text
totalScore = Σ (attacks[n].score)   ,  attacks[n].monitor == false olanlar

Yukarıdaki örnek logda tek bir kural eşleşmiş ve monitor: false olduğu için toplam skor o kuralın skoruna eşittir:

text
Kural 130005: score = 8   (monitor: false)
──────────────────────────────────────────
totalScore = 8

İzleme modundaki kurallar toplama katılmaz

monitor: true olan bir kural attacks listesinde gerçek skoruyla görünür, ancak totalScore'a eklenmez. Bu nedenle listedeki skorları toplamak, totalScore değerinden büyük bir sonuç verebilir. Öğrenme modunda ise hiçbir skor toplanmaz ve totalScore 0 kalır.

WAF profilinde tanımlı skor eşiğine ulaşıldığında ya da eşik aşıldığında istek bloklanır; örnekteki totalScore: 8 değeri, eşiğin 8 olduğu bir profilde tam olarak bu nedenle block üretmiştir.

Kullanım Örneği: Log Ayrıştırma ​

Örnekler ham log satırı varsayar

Aşağıdaki komutlar, dosyanın ham JSON satırlarından oluştuğunu varsayar. Log profilinde Log Standard olarak local (varsayılan), rfc3164, rfc5424 ya da priority seçiliyse her satırın başına syslog öneki eklenir ve jq satırı ayrıştıramaz. Bu durumda ya toplayıcının öneki ayıklaması ya da profilde raw seçilmesi gerekir.

bash
# Yüksek skorlu saldırıları filtrele
cat waf.log | jq 'select(.totalScore >= 20)'

# Belirli bir kural ID'sini ara (kayıt başına tek kez basar)
cat waf.log | jq 'select(any(.attacks[]; .id == 130005))'

# Scope'a göre grupla (alan kapatılmışsa boş geçilir)
cat waf.log | jq -r '.attacks[] | select(.scope) | .scope' | sort | uniq -c