CEF Format (HTTP)
Format Hakkında
CEF (Common Event Format), ArcSight tarafından geliştirilen ve güvenlik sektöründe yaygın olarak kullanılan standart bir log formatıdır. Profil formundaki Line Format listesinde CEF Format seçeneğiyle yer alır.
TR7 CEF formatı, HTTP isteklerinin tüm detaylarını SIEM sistemlerinin kolayca ayrıştırabileceği yapılandırılmış bir formatta sunar. WAF profili aktif olduğunda saldırı bilgileri de loglara eklenir.
Kullanım senaryoları
- SIEM entegrasyonu (ArcSight, Splunk, QRadar vb.).
- Güvenlik olay izleme (SOC).
- Uyumluluk ve denetim gereksinimleri.
- WAF olay korelasyonu.
Desteklenen Özellikler
INFO
Aynı CEF Format seçeneği bir L7 TCP vService'e atandığında çok daha kısa, bağlantı düzeyinde bir satır üretir; alanları ve örneği CEF (L7 TCP) sayfasında yer alır.
Örnek Log (WAF Devre Dışı)
CEF:0|TR7|TR7 ASP|v1.9|200|DBE|5|name=LOGTEST-H src=172.16.101.42 srcPort=59654 dst=172.16.102.85 dstPort=443 serverIP=172.16.102.168 serverPort=80 fCipher=TLS_AES_128_GCM_SHA256 fProtocol=TLSv1.3 sCipher=- sProtocol=- reqMethod=GET reqBase=/login.php reqQuery= reqProtocol=HTTP/1.1 reqHost=test.tr7.com reqUA=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/152.0.0.0 Safari/537.36 reqHeaders=host: test.tr7.com\r\ncache-control: max-age\=0\r\nsec-ch-ua: \"Chromium\";v\=\"152\", \"Not?A_Brand\";v\=\"24\", \"Google Chrome\";v\=\"152\"\r\nsec-ch-ua-mobile: ?0\r\nsec-ch-ua-platform: \"Windows\"\r\nupgrade-insecure-requests: 1\r\nuser-agent: Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/152.0.0.0 Safari\/537.36\r\naccept: text\/html,application\/xhtml+xml,application\/xml;q\=0.9,image\/avif,image\/webp,image\/apng,*\/*;q\=0.8,application\/signed-exchange;v\=b3;q\=0.7\r\nsec-fetch-site: none\r\nsec-fetch-mode: navigate\r\nsec-fetch-user: ?1\r\nsec-fetch-dest: document\r\naccept-encoding: gzip, deflate, br, zstd\r\naccept-language: en-US,en;q\=0.9\r\n\r\n resHeaders=date: Wed, 09 Sep 2026 17:41:24 GMT\r\nserver: Apache\/2.4.59 (Debian)\r\nvary: Accept-Encoding\r\ncontent-encoding: gzip\r\ncontent-length: 824\r\ncontent-type: text\/html; charset\=UTF-8\r\n\r\n reqUploadBytes=632 resDownloadBytes=1011 username=- isWafAttack=- wafInfo={}Örnek Log (WAF Bloku)
CEF:0|TR7|TR7 ASP|v1.9|418|TR7|5|name=LOGTEST-H src=172.16.101.42 srcPort=54983 dst=172.16.102.85 dstPort=443 serverIP=- serverPort=- fCipher=TLS_AES_128_GCM_SHA256 fProtocol=TLSv1.3 sCipher=- sProtocol=- reqMethod=GET reqBase=/cmd.exe reqQuery= reqProtocol=HTTP/1.1 reqHost=test.tr7.com reqUA=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/152.0.0.0 Safari/537.36 reqHeaders=host: test.tr7.com\r\ncache-control: max-age\=0\r\nsec-ch-ua: \"Chromium\";v\=\"152\", \"Not?A_Brand\";v\=\"24\", \"Google Chrome\";v\=\"152\"\r\nsec-ch-ua-mobile: ?0\r\nsec-ch-ua-platform: \"Windows\"\r\nupgrade-insecure-requests: 1\r\nuser-agent: Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/152.0.0.0 Safari\/537.36\r\naccept: text\/html,application\/xhtml+xml,application\/xml;q\=0.9,image\/avif,image\/webp,image\/apng,*\/*;q\=0.8,application\/signed-exchange;v\=b3;q\=0.7\r\nsec-fetch-site: none\r\nsec-fetch-mode: navigate\r\nsec-fetch-user: ?1\r\nsec-fetch-dest: document\r\naccept-encoding: gzip, deflate, br, zstd\r\naccept-language: en-US,en;q\=0.9\r\n\r\n resHeaders=- reqUploadBytes=630 resDownloadBytes=0 username=- isWafAttack=1 wafInfo={"attacks":[{"scope":"path","payload":"\/cmd.exe","id":130005,"monitor":false,"score":8}],"uid":"AC10652A:D6C76AA19A96:A10044","totalScore":8,"wafTime":1.651,"action":"block"}CEF Header Yapısı
CEF:Version|Device Vendor|Device Product|Device Version|Signature ID|Name|Severity|Extension| Alan | Değer | Açıklama |
|---|---|---|
| Version | 0 | CEF format versiyonu |
| Device Vendor | TR7 | Üretici adı |
| Device Product | TR7 ASP | Ürün adı |
| Device Version | v1.9 | Biçim sürümü. Sabittir; kurulu TR7 sürümüyle değişmez. |
| Signature ID | 200 · 418 | HTTP yanıt durum kodu. WAF blokunda WAF profilindeki bloklama kodu yazılır (varsayılan 418). |
| Name | DBE · TR7 | Yanıtın kaynağı (değerleri aşağıdaki tabloda) |
| Severity | 5 | Sabittir; TR7 bu değeri olayın şiddetine göre değiştirmez. CEF'in tanımladığı 0–10 aralığı yalnızca biçimsel bilgidir. |
Extension Alanları
Ağ Bilgileri
| Alan | Örnek | Açıklama |
|---|---|---|
name | LOGTEST-H | vService adı |
src | 172.16.101.42 | İstemci IP adresi |
srcPort | 59654 | İstemci kaynak portu |
dst | 172.16.102.85 | Frontend (vService) IP adresi |
dstPort | 443 | Frontend port |
serverIP | 172.16.102.168 | Kurum Servisi IP adresi. İstek Kurum Servisine hiç ulaşmadıysa (WAF bloku gibi) - yazılır. |
serverPort | 80 | Kurum Servisi portu. İstek Kurum Servisine hiç ulaşmadıysa - yazılır. |
SSL/TLS Bilgileri
| Alan | Örnek | Açıklama |
|---|---|---|
fCipher | TLS_AES_128_GCM_SHA256 | Frontend SSL cipher |
fProtocol | TLSv1.3 | Frontend SSL protokolü |
sCipher | - | Kurum Servisi SSL cipher. Kurum Servisine şifresiz bağlanıldığında - yazılır. |
sProtocol | - | Kurum Servisi SSL protokolü. Kurum Servisine şifresiz bağlanıldığında - yazılır. |
HTTP İstek Bilgileri
| Alan | Örnek | Açıklama |
|---|---|---|
reqMethod | GET | HTTP metodu |
reqBase | /login.php | İstek path'i |
reqQuery | (boş) | Query string. İstekte query bulunmadığında alan reqQuery= biçiminde değersiz yazılır; her iki örnek logda da bu durumdadır. |
reqProtocol | HTTP/1.1 | HTTP protokol versiyonu |
reqHost | test.tr7.com | Host başlığının değeri |
reqUA | Mozilla/5.0 (Windows NT 10.0; ... | User-Agent |
reqHeaders | host: test.tr7.com\r\n... | İstek başlıkları; en fazla 4096 bayt yakalanır, fazlası kesilir |
resHeaders | date: Wed, 09 Sep 2026 ... | Yanıt başlıkları; en fazla 4096 bayt yakalanır. TR7'nin kendi ürettiği yanıtlarda (WAF bloku gibi) - yazılır. |
Kaçışlama
reqHost, reqUA, reqHeaders, resHeaders ve wafInfo alanlarında değer JSON olarak kodlanır: satır sonları \r\n, eğik çizgi \/, eşittir işareti \= biçiminde kaçışlanır. Örnek logdaki max-age\=0 ve charset\=UTF-8 bu yüzdendir. reqBase, reqQuery, reqMethod, username ve name alanlarına bu kaçışlama uygulanmaz; içlerinde = geçen değerler (özellikle query string) katı CEF ayrıştırıcılarında alan sınırını kaydırabilir.
Boyut ve Kimlik Bilgileri
| Alan | Örnek | Açıklama |
|---|---|---|
reqUploadBytes | 632 | İstek boyutu (byte) |
resDownloadBytes | 1011 | Kurum Servisinden okunan yanıt boyutu (byte); yanıt başlıkları da dâhildir. WAF blokunda istek Kurum Servisine hiç ulaşmadığı için 0 olur; istemciye engelleme sayfası gönderilse bile. |
username | - | Kimliği doğrulanmış kullanıcı; kimlik doğrulama kullanılmıyorsa - |
WAF Bilgileri
| Alan | Örnek | Açıklama |
|---|---|---|
isWafAttack | 1 | İsteğin WAF tarafından engellenip engellenmediği. Saldırı tespit edilip yalnızca izlendiğinde (monitor) ya da yanlış-pozitif temizleyici kapsamındaki trafikte bu alan 1 olmaz. |
wafInfo | {...} | WAF olay detayları (JSON); saldırı yoksa {} |
isWafAttack "saldırı var mı" demek değildir
Alan yalnızca engelleme gerçekleştiğinde 1 olur. Monitor modunda ya da izleme modundaki bir kural eşleştiğinde wafInfo dolu gelir ("action":"monitor") ama isWafAttack 1 olmaz. Saldırı olup olmadığını anlamak için wafInfo alanının boş ({}) olup olmadığına bakılır.
WAF Info Yapısı
WAF saldırı tespit etmediğinde wafInfo alanı boş bir nesne ({}) olarak yazılır. Saldırı tespit edildiğinde ise JSON biçiminde detay taşır:
{
"attacks": [
{ "scope": "path", "payload": "/cmd.exe", "id": 130005, "monitor": false, "score": 8 }
],
"uid": "AC10652A:D6C76AA19A96:A10044",
"totalScore": 8,
"wafTime": 1.651,
"action": "block"
}| Alan | Açı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. |
attacks[].scope | Saldırının tespit edildiği bileşen: path · query · header · form · json · xml · raw |
attacks[].payload | Tespit edilen zararlı içerik. Kural payload üretmiyorsa yerine kuralın açıklaması yazılır; WAF profilinden tamamen kapatılabilir. |
attacks[].id | WAF kural ID'si. Koşulsuz basılan tek alandır. |
attacks[].monitor | Kuralın kendi durumu: true ise bu kuralın skoru toplama katılmaz. Tek başına isteğin engellenip engellenmediğini göstermez. |
attacks[].score | Kural skoru |
uid | Benzersiz olay tanımlayıcısı |
totalScore | Yalnızca monitor: false olan eşleşmelerin skor toplamı. İzleme modundaki kurallar listede gerçek skorlarıyla görünür ama toplama katılmaz; öğrenme modunda toplam 0 kalır. |
wafTime | WAF'ın istekte harcadığı CPU süresi (ms) |
action | Uygulanan aksiyon: block (engellendi) · monitor (yalnızca kaydedildi) · fpc (yanlış-pozitif temizleyici kapsamı) |
INFO
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ı şemayı taşımaz
WAF taraması zaman aşımına uğradığında TR7 sentetik bir kayıt üretir: totalScore 100, tek bir attacks girdisi (id 369999) ve wafTime 2000. Bu kayıtta uid ve action alanları bulunmaz, isWafAttack ise gerçek bir saldırı olmadan 1 olur. Sabit şema varsayan ayrıştırıcılar bu satırda hata verir.
Name Alanı (Yanıt Kaynağı)
| Değer | Açıklama |
|---|---|
DBE | Yanıt varsayılan Kurum Servisi grubundan geldi |
be-<grup> | Yanıt, koşullu yönlendirmeyle seçilen bir Kurum Servisi grubundan geldi |
TR7 | Yanıtı TR7 üretti (WAF bloku, hata sayfası, önbellek) |
ags_daemon | Yanıt AGS portalından geldi |
Rapor açıkken değerler değişir
vService'e bir Reports profili atanmışsa TR7'nin kendi ürettiği yanıtlar, kaynağı adlandıran değerlerle damgalanır: WAF blokunda WAF, HTTPS yönlendirmesinde SSL_REDIRECT gibi. Aynı WAF bloku rapor kapalıyken TR7, rapor açıkken WAF üretir.
