CyberFlow Logo CyberFlow BLOG
Soc L3 Cloud Security

Yapılandırılmış vs Yapılandırılmamış Log Verisi

✍️ Ahmet BİRKAN 📂 Soc L3 Cloud Security

Yapılandırılmış vs Yapılandırılmamış Log Verisi konusunu SOC L3 - İleri Tehdit Avcılığı - Veri Madenciliği ve Modelleme baglaminda blog formatinda ogrenin. Temel akis, kavram eslestirmeleri ve analiz mantigi tek bir yapida birlestirildi.

Yapılandırılmış vs Yapılandırılmamış Log Verisi

Yapılandırılmış log verisi sabit şemalı, ayrıştırılması kolay formatlarda gelir. Aşağıdaki örnek bir Syslog satırından JSON'a dönüştürülmüş yapılandırılmış kayıttır: { "timestamp": "2024-01-15T08:23:11Z", "src_ip": "192.168.1.45", "dst_ip": "10.0.0.1", "port": 445, "action": "BLOCK" } Bu format SIEM tarafından doğrudan indekslenebilir.

Giris ve Temel Akis

Yapılandırılmış log verisi sabit şemalı, ayrıştırılması kolay formatlarda gelir. Aşağıdaki örnek bir Syslog satırından JSON'a dönüştürülmüş yapılandırılmış kayıttır: { "timestamp": "2024-01-15T08:23:11Z", "src_ip": "192.168.1.45", "dst_ip": "10.0.0.1", "port": 445, "action": "BLOCK" } Bu format SIEM tarafından doğrudan indekslenebilir.

Bu bölümün pratik akışı şu sırayla ilerler:

  • index=firewall
  • action=BLOCK
  • port=445
  • | stats count
  • by src_ip
  • | sort -count

Temel Kavram Eslesmeleri

Log formatları SOC araçlarının parse etme stratejisini belirler. Syslog, CEF, LEEF ve JSON en yaygın yapılandırılmış formatlardır. Örnek CEF satırı: CEF:0|Palo Alto|PAN-OS|9.1|threat|Threat Detected|7|src=10.1.1.5 dst=8.8.8.8 proto=TCP

  • JSON: Anahtar-değer çiftleri, API entegrasyonuna uygun
  • CEF: ArcSight standardı, pipe ile ayrılmış header
  • LEEF: IBM QRadar standardı, tab ile ayrılmış alanlar
  • Syslog RFC5424: Facility/Severity önekli, timestamp standartlı

Ilk Cekirdek Kavram

Bu bölümde öne çıkan çekirdek kavram 401 olarak verilir. Yapılandırılmamış log verisi serbest metin formatındadır ve regex ile parse edilmesi gerekir. Örnek Apache access log satırı: 192.168.1.10 - admin [15/Jan/2024:08:23:11 +0300] "POST /admin/login HTTP/1.1" 401 512 Bu satırdan HTTP status kodunu çekmek için kullanılan regex: "\S+ \S+ HTTP/\d.\d" (\d{3})

Arac, Komut veya Inceleme Akisi

Splunk'ta yapılandırılmamış log verisini parse etmek için rex komutu kullanılır: | rex field=_raw "(?P\d+.\d+.\d+.\d+).*?"(?P\w+) (?P\S+)" | stats count by src_ip, method, uri Bu sorgu ham log satırından IP, HTTP metodu ve URI alanlarını çıkarır.

Bu bölümün pratik akışı şu sırayla ilerler:

  • index=weblogs
  • | rex field=_raw
  • "(?P\d+.\d+.\d+.\d+)"
  • | stats count by src_ip
  • | sort -count

Kanit ve Bilesen Iliskileri

Python ile log parse işlemi SOC analistlerinin sık kullandığı bir tekniktir. re modülü ile yapılandırılmamış veri işlenir: import re pattern = r'(?P\d+.\d+.\d+.\d+).*?(?P\d{3})' match = re.search(pattern, log_line) print(match.group('ip'), match.group('status'))

  • re.search(): Satırda ilk eşleşen örüntüyü bulur
  • (?P...): İsimli yakalama grubu tanımlar
  • re.findall(): Tüm eşleşmeleri liste olarak döner
  • re.compile(): Pattern'i önceden derleyerek performans artırır

Ikincil Odak Noktasi

Bu bölümde öne çıkan çekirdek kavram NUMBER olarak verilir. Elastic Stack'te yapılandırılmamış log verisi Logstash Grok filtresi ile parse edilir: filter { grok { match => { "message" => "%{IP:src_ip} %{USER:ident} %{USER:auth} [%{HTTPDATE:timestamp}] "%{WORD:method} %{URIPATHPARAM:uri} HTTP/%{NUMBER:http_version}" %{NUMBER:status}" } } } Bu pattern Apache Combined Log formatını ayrıştırır.

Operasyonel Dogrulama ve Raporlama

Log normalizasyonu farklı kaynaklardan gelen veriyi ortak şemaya dönüştürür. Elastic Common Schema (ECS) endüstri standardıdır: { "@timestamp": "2024-01-15T08:23:11Z", "source.ip": "192.168.1.45", "destination.port": 445, "event.action": "blocked", "event.category": "network" } ECS sayesinde farklı vendor logları tek sorguda korelasyon yapılabilir hale gelir.

Bu bölümün pratik akışı şu sırayla ilerler:

  • ham logu parse et
  • alan adlarını ECS'e eşle
  • timestamp'i ISO8601'e çevir
  • SIEM'e ilet

Cikti ve Kullanım Amaci

SOC'ta log verisi kalitesini değerlendirmek için farklı metrikler kullanılır. Düşük kaliteli log verisi tehdit tespitini doğrudan engeller. Örnek sorunlu log: [ERR] 1705304591 usr=? act=login res=?? Bu kayıtta timestamp epoch formatında, kullanıcı ve sonuç alanları belirsizdir.

  • Eksik timestamp: Olay zaman çizelgesi kurulamaz
  • Null kaynak IP: Saldırgan attributionu yapılamaz
  • Tutarsız alan adları: Çapraz kaynak korelasyonu başarısız olur
  • Epoch timestamp formatı: İnsan okunabilir analiz zorlaşır

Son Kavram ve Cikis

Bu bölümde öne çıkan çekirdek kavram sort_values olarak verilir. Pandas ile log analizi SOC veri madenciliğinde yaygın kullanılır: import pandas as pd df = pd.read_csv('firewall.log', sep='|', names=['timestamp','src_ip','dst_ip','port','action']) blocked = df[df['action'] == 'BLOCK'] .groupby('src_ip').size() .sort_values(ascending=False) print(blocked.head(10))

Bu Egitimden Ne Kazanirsiniz?

Bu icerik, Yapılandırılmış vs Yapılandırılmamış Log Verisi konusunu SOC L3 - İleri Tehdit Avcılığı - Veri Madenciliği ve Modelleme baglaminda parcali degil, butunlu bir ogrenme akisina donusturur. Yalnizca kavramlari ezberlemek yerine surec sirasini, bilesenler arasi iliskiyi ve hangi kanitin neden onemli oldugunu kavramayi hedefler.

Ozet

Bu ders kapsaminda one cikan basliklar: JSON, CEF, LEEF, Syslog RFC5424, re.search(), (?P...), re.findall(), re.compile(), Eksik timestamp, Null kaynak IP. Egitimin mantigi; once temel akis kurmak, sonra eslestirme ve kavram netlestirme yapmak, en sonda ise bulguyu operasyonel bir sonuca baglamaktir.