SIEM Integration
SIEM Integration Nedir?
SIEM Integration, Bot/DDoS korumasının bir istek için verdiği kararı, HTTP erişim loguna tek bir JSON nesnesi olarak ekler ve bu logu syslog üzerinden SIEM sistemine taşır. Nesne, %THREAT_INFO değişkeniyle (arayüzdeki adı Bot/DDoS Protection Detail) log profiline eklenir ve her istekte aynı şekilde üretilir: hangi korumanın karar verdiği, uygulanan aksiyon, bot skoru ve sınıfı, tetiklenen L7 DDoS kuralı ve ölçülen değer, IP itibar kategorisi, istemcinin TLS ve User-Agent kimliği, muafiyetler ve karantina bilgisi aynı nesnede yer alır.
Böylece SIEM tarafında Bot/DDoS olayları, erişim logunun geri kalanıyla (zaman, istemci adresi, istek, yanıt kodu) aynı satırda okunur; ayrıca bir olay kaynağı tanımlamak ya da TR7 arayüzündeki Event Logs ekranını dışa aktarmak gerekmez.
Her istekte üretilir
Nesne, log profili %THREAT_INFO kullanan vService'lerde her istek için üretilir; yalnız engellenen istekler için değil, geçirilen, izlenen ve muaf tutulan istekler için de yazılır. vService'te Bot/DDoS koruması yoksa ya da istek Bot/DDoS dışı bir kuralla düşürülürse değişken oluşmaz. Event Logs ekranındaki tekrar sınırlaması (aynı olayın seyreltilmesi) bu değişkene uygulanmaz.
Nasıl Kurulur?
Load Balancer → Profiles → Logs ekranında yeni bir log profili eklenir ya da mevcut bir profil düzenlenir. Line Format alanında üç Manual biçimden biri seçilir: Manual JSON Format, Manual CEF Format ya da Manual Log Line Format. SIEM'de alanların doğrudan ayrıştırılabilmesi için Manual JSON Format önerilir; diğer iki biçimde nesne metin olarak yazılır (bkz. Log Biçimlerine Göre Çıktı). Profilin genel alanları için Logs sayfasına bakılır.
Manual JSON Format ve Manual CEF Format biçimlerinde Manual Log Entries tablosuna bir satır eklenir ve Key alanına SIEM tarafında kullanılacak anahtar adı (ör. Bot-DDOS) yazılır. Yeni satırın Value hücresi, listede henüz kullanılmayan ilk değişkenle dolu gelir. Hücredeki değişken etiketine tıklandığında Edit Variable penceresi açılır; Variable Name listesine Bot/DDoS yazılarak liste süzülür ve Client Info - Bot/DDoS Protection Detail seçeneği seçilir.
Manual Log Line Format biçiminde değişken, satır şablonunun istenen yerine eklenir: şablon alanının sağındaki fx butonu Add Variable penceresini açar ve değişken aynı listeden seçilir. Şablona elle yazılan %THREAT_INFO metni de yazım bittikten kısa süre sonra değişken etiketine dönüşür. Ayrıntı için Smart Variables sayfasına bakılır.
Erişim logunun diğer alanları (zaman, istemci adresi, host, istek, yanıt kodu, User-Agent başlığı) ayrı değişkenlerle eklenir; %THREAT_INFO bu bilgileri taşımaz.
Profilin log adresi alanına SIEM'in syslog alıcısının adresi ve portu (IP:Port) girilir; iletim protokolü (UDP ya da TCP) ve log standardı seçilir. Her kaydın SIEM'e ulaşması isteniyorsa Sampling kapalı bırakılır; açıkken kayıtların yalnızca bir kısmı gönderilir.
Profil, HTTP vService'in düzenleme formunda log profili olarak seçilir. Adımlar Logs sayfasının vService'e Nasıl Eklenir? bölümünde anlatılır.
Manual JSON Format'ta SIEM'de log satırı JSON olarak ayrıştırılır; Bot/DDoS bilgileri ikinci adımda verilen anahtarın (ör. Bot-DDOS) altında iç içe bir nesne olarak okunur. Log standardı olarak syslog başlığı ekleyen bir standart seçildiyse, SIEM'in JSON'dan önce bu başlığı ayırması gerekir.
Dış anahtarın adı kullanıcıya aittir
Nesnenin hangi anahtarın altında yer alacağı Key alanında belirlenir. Bu sayfadaki örneklerde Bot-DDOS kullanılmıştır; SIEM'deki alan adlandırma düzenine uygun herhangi bir ad verilir.
Value alanında yalnızca %THREAT_INFO bulunmalıdır
Değerin JSON nesnesi olarak yazılması için Value hücresinde %THREAT_INFO dışında hiçbir şey bulunmamalıdır. Değişkene bir metin ya da dönüştürücü eklenirse çıktı iç içe nesne yerine, içinde kaçış karakterli JSON bulunan bir metin olarak yazılır ve SIEM'de ikinci kez ayrıştırma gerekir.
Log Biçimlerine Göre Çıktı
%THREAT_INFO yalnızca HTTP vService'lerde ve üç Manual biçimin üçünde de kullanılır; biçimler yalnızca çıktının şeklinde ayrışır. Sabit biçimli log formatları bu değişkeni taşımaz.
| Line Format | %THREAT_INFO çıktısı |
|---|---|
| Manual JSON Format | İç içe JSON nesnesi. Değişken hiç oluşmamışsa (ör. vService'te Bot/DDoS koruması yoksa) anahtarın değeri null olur. Önerilen biçimdir. |
| Manual CEF Format | Kaçış karakterli JSON metni; CEF kuralı gereği = karakterleri \= olarak yazılır. HTTP vService'lerde alan her zaman yazılır; değişkenin kullanılamadığı L7 TCP vService'lerde alan satıra hiç eklenmez. |
| Manual Log Line Format | JSON metni satırın içine olduğu gibi yazılır. |
| Standard Log Format, Apache Combined, Apache VHost, CEF Format, TR7 JSON Format, TR7 WAF Log | Değişken kullanılamaz. |
Manual JSON'daki "bütün değerler metindir" kuralının istisnası
Manual JSON Format çıktısında değerler normalde çift tırnak içinde metin olarak basılır. Yalnızca %THREAT_INFO içeren bir satır bu kuralın dışındadır: değer nesne olarak yazılır ve nesnenin içindeki sayılar JSON sayısı, bayraklar true/false olarak gelir.
Örnek Kayıt
Aşağıdaki kayıt, Key alanı Bot-DDOS olan bir Manual JSON profilinden alınmıştır. L7 DDoS korumasının Source IP Request Protection kuralı Monitor modunda çalışırken bir kaynağın istek hızı limiti aşmış; koruma Enforce modunda olsaydı CAPTCHA gösterecekti.
SIEM'e ulaşan kayıt tek satırdır:
{"Bot-DDOS":{"action":"monitored","module":"","summary":"monitored: ddos would apply captcha","monitor":{"module":"ddos","action":"captcha"},"bot":{"score":23,"class":"clean","threshold":null,"factors":"secFetchAbsent;pathHammering;clientHintMismatch;"},"ddos":{"rule":"sR","observed":80,"limit":3},"ipReputation":{"category":""},"client":{"ja4":"","ja4Family":"","ja4Match":"","uaFamily":"chromium","networkType":""},"exempt":{"ddos":false,"bot":false,"ipReputation":false},"captchaFails":"","quarantinedBy":"","ceilingDrop":false}}Aynı kayıt, okunurluk için girintili hâliyle:
{
"Bot-DDOS": {
"action": "monitored",
"module": "",
"summary": "monitored: ddos would apply captcha",
"monitor": {
"module": "ddos",
"action": "captcha"
},
"bot": {
"score": 23,
"class": "clean",
"threshold": null,
"factors": "secFetchAbsent;pathHammering;clientHintMismatch;"
},
"ddos": {
"rule": "sR",
"observed": 80,
"limit": 3
},
"ipReputation": {
"category": ""
},
"client": {
"ja4": "",
"ja4Family": "",
"ja4Match": "",
"uaFamily": "chromium",
"networkType": ""
},
"exempt": {
"ddos": false,
"bot": false,
"ipReputation": false
},
"captchaFails": "",
"quarantinedBy": "",
"ceilingDrop": false
}
}Kayıt şöyle okunur:
actionmonitored: istek geçirildi, ancak bir koruma izleme modunda aksiyon uygulayacaktı. Uygulanan bir aksiyon olmadığı içinmoduleboştur.monitorhangi korumanın neyi yapacağını belirtir:ddoskorumasınıncaptchaaksiyonu.ddostetikleyen kuralı ve değerleri verir:sR(Source IP Request Protection), ölçülen80, limit3.botaynı istek için bot skorunu taşır:23, sınıfclean. Üç faktör tetiklenmiştir; hiçbir bot kuralı eşleşmediği içinthresholdnull'dır.client.uaFamilychromium: User-Agent başlığı bir Chromium tarayıcısını belirtir. JA4 alanları boştur: bağlantı TLS değildir ya da bu vService'te JA4 hesaplamasını gerektiren bir ayar yoktur.exemptbayraklarının hepsifalse: istemci hiçbir korumanın beyaz listesinde değildir.
Alan Açıklamaları
Nesnenin bütün anahtarları her kayıtta bulunur. Değeri oluşmayan metin alanları boş metin (""), sayı alanları null, bayraklar false olarak yazılır. Metin değerleri arayüzdeki etiketler değil, motorun kendi kodlarıdır; aşağıdaki tablolar kodların arayüzdeki karşılıklarını verir.
Karar Alanları
| Alan | Tip | Açıklama |
|---|---|---|
action | metin | İsteğe olan biten. Hiçbir zaman boş değildir. Değerleri aşağıdaki tablodadır. |
module | metin | Kararı veren koruma: ddos, ipRep, bot ya da quarantine (istemci karantina kutusundaysa). Uygulanan bir aksiyon yoksa (monitored, whitelisted, trustedBot, passed) ve sert tavan düşürmesinde (ceilingDrop true) boştur. Arayüzdeki karşılığı Handled By'dır. |
summary | metin | Kararın İngilizce tek cümlelik özeti. Şablonları aşağıdaki tablodadır. |
action Değerleri
| Değer | Anlamı | Event Logs'taki Action hücresi |
|---|---|---|
block | İstek engellendi (yanıt kodu aksiyon kuralında tanımlıdır). | Blocked |
tarpit | Yanıt bekletilerek verildi. | Tarpitted |
redirect | İstemci başka bir adrese yönlendirildi. | Redirected |
showContent | Özel içerik gösterildi. | Content shown |
captcha | CAPTCHA doğrulaması gösterildi. | CAPTCHA shown; doğrulama yanıtında Captcha solved ya da Captcha failed |
silentDrop | Bağlantı yanıtsız kapatıldı. | Silently dropped |
quarantine | İstemci karantina kutusunda; istek kutudan geri çevrildi. | Blocked by quarantine |
monitored | Koruma izleme modunda bir aksiyon uygulayacaktı; istek geçirildi. Ayrıntısı monitor nesnesindedir. | Would … (ör. Would show CAPTCHA) · Monitor |
whitelisted | İstemci bir korumanın beyaz listesinde; istek geçirildi. Hangi korumanın muaf tuttuğu exempt nesnesindedir. | Allowed · Whitelist |
trustedBot | İstemci doğrulanmış bir bot (crawler); istek geçirildi. | Allowed · Trusted bot |
passed | Hiçbir koruma müdahale etmedi. | Genellikle satır yazılmaz; skor tabanını aşan istekte Allowed · Insufficient score |
summary Şablonları
Özet, action değerine ve kararı veren korumaya göre aşağıdaki şablonlardan biriyle üretilir; uygulanan aksiyonlarda korumaya göre sıra bot, L7 DDoS, IP itibarı, karantinadır. <action> yerine action alanının değeri, açılı ayraçlı diğer ifadelerin yerine ilgili alanların değerleri yazılır.
| Durum | Şablon | Örnek |
|---|---|---|
| Bot korumasının aksiyonu uygulandı | <action>: bot score <skor> reached threshold <eşik> | block: bot score 91 reached threshold 85 |
| L7 DDoS hız/sayı kuralının ya da limitli ülke/ağ tipi satırının aksiyonu uygulandı | <action>: ddos rule <kural> exceeded (<ölçülen>/<limit>) | captcha: ddos rule sR exceeded (80/3) |
| L7 DDoS'ta limitsiz (yalnız üyelik) ülke ya da ağ tipi satırının aksiyonu uygulandı | <action>: ddos rule <kural> matched | block: ddos rule c0 matched |
| IP itibar korumasının aksiyonu uygulandı | <action>: ip reputation category <kategori> | block: ip reputation category hacking |
| İstemci karantina kutusunda | <action>: source is in quarantine | quarantine: source is in quarantine |
| Sert tavan aşıldı | silentDrop: ceiling limit <kural> exceeded (<ölçülen>/<limit>) | silentDrop: ceiling limit hardTotalReq exceeded (5200/5000) |
| Yukarıdakilerin dışında kalan uygulanan aksiyon | <action> | block |
| Koruma izleme modunda aksiyon uygulayacaktı | monitored: <koruma> would apply <aksiyon> | monitored: ddos would apply captcha |
| Beyaz liste muafiyeti | whitelisted: exempt by whitelist | |
| Doğrulanmış bot | trustedBot: verified crawler | |
| Geçirildi, bot skoru var | passed: bot score <skor> (<sınıf>) | passed: bot score 23 (clean) |
| Geçirildi, bot skoru yok | passed |
monitor (İzleme Modu)
| Alan | Tip | Açıklama |
|---|---|---|
monitor.module | metin | İzleme modunda aksiyon uygulayacak olan koruma: ddos, ipRep ya da bot. |
monitor.action | metin | Uygulanacak aksiyon; değerleri action tablosundaki uygulanan aksiyonlarla aynıdır (block, captcha, tarpit, redirect, showContent, silentDrop, quarantine). |
Bir koruma Monitor modunda çalışırken kuralı eşleşirse bu nesne dolar; birden fazla koruma izleme modunda eşleşirse öncelik sırasına göre (ddos, ipRep, bot) ilk koruma yazılır. İzleme modunda eşleşme yoksa iki alan da boştur. Arayüzdeki karşılığı Monitor Mode'dur.
bot (Bot Protection)
| Alan | Tip | Açıklama |
|---|---|---|
bot.score | sayı | null | İsteğin 0–100 arasındaki bot skoru. Bot Protection etkin değilse null. |
bot.class | metin | Skorun düştüğü sınıf (aşağıdaki tablo). Skor yoksa boştur. |
bot.threshold | sayı | null | Eşleşen bot aksiyon kuralının skor eşiği. Kural izleme modunda eşleştiyse de yazılır; bot kuralı eşleşmediyse ya da kararı (veya izleme kaydını) başka bir koruma verdiyse null. |
bot.factors | metin | Skora katkı veren faktörlerin kodları, ; ile ayrılmış ve sonunda ; bulunan liste. Hiçbir faktör tetiklenmediyse boştur. |
bot.class | Skor aralığı | Arayüzdeki sınıf |
|---|---|---|
clean | 0–39 | Clean |
suspicious | 40–59 | Suspicious |
likely_bot | 60–84 | Bot |
bot | 85–100 | Bad Bot |
bot kodu "Bad Bot" sınıfıdır
Kodlar ile arayüzdeki sınıf adları birebir eşleşmez: bot kodu arayüzde Bad Bot, likely_bot kodu ise Bot olarak görüntülenir. SIEM'de alarm kuralı yazılırken bu fark dikkate alınmalıdır.
bot.factors listesindeki kodlar, Factors sayfasındaki faktörlerin alt kalemleridir. Kodlar faktör gruplarına göre şöyledir:
| Faktör grubu | Kodlar |
|---|---|
| Infrastructure & IP Reputation | datacenterIp, torExit, openProxy, badBot, attack, recon, spam, vpnIp, botnetHost, fraud, dnsAbuse, operatorBlacklist |
| Identity Spoofing Detection | botUa, notBrowser, headlessBrowser, crawlerImpersonation |
| Network Fingerprinting | deprecatedVersion, noAlpn, weakCipher, malwareJa3, botJa4, ja4ToolImpersonation |
| Protocol Hygiene | emptyHost, missingHeaders, secFetchAbsent, weirdAcceptHeader, httpVersion, protocolMismatch |
| Cross-Signal Consistency | tlsUaMismatch, httpCookieMismatch, clientHintMismatch |
| Behavioral Analysis | pathHammering, rapidRequests, highNotFoundRate, noRefererOnMutation, scannerMethod, suspiciousPath |
| Client Evidence | ceAutomationDeclared, ceAutomationInferred, ceEngineMismatch, ceFormTiming, ceBehavioral, ceTrapSprung |
| Human Verification | agsLoggedIn, captchaTicket, ceHumanInteraction |
Human Verification grubundaki kodlar bot.score değerini değiştirmez; insan olduğu doğrulanmış istemci için aksiyon kararında kullanılan skora uygulanan indirimi gösterir. Listede Bot Protection ayarlarında seçili ve vService'in protokolüne uygun faktörler yer alır; Human Verification kodları ise seçimden bağımsız olarak, ilgili doğrulama gerçekleştiğinde yazılır.
ddos (L7 DDoS Protection)
| Alan | Tip | Açıklama |
|---|---|---|
ddos.rule | metin | Tetiklenen L7 DDoS kuralının kodu (aşağıdaki tablo). Koruma Enforce ya da Monitor modunda olsun, kural tetiklendiyse yazılır; tetiklenen kural yoksa boştur. Kaynak, kaynak IP limitinin sert sınırını aşıp karantinaya girdiyse kararı karantina verir ve bu alan boş kalabilir. |
ddos.observed | sayı | null | Kararın verildiği anda ölçülen değer. |
ddos.limit | sayı | null | Kuralın limiti. |
Limit tanımlanmamış (yalnız üyeliğe bakan) ülke ve ağ tipi satırları bir sayaç ölçmediği için bu satırlarda observed ve limit null'dır; limitli satırlarda iki alan da dolar. Arayüzdeki karşılıkları DDoS Rule ve Trigger (Value / Limit)'tır.
ddos.rule | Kural |
|---|---|
sR | Source IP Request Protection |
sC | Source IP Connection Protection |
err | Source IP Error Protection |
tR | Total Request Protection |
tC | Total Connection Protection |
tA | Active Source-IP Protection |
c0, c1, … | Country Control kural satırı. Numara sıfırdan başlar: c0 arayüzdeki 1. satırdır. |
n0, n1, … | Network Type Group Control kural satırı. Numara sıfırdan başlar: n0 arayüzdeki 1. satırdır. |
hardTotalReq | Total Request Protection'ın sert sınırı (arayüzde Hard Ceiling) |
hardTotalConn | Total Connection Protection'ın sert sınırı (arayüzde Hard Ceiling) |
ipReputation (IP Reputation Protection)
| Alan | Tip | Açıklama |
|---|---|---|
ipReputation.category | metin | Kaynak adresin bulunduğu IP itibar kategorisi; birden fazla kategorideyse aksiyon kurallarının sırasına göre ilk eşleşen yazılır. IP Reputation Protection Enforce ya da Monitor modundayken doldurulur; istek engellenmediğinde de (beyaz liste, doğrulanmış bot ya da eşleşen kural yoksa) yazılır. Adres, aksiyon kurallarında kullanılan hiçbir kategoride değilse boştur. |
| Kod | Kategori | Kod | Kategori |
|---|---|---|---|
user | User Blacklist | external | External |
dnsCompromise | DNS Compromise | dnsPoisoning | DNS Poisoning |
fraudOrders | Fraud Orders | dDoSAttack | DDoS Attack |
ftpBruteForce | FTP Brute-Force | pingOfDeath | Ping of Death |
phishing | Phishing | fraudVoIp | Fraud VoIP |
openProxy | Open Proxy | webSpam | Web Spam |
emailSpam | Email Spam | blogSpam | Blog Spam |
vpnIp | VPN IP | portScan | Port Scan |
hacking | Hacking | sqlInjection | SQL Injection |
spoofing | Spoofing | bruteForce | Brute-Force |
badWebBot | Bad Web Bot | exploitedHost | Exploited Host |
webAppAttack | Web App Attack | ssh | SSH |
ioTTargeted | IoT Targeted |
Kategorilerin açıklamaları IP Intelligence & Reputation sayfasındadır.
client (İstemci Kimliği)
| Alan | Tip | Açıklama |
|---|---|---|
client.ja4 | metin | İstemcinin ham JA4 TLS parmak izi. Yalnızca TLS bağlantılarında, cihazın JA4 desteği varken ve JA4 kullanan bir ayar (Bot Protection'ın JA4 faktörleri, JA4 beyaz liste girdisi ya da %JA4 değişkeni) bulunduğunda dolar. Arayüzdeki karşılığı JA4 (Raw)'dur. |
client.ja4Family | metin | JA4 parmak izinin ait olduğu TLS yığını ailesi (aşağıdaki liste). Parmak izi tanınmazsa ya da cihazın JA4 desteği yoksa boştur. Arayüzdeki karşılığı TLS Fingerprint (JA4)'tür. |
client.ja4Match | metin | Ailenin hangi eşleşmeyle bulunduğu: e tam JA4 eşleşmesi, c şifre kümesi düzeyinde eşleşme. Eşleşme yoksa boştur. TLS ile User-Agent'ın tutarlı olup olmadığını göstermez; bu tutarsızlık tlsUaMismatch ya da ja4ToolImpersonation faktörüyle bildirilir. |
client.uaFamily | metin | User-Agent başlığının iddia ettiği tarayıcı ya da araç ailesi (aşağıdaki liste). User-Agent hiçbir kalıba uymazsa ya da cihazın JA4 desteği yoksa boştur. Arayüzdeki karşılığı User-Agent Claim'dir. |
client.networkType | metin | Kaynak adresin ağ tipi grubu (aşağıdaki tablo). Adres sınıflandırılamazsa (ör. özel adres aralıkları) boştur. Arayüzdeki karşılığı Network Type'tır. |
client.ja4Family değerleri: chromium, firefox, safari, curl, wget, python, go, java, node, postman, dotnet, ruby, php, rust, schannel, openssl, cfnetwork ve birden fazla aracın aynı parmak izini paylaştığı durumlarda kullanılan genel tool.
client.uaFamily değerleri: crawler, curl, wget, python, go, java, cfnetwork, node, postman, dotnet, ruby, php, rust, safari, chromium, firefox; User-Agent başlığı boşken ve Bot Protection'da tlsUaMismatch faktörü seçiliyken none.
client.networkType | Ağ tipi | client.networkType | Ağ tipi |
|---|---|---|---|
aws | Amazon AWS | linode | Linode |
azure | Microsoft Azure | vultr | Vultr |
gcp | Google Cloud | leaseweb | LeaseWeb |
oracle | Oracle Cloud | scaleway | Scaleway |
alibaba | Alibaba Cloud | contabo | Contabo |
tencent | Tencent Cloud | hosting | Generic Hosting |
huawei | Huawei Cloud | cdn | CDN |
ovh | OVH | verified_bot | Verified Bot |
hetzner | Hetzner | tor | Tor Exit Node |
digitalocean | DigitalOcean | residential | Residential |
mobile | Mobile / CGNAT |
Ağ tipi her istekte bakılır
client.networkType her istekte doldurulur; yalnızca ağ tipi veri tabanında sınıflandırılamayan adreslerde boş kalır.
exempt (Muafiyetler)
| Alan | Tip | Açıklama |
|---|---|---|
exempt.ddos | true | false | İstemci L7 DDoS korumasının beyaz listesinde. |
exempt.bot | true | false | İstemci Bot Protection'ın beyaz listesinde. |
exempt.ipReputation | true | false | İstemci IP Reputation Protection'ın beyaz listesinde. |
Bayraklar korumanın kendi beyaz liste koşulu ya da girdileri eşleştiğinde true olur. L7 DDoS'taki ülke ve ağ tipi kural satırlarının kendi muafiyetleri exempt.ddos bayrağını değiştirmez.
Ek Alanlar
| Alan | Tip | Açıklama |
|---|---|---|
captchaFails | metin | İzlenen süre içindeki başarısız CAPTCHA denemesi sayısı ve karantina eşiği, n/eşik biçiminde (ör. 2/3). Yalnızca CAPTCHA yanıtı başarısız olan istekte ve Captcha kartında başarısız çözümler karantinaya bağlıysa yazılır; diğer isteklerde boştur. Değer sayı değil metindir. |
quarantinedBy | metin | İstemciyi bu istekle Quarantine kutusuna gönderen mekanizma (aşağıdaki tablo). Yalnızca kutuya giriş anındaki istekte yazılır; istemcinin kutudayken gönderdiği sonraki isteklerde boştur. |
ceilingDrop | true | false | İstek, toplam istek ya da bağlantı hızının sert tavanı aşıldığı için yanıtsız düşürüldüyse true. Bu durumda action silentDrop olur. Sert tavan yalnızca koruma Enforce modundayken ve Total Request ya da Total Connection Protection'da sert sınır tanımlıyken uygulanır; L7 DDoS beyaz listesindeki istemcilere uygulanmaz. |
quarantinedBy | Mekanizma |
|---|---|
ddos | L7 DDoS kaynak limiti (DDoS Limit) |
bot | Bot skoru (Bot Score) |
ipRep | IP itibar kuralı (IP Reputation) |
captcha | Başarısız CAPTCHA çözümleri (Failed Captcha) |
Karar Mantığı
Bir istekte birden fazla koruma tetiklenebilir; nesneye yalnızca kazanan kararın aksiyonu yazılır. Değerlendirme şu sırayla yapılır:
- Önce gelen kazanır. Karantina kutusundaki bir istemcide kararı her zaman kutu verir ve
modulequarantineolur; korumalar yine çalışır ve ölçümlerini nesneye yazar. Bir kuralın istemciyi kutuya gönderdiği istekte de kararı kutu verir. Kutuda olmayan bir istekte L7 DDoS'un uyguladığı aksiyon, IP itibarının ve botun aksiyonunun önüne geçer. Kaybeden korumaların ölçümleri yine de nesneye yazılır: L7 DDoS kazansa bilebot.scoreveipReputation.categorydolu gelebilir. - L7 DDoS içinde sıra: ülke kuralı, ağ tipi kuralı, kaynak IP istek ve bağlantı limitleri, hata limiti, toplam limitler, aktif kaynak sayısı.
- İzleme modu kazanmaz. Monitor modundaki bir koruma aksiyon uygulamadığı için
modulealanına yazılmaz; yalnızcamonitornesnesini doldurur. Birden fazla koruma izleme modunda eşleşirse yalnızca öncelik sırasındaki ilk koruma yazılır. - Uygulanan aksiyon yoksa
actionşu sırayla belirlenir:monitored,whitelisted,trustedBot,passed. - Doğrulanmış bot:
trustedBot, istemcinin ağ tipiverified_botolduğunda ve korumalardan biri doğrulanmış botlara güvendiğinde yazılır. Varsayılan olarak Bot Protection ve IP Reputation Protection güvenir, L7 DDoS güvenmez. - Sert tavan bağımsızdır. Toplam istek ya da bağlantı hızının sert tavanı, hangi korumanın kazandığından bağımsız olarak uygulanır; aşıldığında
ceilingDroptrue,actionsilentDropolur. L7 DDoS beyaz listesindeki istemcilere uygulanmaz.
Senaryo Örnekleri
Aşağıdaki kayıtlar okunurluk için kısaltılmıştır: yalnızca senaryoyu anlatan alanlar gösterilir, gerçek kayıtta bütün anahtarlar bulunur.
Bot Skoru Nedeniyle Engelleme
{
"action": "block",
"module": "bot",
"summary": "block: bot score 91 reached threshold 85",
"bot": {"score": 91, "class": "bot", "threshold": 85, "factors": "botUa;notBrowser;missingHeaders;rapidRequests;"},
"client": {"uaFamily": "python", "networkType": "hosting"}
}Bot skoru 91 ile Bad Bot sınıfındadır (bot kodu) ve eşiği 85 olan aksiyon kuralı eşleşmiştir. uaFamily ve networkType, isteğin bir barındırma sağlayıcısından çalışan bir Python betiğinden geldiğini gösterir.
L7 DDoS Limitinde CAPTCHA
{
"action": "captcha",
"module": "ddos",
"summary": "captcha: ddos rule sR exceeded (240/100)",
"ddos": {"rule": "sR", "observed": 240, "limit": 100}
}Kaynak adresin istek hızı 240, Source IP Request Protection limiti 100'dür; kural Enforce modundadır ve CAPTCHA göstermiştir.
IP İtibarı Nedeniyle Karantina
{
"action": "quarantine",
"module": "quarantine",
"summary": "quarantine: source is in quarantine",
"ipReputation": {"category": "hacking"},
"quarantinedBy": "ipRep"
}Adres Hacking kategorisindedir ve IP itibar kuralı istemciyi karantinaya almıştır. Kutuya giriş anında da kararı kutu verdiği için module quarantine olur; istemciyi kutuya hangi korumanın gönderdiğini quarantinedBy gösterir. quarantinedBy yalnızca bu ilk istekte doludur; istemcinin kutudayken gönderdiği sonraki isteklerde aynı module ve summary ile boş gelir.
Beyaz Listedeki İstemci
{
"action": "whitelisted",
"module": "",
"summary": "whitelisted: exempt by whitelist",
"exempt": {"ddos": false, "bot": true, "ipReputation": false}
}İstemci Bot Protection'ın beyaz listesindedir; istek geçirilmiştir. Bot skoru yine hesaplanır ve bot nesnesinde yer alabilir.
Doğrulanmış Bot
{
"action": "trustedBot",
"module": "",
"summary": "trustedBot: verified crawler",
"client": {"uaFamily": "crawler", "networkType": "verified_bot"}
}Adres doğrulanmış bir botun (crawler) yayımladığı aralıktadır; istek geçirilmiştir.
SIEM'de Kullanım İpuçları
| Amaç | Kullanılacak alanlar |
|---|---|
| Engellenen bütün istekler | action değeri block, captcha, tarpit, redirect, showContent, silentDrop ya da quarantine |
| Hangi korumanın ne kadar müdahale ettiği | module alanına göre gruplama |
| Enforce moduna geçmeden önce etki ölçümü | action = monitored; monitor.module ve monitor.action alanlarına göre gruplama |
| Kötü bot yoğunluğu | bot.class = bot ya da likely_bot; client.networkType ile birlikte |
| L7 DDoS kural ayarı | ddos.rule, ddos.observed, ddos.limit (limitin ne kadar aşıldığı) |
| Karantinaya giren istemciler | quarantinedBy dolu kayıtlar (kutuya giriş anı); istemci adresiyle birlikte |
| Kapasite alarmı | ceilingDrop = true |
| Beyaz liste denetimi | action = whitelisted ve exempt bayrakları |
| Kimliğini taklit eden istemciler | bot.factors içinde tlsUaMismatch, ja4ToolImpersonation ya da crawlerImpersonation; client.ja4Family ile client.uaFamily karşılaştırması |
Kapsam ve Sınırlar
INFO
%THREAT_INFOyalnızca HTTP vService'lerde ve yalnızca Manual biçimli log profillerinde kullanılır; L7 TCP ve Network vService'lerde üretilmez.- Değişken, log profili onu kullanan vService'lerde her istek için hesaplanır; istek başına işlemci maliyeti birkaç mikrosaniye düzeyindedir ve yalnızca bu vService'leri etkiler.
- Nesne zaman, istemci adresi, host, istek satırı, yanıt kodu ve ham User-Agent başlığını taşımaz (yalnızca
client.uaFamilyailesi bulunur); bunlar log profiline ayrı satırlar olarak eklenir. - Ağ katmanında, istek oluşmadan düşürülen trafik (ör. L4 DDoS Protection) HTTP erişim loguna girmediği için bu nesnede yer almaz.
ddos.observedveddos.limityalnızca değerleri taşır; limitin ölçüldüğü zaman penceresi nesnede yoktur, kuralın kendi ayarından okunur.bot.scorevebot.classskorun indirimsiz hâlini gösterir. İnsan doğrulaması (Human Verification faktörleri) aksiyon kararında skoru düşürür; bu nedenle geçirilmiş bir istekte en düşük aksiyon eşiğinin üzerinde bir skor görülebilir.- Karantina kutusundaki istemci için
actionquarantineolarak yazılır; kutunun yapılandırılmış yanıt biçimi bu alana yansımaz. Kutudaki istemci sert tavana takılırsaactionsilentDrop,ceilingDroptrueolur. - Kayıtlar log profilinde tanımlı syslog adreslerine gönderilir; iletim ve biçim ayarları Logs profilinden yönetilir.
