"In the arena of packets, there is no honor, only survivors." — Nyx Protocol
Aegis/Hydra, eBPF (Extended Berkeley Packet Filter) ve XDP (eXpress Data Path) teknolojileri kullanılarak doğrudan Linux çekirdeğinin en alt ağ sürücü katmanında (Ring 0) çalışan, yüksek performanslı ve dinamik bir IPS/DDoS koruma motorudur.
- Özellikler
- Sistem Gereksinimleri
- Hızlı Başlangıç
- Çekirdek Özellikler
- Paket Yaşam Döngüsü & Veri Akışı
- eBPF Maps
- Performans Metrikleri
- Yapılandırma
- Derleme & Kurulum
- Monitoring & Logging
- Test Senaryoları
- Sorun Giderme
- Katkılama
- Lisans
- ✅ Kernel-Level Processing: XDP/eBPF ile Ring 0'da paket işleme
- ✅ Volumetrik DDoS Koruması: Milyarda paket/saniye düzeyinde saldırılara karşı dayanıklı
- ✅ Dual-Stack Support: IPv4 ve IPv6 eş zamanlı destekleme
- ✅ L2/L3/L4 Analiz: Ethernet, IP, ARP, TCP, UDP derinlemesine inspeksiyonu
- ✅ TCP Flag Sanity Engine: NULL, SYN-FIN, SYN-RST, XMAS sızma taramalarına anında XDP_DROP
- ✅ UDP Amplification Kalkanı: DNS (53), NTP (123), SSDP (1900), CLDAP (389), Memcached (11211) yansıtma filtreleme
- ✅ Anti-Poisoning VIP Kilidi: Yetkisiz self-whitelisting girişimlerine anında 24 saatlik XDP_DROP karşı saldırısı
- ✅ Web C2 & Derin IP İstihbaratı: Milisaniyelik canlı arama çubuğu, GET vs POST analitiği ve taranan URI haritası
- ✅ Dinamik Mod Geçişi: Normal/Panik modu otomatik adaptasyonu
- ✅ Zero-Copy Architecture: Bellek kopyalama maliyeti yoktur
- ✅ LRU Bellek Yönetimi: Memory exhaustion'a karşı koruma
- ✅ Gerçek-Zamanlı HUD & Web Dashboard: Terminal tabanlı HUD ve zırhlı Web C2 arayüzü
- CPU: Modern x86_64 veya ARM64 işlemci (Intel/AMD/Qualcomm)
- RAM: Minimum 2 GB, önerilen 8+ GB
- Network Interface: XDP destekli network kartı (isteğe bağlı, yazılımsal mod da desteklenir)
- Linux Kernel: 5.8+ (XDP deneysel destek), 5.15+ (önerilen)
- Dağıtım: Ubuntu 20.04+, Debian 11+, RHEL 8+, Fedora 33+, Arch Linux
- Root Erişimi: XDP/eBPF yüklemesi için gereklidir
- Rust: 1.70+ (Nightly toolchain)
- LLVM/Clang: 10.0+
- libelf-dev: eBPF object file okuma için
- bpf-linker: Rust eBPF linker
# Repository'yi klonla
git clone https://github.com/byghost-tr/ghost-shield.git
cd ghost-shield
# Bağımlılıkları yükle (Ubuntu/Debian)
sudo apt update && sudo apt install -y \
clang llvm libelf-dev build-essential \
python3 python3-pip curl
# Rust nightly ve eBPF linker kur
rustup default nightly
cargo install bpf-linker# Hepsi bir komutla (eBPF kernel + userspace daemon)
make build
# Çıktı kontrol
ls -lh target/release/aegis# Network arayüzlerini listele
ip link show | grep '^[0-9]'
# Aegis'i başlat (root gereklidir)
sudo ./start.sh eth0Başlatıldıktan sonra, gerçek-zamanlı istatistikler gösterilir:
Normal Mod (Meşru Trafik):
╔══════════════════════════════════════════════════════════════════════╗
║ 🛡️ HYDRA APEX: KERNEL-LEVEL IPS / WAF ║
╚══════════════════════════════════════════════════════════════════════╝
⚙️ Status : ✅ NORMAL MODE ACTIVE | Interface: eth0
⚙️ Limits : Normal: 2000 PPS | Panic: 200 PPS | Ban: 300s
📈 Traffic : Incoming: 1420 PPS | Blocked: 12 PPS | Ratio: 0.8%
🚫 Active Bans: 2 (IPv4: 1, MAC: 1)
- 203.0.113.5 (Expires in 285s) [Port Scan]
- aa:bb:cc:dd:ee:ff (Expires in 142s) [ARP Spoofing]
Saldırı Altında (Panik Modu Aktif):
╔══════════════════════════════════════════════════════════════════════╗
║ 🛡️ HYDRA APEX: KERNEL-LEVEL IPS / WAF ║
╚══════════════════════════════════════════════════════════════════════╝
⚠️ Status : 🔴 PANIC MODE ACTIVE! | Interface: eth0
⚙️ Limits : Panic: 200 PPS | Ban: 300s | ARP: 50 PPS | MAC: 6000 PPS
📈 Traffic : Incoming: 285420 PPS | Blocked: 272150 PPS | Ratio: 95.4%
🚫 ACTIVE BANS DATABASE (Total: 47)
IPv4 (45):
- 198.51.100.10 (Expires in 298s) [UDP Flood] ⚡ 45000+ PPS
- 198.51.100.11 (Expires in 297s) [UDP Flood] ⚡ 52000+ PPS
- 198.51.100.12 (Expires in 296s) [UDP Flood] ⚡ 38500+ PPS
... 42 more IPs blocked ...
MAC (2):
- ff:ff:ff:ff:ff:ff (Expires in 123s) [L2 Broadcast Flood]
- 11:22:33:44:55:66 (Expires in 267s) [ARP Spoofing]
✅ WHITELISTED VIPs (Bypass Active):
- 10.0.0.0/24 (SLA Checker)
- 8.8.8.8 (DNS)
📊 Per-Protocol Stats:
- IPv4 Paketler : 185420 PPS ⬆️ 12900%
- IPv6 Paketler : 2150 PPS ⬆️ 340%
- ARP Paketler : 98250 PPS ⬆️ 196500%
- L2 Broadcast : 0 PPS ✅ BLOCKED
⏱️ Mode Duration: 47s (Cool-down enabled, won't flip for 10s)
- L2 MAC Flood Engelleyici: Rastgele sahte MAC adresleriyle paket fırtınalarını rate-limit kontrolüne tabi tutar
- ARP Guard (ARP Zehirlenmesi Koruması): EtherType 0x0806 ARP paketlerini çözerek limite ulaşan MAC adreslerini banlar
- Router/Gateway Koruyucu: Varsayılan ağ geçidinin IP ve MAC adreslerini dinamik olarak whitelist'e ekler
- Dual-Stack IPv4 & IPv6 IPS: Eşzamanlı olarak her iki protokolü destekler ve bağımsız rate-limit haritalarında takip eder
- L4 Port Analizi: TCP (SYN, ACK, RST) ve UDP protokollerini çözerek port bazlı istatistikler sunar
- LPM Trie VIP Bypass: CIDR bloklara dayalı whitelist'i O(log n) hızında kontrol eder
- Normal Mod: Meşru istemcilere yüksek limit (2000 PPS) tanır
- Panik Mod: Global PPS eşiğini aştığında sınırları dinamik olarak düşürür (200 PPS)
- Hysteresis: 10 saniylik soğuma süresi ile mod dalgalanmalarını önler
Ağ kartına bir Ethernet çerçevesi (Ethernet Frame) girdiğinde sırasıyla şu denetimlerden geçer:
[ GELEN FRAME (NIC RX Queue) ]
│
▼
┌───────────────────────┐
│ XDP: apex_shield │
└───────────┬───────────┘
│
[ L2 Ethernet Analizi ]
- Kaynak/Hedef MAC ve EtherType Okuma
│
┌───────────────────────┴───────────────────────┐
▼ ▼
[ VIP_LIST_MAC Kontrolü ] [ Karaliste Kontrolü ]
(Gateway Whitelist) (BLACKLIST_MAC)
│ │
┌───────┴───────┐ (Whitelisted) ┌───────┴───────┐ (Yasaklı)
│ Bypass L2/ARP │ │ Sessiz Drop │ ──► [ XDP_DROP ]
└───────┬───────┘ └───────────────┘
│
├───────────────────────┬───────────────────────┐
▼ (IPv4 / 0x0800) ▼ (IPv6 / 0x86dd) ▼ (ARP / 0x0806)
┌───────────────┐ ┌───────────────┐ ┌────────────────┐
│ IPv4 Ayrıştır │ │ IPv6 Ayrıştır │ │ ARP Ayrıştır │
└───────┬───────┘ └───────────────┬───────└───────────────┬┘
│ │ │
[ VIP_LIST (LPM) ] [ VIP_LIST_V6 (LPM) ] [ ARP Rate Limit ]
│ │ │
┌───────┴───────┐ (Meşru) ┌───────┴───────┐ (Meşru) ├───────────────┐ (Limit Aşıldı)
│ Bypass L3/L4 │ │ Bypass L3/L4 │ │ Blacklist MAC │ ──► [ XDP_DROP ]
└───────┬───────┘ └───────┬───────┘ └───────────────┘
│ │
[ BLACKLIST Check ] [ BLACKLIST_V6 Check ]
│ │
┌───────┴───────┐ (Yasaklı) ┌───────┴───────┐ (Yasaklı)
│ Sessiz Drop │ ─► [ XDP_DROP ] Sessiz Drop │ ──► [ XDP_DROP ]
└───────┬───────┘ └───────┬───────┘
│ │
[ IPv4 Rate Limit ] [ IPv6 Rate Limit ]
│ │
├───────────────────────────────┴───────────────────────┐
│ (Limit Aşıldı) │ (Normal)
▼ ▼
┌───────────────┐ ┌───────────────┐
│ Blacklist IP │ │ XDP_PASS │
│ Emit perf BAN │ ──► [ XDP_DROP ] │ (Linux Yığını)│
└───────────────┘ └───────────────┘
| Harita | Tipi | Anahtar | Değer | Açıklama |
|---|---|---|---|---|
VIP_LIST |
LPM_TRIE | CIDR (IPv4) | Flag | Whitelist IPv4 Blokları |
VIP_LIST_V6 |
LPM_TRIE | CIDR (IPv6) | Flag | Whitelist IPv6 Blokları |
VIP_LIST_MAC |
LRU_HASH | MAC | Flag | Gateway MAC Whitelisti |
BLACKLIST |
LRU_HASH | IP (IPv4) | Bitiş TS | Ban Listesi (IPv4) |
BLACKLIST_V6 |
LRU_HASH | IPv6 | Bitiş TS | Ban Listesi (IPv6) |
BLACKLIST_MAC |
LRU_HASH | MAC | Bitiş TS | Ban Listesi (MAC) |
G_CONFIG |
ARRAY | Index 0 | GlobalConfig | Dinamik Ayarlar |
G_STATS |
PERCPU_ARRAY | Index 0 | Stats | Global İstatistikler |
EVENTS |
PERF_EVENT | CPU ID | Event | Ban Olayları |
Neden LRU Hashmap? DDoS saldırılarında milyonlarca spoofed IP adresi kullanılabilir. LRU, bellek dolduğunda eski kayıtları otomatik silarak bellek doluluğunu engeller.
| Metrik | Değer | Açıklama |
|---|---|---|
| Max Throughput | 10+ Gbps | Paket işleme kapasitesi |
| Paket Latansı | < 1 µs | Karar verme süresi |
| False Positive | < 0.01% | Yanlış engelleme oranı |
| CPU Usage | 5-15% | Single-core kullanımı |
| Memory | 50-200 MB | Toplam RAM gereksinimi |
| Startup | 2-5 sn | eBPF yükleme süresi |
| Mitigation Latency | < 1 µs | Çekirdek (Kernel) seviyesinde anlık banlama ve drop süresi |
| Global Alert Detect | < 1 sn | Userspace kontrolcünün Panik Moduna geçiş süresi |
Benchmark: Userspace WAF 50K PPS'de CPU %100 + paket kaybı. Aegis 1M PPS'de CPU %8-12 + sıfır kayıp.
Performans değerleri teorik hesaplamalar ve XDP literatürüne dayanmaktadır. Gerçek donanım benchmark sonuçları yakında eklenecektir.
{
"checkers": [
"10.10.0.1",
"10.10.0.0/24",
"fe80::/60"
],
"global_alert_pps": 100000,
"panic_mode_limit": 200,
"normal_mode_limit": 2000,
"ban_duration_sec": 300,
"arp_mode_limit": 50,
"mac_mode_limit": 6000
}| Parametre | Açıklama |
|---|---|
checkers |
WAF bypass edecek IP/CIDR adresleri |
global_alert_pps |
Panik modunu tetikleyen toplam PPS |
panic_mode_limit |
Panik modda IP başına PPS limiti |
normal_mode_limit |
Normal modda IP başına PPS limiti |
ban_duration_sec |
Ban süresi (saniye) |
arp_mode_limit |
MAC başına ARP PPS limiti |
mac_mode_limit |
MAC başına L2 PPS limiti |
Ofis/Lab (Düşük Trafik):
{
"global_alert_pps": 50000,
"panic_mode_limit": 500,
"normal_mode_limit": 5000
}CDN/ISP (Yüksek Trafik):
{
"global_alert_pps": 500000,
"panic_mode_limit": 5000,
"normal_mode_limit": 50000
}Sıkı Güvenlik:
{
"global_alert_pps": 10000,
"panic_mode_limit": 100,
"normal_mode_limit": 500
}# Ubuntu/Debian
sudo apt install -y clang llvm libelf-dev build-essential
# Fedora/RHEL
sudo dnf install -y clang llvm libelf-devel
# Arch
sudo pacman -S clang llvm libelfrustup default nightly
cargo install bpf-linker# Derleme
make build
# Çalıştırma
sudo ./target/release/aegis eth0
# Systemd Service (otomatik başlatma)
sudo tee /etc/systemd/system/hydra-waf.service > /dev/null <<EOF
[Unit]
Description=Hydra WAF - Kernel-Level DDoS Protection
After=network.target
[Service]
Type=simple
User=root
ExecStart=$(pwd)/target/release/aegis eth0
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable hydra-waf
sudo systemctl start hydra-waf# Son logları gör
journalctl -u hydra-waf -n 50
# Canlı izleme
journalctl -u hydra-waf -f
# Ban olaylarını ara
journalctl -u hydra-waf | grep -i ban# Perf event buffer boyutunu artır
sysctl -w kernel.perf_event_mlock_kb=512000
# Network buffer'larını artır
sysctl -w net.core.rmem_max=134217728
sysctl -w net.core.wmem_max=134217728
# Kalıcı hale getir
echo 'kernel.perf_event_mlock_kb=512000' | sudo tee -a /etc/sysctl.conf
sudo sysctl -ptest_flood.py aracıyla saldırı simülasyonu yapabilirsiniz:
python3 test_flood.py <hedef_ip> udpHedef IP rate limit aşarsa ban listesine eklenir.
python3 test_flood.py <hedef_ip> tcpTCP SYN paketleri engellenir.
python3 test_flood.py <hedef_ipv6> udp6IPv6 ban listesine eklenir.
sudo python3 test_flood.py <arayüz> arpMAC adresi ARP rate limit'ini aşarsa banlanır. Gateway MAC whitelisted olduğu için etkilenmez.
# Root yetkisiyle çalıştırılmalı
sudo ./target/release/aegis eth0# Geçerli arayüzleri listele
ip link show | grep '^[0-9]'
nmcli device# Kernel sürümü kontrol (5.8+ gerekli)
uname -r
# eBPF desteği kontrol
cat /boot/config-$(uname -r) | grep CONFIG_BPF
# Çıktı: CONFIG_BPF=y olmalı# Daemon'un çalışıp çalışmadığını kontrol et
journalctl -u hydra-waf -f
ps aux | grep aegis# Rate limit'leri azalt ve config.json güncelle
"panic_mode_limit": 100,
"normal_mode_limit": 1000# Checker IP/CIDR'leri whitelist'e ekle
"checkers": [
"203.0.113.0/24",
"198.51.100.5",
"2001:db8::/32"
]- Repository'yi fork et
- Feature branch oluştur:
git checkout -b feature/xyz - Değişiklikleri yap
- Commit et:
git commit -m "Add: description" - Push et:
git push origin feature/xyz - Pull Request aç
# Debug build
cargo build
# Lint kontrol
cargo clippy --all
# Code format
cargo fmt
# Test
make test- ✅ Rust Idioms stili
- ✅ Yeni feature'lara test yazmalı
- ✅ README/comments güncelle
- ✅ Anlamlı commit mesajları
- ❌ Lisans başlıkları kaldırma
Developed by ByGhost (byghost.tr) as part of the Nyx Protocol.
Built for dominance. 🛡️
"In the arena of packets, there is no honor, only survivors."
Bu proje MIT License altında lisanslanmıştır.
MIT License
Copyright (c) 2024-2026 ByGhost
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
Detaylar için LICENSE dosyasını oku.
TL;DR: Özgürce kullan, değiştir ve dağıt. Sadece lisans metnini ekle.