Slide 1 / 15
Apache-BigData-SIEM
Lakehouse SIEM Showcase Production Stack
Spark, Hive, Kafka, Hadoop ve Superset ile açık kaynaklı, ölçeklenebilir ve gerçek zamanlı güvenlik analitiği platformu.

1) Neden "Big Data SIEM"?

Geleneksel SIEM (Security Information and Event Management) çözümleri çoğunlukla veri hacmi bazlı lisanslanır (GB/Gün). Bu durum kurumları, maliyeti düşürmek adına bazı kritik logları silmeye veya görmezden gelmeye zorlar.

Lakehouse mimarisi bu sorunu çözmek için tasarlandı:

  • Sınırsız ve ucuz veri depolama (Hadoop HDFS).
  • Gerçek zamanlı uyarı ve anomali tespiti (Spark Streaming).
  • Geriye dönük yıllar süren hızlı SQL analizleri (Hive).
  • Lisans maliyeti %0, sadece donanım masrafı.
SCALE

2) Veri Giriş Kapısı: Apache Kafka Nedir?

Apache Kafka, dağıtık, yüksek performanslı bir olay akışı (event streaming) platformudur.

Saniyede milyonlarca log üretildiğinde (DDoS saldırısı, log burst vb.) sistemlerin çökmesini engellemek için bir "tampon" (buffer) görevi görür.

  • Topic: Mantıksal veri kanallarıdır (örn. web-logs, syslogs).
  • Zero-Copy & PageCache: Veriyi RAM'den diske kopyalamadan doğrudan ağ kartına (NIC) gönderir, bu da inanılmaz düşük gecikme sağlar.
  • KRAFT Mimarisi: Artık Zookeeper'a ihtiyaç duymadan metadata yönetimini kendi içinde yapar (KRaft mode).
  • Scalability: Partition yapısı sayesinde yatayda sınırsız ölçeklenebilir.
KAFKA

3) Analiz Motoru: Apache Spark Nedir?

Apache Spark, büyük veri kümelerini bellek (RAM) üzerinde paralel olarak işleyebilen, inanılmaz hızlı bir dağıtık analiz motorudur.

Projelerimizde Spark Structured Streaming kullanarak Kafka'dan akan logları anlık olarak okur, temizler, formatlar (Extract, Transform, Load - ETL) ve depolarız.

  • Project Tungsten: Veriyi Java nesneleri yerine ham binary formatında (Off-Heap) işleyerek Garbage Collection yükünü sıfırlar.
  • Catalyst Optimizer: SQL sorgularını otomatik olarak optimize eder ve en hızlı çalışma planını (DAG) oluşturur.
  • Structured Streaming: "Exactly-Once" işlem garantisi ile veri kaybını önler.
SPARK (ETL)

4) Veri Gölü: Apache Hadoop (HDFS)

HDFS (Hadoop Distributed File System), devasa boyutlardaki dosyaları standart sunucuların disklerine dağıtarak depolayan bir dosya sistemidir.

Güvenlik logları yıllarca petabaytlarca veri oluşturur. HDFS bu veriyi bloklara böler ve farklı makinelere kopyalayarak saklar.

  • NameNode: Sistemin beyni; hangi dosya hangi makinede, haritayı tutar.
  • DataNode: Gerçek veriyi depolayan işçi sunucular.
  • Reliability: Her veri bloğu varsayılan olarak 3 (bizde 2) kez kopyalanır.
NameNode DataNode 1 DataNode 2

5) Veri Kataloğu: Apache Hive

Apache Hive, Hadoop üzerinde depolanan ham verilere SQL kullanarak sorgu atmamızı sağlayan bir veri ambarı katmanıdır.

Lakehouse mimarisinin kilit taşıdır; veriyi bir tablo gibi gösterir.

  • Hive Metastore: Dosyaların tablo yapısını ve şemasını yönetir.
  • Lakehouse Pattern: Parquet gibi yüksek performanslı kolonel formatlarla SQL hızını birleştirir.
  • Interoperability: Hem Spark hem de BI araçları (Superset) aynı metadata üzerinden konuşur.
SQL

6) Görselleştirme: Apache Superset & Alerting

Apache Superset, kurumsal düzeyde bir veri görselleştirme ve BI (Business Intelligence) platformudur.

SOC analistleri için gerçek zamanlı güvenlik dashboardları, saldırı trendi grafikleri ve raporlar oluşturmak için kullanılır.

  • SQL Lab: Hive üzerindeki petabaytlarca log verisini doğrudan tarayıcıdan SQL ile sorgula.
  • Dashboard: Grafik, tablo, harita gibi görsel bileşenlerle SOC paneli oluştur.
  • Oto-Senkronizasyon: Yeni tablolar ve sütunlar (`ingest_ts`, `source_topic`) anlık olarak indekslenir.
SUPERSET

7) SIEM SOC Overview: Canlı İzleme

Platformumuz, kurulduğu anda 6 farklı kritik güvenlik metriğini içeren tam teşekküllü bir SOC Dashboard'u ile birlikte gelir:

  • Hacim Ölçümü: Toplam işlenen log sayısı ve anlık trafik yoğunluğu.
  • Saldırı Analitiği: Benzersiz saldırgan IP sayıları ve hedef alınan servisler.
  • Zaman Serisi: Dakikalık bazda log akış trendi (Events Over Time).
  • Canlı Akış: En son gelen 50 logun tüm detaylarıyla (IP, Method, Path, OS) tablolandığı canlı panel.
TOTAL: 1.2M
ATTACKERS: 142

Uçtan Uca Otomatik SOC Paneli

8) Proje Akış Mimarisi

Uçtan uca veri yolculuğu (Data Pipeline)

flowchart TB %% Styling classDef node fill:#f8fafc,stroke:#94a3b8,stroke-width:2px,color:#0f172a,font-weight:bold,font-size:18px classDef producer fill:#f1f5f9,stroke:#cbd5e1,stroke-width:2px,color:#0f172a,font-weight:bold,font-size:16px classDef buffer fill:#fff7ed,stroke:#fb923c,stroke-width:3px,color:#c2410c,font-weight:bold,font-size:18px classDef etl fill:#fef2f2,stroke:#ef4444,stroke-width:3px,color:#b91c1c,font-weight:bold,font-size:18px classDef storage fill:#f0fdf4,stroke:#4ade80,stroke-width:3px,color:#15803d,font-weight:bold,font-size:18px classDef catalog fill:#fefce8,stroke:#facc15,stroke-width:3px,color:#854d0e,font-weight:bold,font-size:18px subgraph DataGeneration ["1. Log Üretimi (Producers)"] direction LR P1("flog-web"):::producer P2("flog-syslog"):::producer P3("flog-app"):::producer P4("flog-winevent"):::producer end K1("2. Apache Kafka
(Event Streaming & Buffer)"):::buffer S1("3. Apache Spark
(ETL & SQL Engine)"):::etl subgraph StorageCatalog ["4. Lakehouse (Depolama & Sorgu)"] direction LR HDFS("HDFS (Parquet)"):::storage HIVE("Hive Metastore"):::catalog end DB[("Postgres
(Metadata DB)")]:::buffer SUP("5. Apache Superset
(Dashboard & Alerting)"):::buffer %% Flow P1 & P2 & P3 & P4 --> K1 K1 ==>|"Consume"| S1 S1 ==>|"Write Parquet"| HDFS S1 -.->|"Update Schema"| HIVE HIVE -.->|"Warehouse"| HDFS SUP ==>|"Interactive SQL"| S1 S1 <-->|"Get Schema"| HIVE
graph TD subgraph FLOG["📡 Log Generators (Flog)"] FW["Flog Web
web-logs"] FS["Flog Syslog
syslogs"] FA["Flog App
app-logs"] FE["Flog WinEvent
win-event-logs"] end subgraph KAFKA["📨 Messaging Layer"] KB["Kafka Broker
KRaft Mode
:9092"] end subgraph SPARK["⚙️ Processing Layer (Spark)"] SM["Spark Master
:8080 · :7077 · :10000"] SW1["Spark Worker 1
2G RAM · 2 Cores
:8081"] SW2["Spark Worker 2
2G RAM · 2 Cores
:8082"] end subgraph HIVE["🗂️ Data Cataloging (Hive)"] HM["Hive Metastore
:9083"] HS2["Hive Server2
:10001 · :10002"] end subgraph HDFS["💾 Distributed Storage (HDFS)"] NN["Namenode
:9870 · :8020"] DN1["Datanode 1"] DN2["Datanode 2"] end subgraph DB["🗄️ Unified Database"] PG[("Postgres")] end subgraph VIZ["📊 Analytics & Visualization"] SRED["Superset Redis"] SUP["Superset
:8088"] end FW -->|"web-logs"| KB FS -->|"syslogs"| KB FA -->|"app-logs"| KB FE -->|"win-event-logs"| KB KB -->|"Stream Consume"| SM SM --- SW1 SM --- SW2 SM -->|"Parquet Write"| NN NN --- DN1 NN --- DN2 HM -->|"Metadata DB"| PG SM -.->|"Schema Registry"| HM HM -.->|"Warehouse location"| NN SUP -->|"SQL Query"| SM SM ==>|"Data Read (Parquet)"| NN SUP -->|"Superset DB"| PG SUP --- SRED style FLOG fill:#f8fafc,stroke:#00b894,color:#0f172a style KAFKA fill:#f8fafc,stroke:#e17055,color:#0f172a style SPARK fill:#f8fafc,stroke:#fdcb6e,color:#0f172a style HIVE fill:#f8fafc,stroke:#74b9ff,color:#0f172a style HDFS fill:#f8fafc,stroke:#a29bfe,color:#0f172a style DB fill:#f8fafc,stroke:#636e72,color:#0f172a

10) Mikroservis & Konteyner Mimarisi

Big Data platformumuz devasa bir monolit yapı değildir. Her bir Apache bileşeni birbirinden tamamen izole edilmiş, kendi yaşam döngüsü olan Docker konteynerleri (Mikroservisler) olarak çalışır.

Bu bize şu avantajları sağlar:

  • Bağımsız Ölçeklendirme: Log hacmi artarsa sadece Kafka Broker sayısını (`docker compose scale`) artırabiliriz. Spark veya Hive'ı etkilemez.
  • İzolasyon: Spark işçisi (worker) %100 CPU tavanına vursa bile Hadoop HDFS'in okuma/yazma performansı etkilenmez.
  • Kolay Dağıtım (Deployment): `docker-compose.yml` dosyamız altyapının kod (Infrastructure as Code) halidir. Saniyeler içinde tüm cluster ayağa kalkar.
  • Tam Uyum: Yazılımcının bilgisayarındaki ortam ile gerçek üretim (Production) ortamı birebir aynıdır.
🐳 🐳 🐳 🐳

11) Servis Dağılımı ve Rol Tablosu

Bileşen Container Görev Öne Çıkan Özellik
Producers flog (x4) Log Üretimi WinEvent + Web + Sys + App
Hadoop HDFS namenode, datanode-1, 2 Sınırsız Depolama Reliability (Replication)
Kafka kafka-broker Event Streaming Low Latency (Zero-Copy)
Spark spark-master, worker-1, 2 Real-time ETL Performance (Tungsten)
Hive hive-server2, metastore SQL Catalog Lakehouse Pattern
Superset superset SOC Dashboard Interactive Analysis

12) ETL Mantığı (PySpark)

spark.readStream.format("kafka")
  .option("kafka.bootstrap.servers", "kafka-broker:9092")
  .option("subscribe", "web-logs,syslogs,app-logs,win-event-logs")
  .load()
  
  # RegExp & JSON field Extraction
  .withColumn("client_ip", regexp_extract("raw_log", r"^(\\S+)", 1))
  .withColumn("app_event", json_parsed.getField("event"))

  # Yazma Aşaması
  .writeStream
  .foreachBatch(append_to_hive)
  .start()

13) Dağıtık Durum Doğrulama (CLI)

# Hadoop doğrulama
docker exec -it namenode hdfs dfsadmin -report

# Kafka topic kontrol
docker exec -it kafka-broker kafka-topics.sh --bootstrap-server kafka-broker:9092 --list

# SQL Testi
docker exec -it hive-server2 /opt/hive/bin/beeline -u jdbc:hive2://localhost:10000 \
  -e "SELECT source_topic, COUNT(*) FROM siem.logs_parsed GROUP BY source_topic;"

14) Neden Bu Mimari?

15) Sonraki Adımlar & Gelişim

Kapanış