Bir DDoS bypass denemesi başladığında saldırgan saniyede 50-200 farklı IP'den gelir. Klasik IDS/IPS pasiftir — alarm verir, durdurmaz. Fortigate'in kendi DoS sensörü çalışır ama yeni geliştirilmiş tactics'i tanımayabilir. Bu noktada aktif yanıt (active response / SOAR) devreye girer: tespit edilen saldırgan IP'leri firewall'da gerçekten bloklayalım.
Bu yazı, ShamashAi'ın Fortinet entegrasyonunun teknik mimarisini açıklıyor. Hangi API endpoint, hangi rate limit, hangi failure mode — sahadan notlar.
Neden sadece address group manipülasyonu?
Saldırgan tespit edildi, IP'yi bloklamamız lazım. İki yol:
Yol A — policy edit: Bir firewall policy yarat, source = saldırgan IP, action = deny.
Yol B — address group manipülasyonu: Müşteri önceden bir address group hazırlamış (örn. Shamashai-Blocked). Üzerinde bir DENY policy var. Bizim işimiz sadece o group'a IP eklemek.
ShamashAi yol B'yi seçer. Sebep:
| Yol A (policy edit) | Yol B (addrgrp) | |---|---| | Her IP için yeni policy = policy sayısı patlar | Sadece member listesi büyür | | Policy sıralaması bozulabilir | Mevcut policy değişmez | | Yanlış API call → policy yapısı çöker | Yanlış API call → group'a yanlış IP, kolayca geri alınır | | Müşteri firewall'ında "kim ekledi bunu?" sorusu | "Shamashai-Blocked" grubu = bizim | | Blast radius: tüm firewall | Blast radius: tek group, tek policy |
Bu mimari kararı pilot müşterilerde aylar boyu test edildi. Yol B'nin geri-dönülebilirliği ve kontrol edilebilirliği, yol A'dan üstün.
Customer-side hazırlık
# 1. API user oluştur — admin password kullanma (lockout sebebi)
config system api-user
edit "shamashai"
set api-key <BYPASS_AUTOGENERATED>
set accprofile "super_admin"
config trusthost
edit 1
set ipv4-trusthost <SHAMASHAI_IP> 255.255.255.255
next
next
end
# 2. Boş placeholder address — Fortinet boş group reddeder config firewall address edit "shamashai-soar-placeholder" set subnet 240.0.0.1 255.255.255.255 # IANA reserved, gerçek trafik yok next end
# 3. Address group config firewall addrgrp edit "Shamashai-Blocked" set member "shamashai-soar-placeholder" next end
# 4. TRANSIT DENY policy (en üste taşı) config firewall policy edit 0 set srcintf "wan1" set dstintf "internal" set srcaddr "Shamashai-Blocked" set dstaddr "all" set action deny set status enable next end
# 5. LOCAL-IN DENY policy — KRİTİK! admin web UI brute-force için config firewall local-in-policy edit 0 set intf "wan1" set srcaddr "Shamashai-Blocked" set dstaddr "all" set action deny next end
Local-in policy unutulmaması gereken adımdır. Transit policy sadece LAN'a trafiği keser; admin web UI'a gelen brute-force'u durdurmaz. Local-in olmazsa saldırgan firewall'ı bizzat hedef alabilir.
ShamashAi tarafı — request flow
1. Composite event geldi (BRUTE_FORCE_DETECTED, src_ip = 185.220.x.x)
2. SOAR queue'sine "auto:rule" trigger yazıldı
3. Worker queue'yu poll'ladı, action başlattı
POST /api/v2/cmdb/firewall/address name: "shamashai-block-185.220.x.x" type: "ipmask" subnet: ["185.220.x.x", "255.255.255.255"] comment: "auto-blocked by shamashai at <timestamp>, rule=brute_force"
4. Yeni address yaratıldı (201 Created)
PUT /api/v2/cmdb/firewall/addrgrp/Shamashai-Blocked member: [...existing, "shamashai-block-185.220.x.x"]
5. Group güncellendi (200 OK)
6. soar_actions tablosuna append-only kayıt: id: uuid · target: 185.220.x.x · expires_at: now + 60 min
Tüm zincir ortalama 800-1400 ms sürer. Fortigate API'nin kendisi 200-500 ms arasında cevap verir; üstüne TCP + TLS handshake + bizim retry buffer.
Request pacing — neden kritik?
Fortigate API rate-limited değildir; ama yoğun istek sırası firewall'ın "management plane" CPU'sunu yorabilir. Üretim trafiği zarar görür.
ShamashAi pacing kuralları:
PER_FIREWALL_QUEUE = 1 in-flight request (concurrency cap)
MIN_REQUEST_INTERVAL = 1.1 saniye (queue başına)
KEEP_ALIVE_AGENT = HTTPS keep-alive (TCP overhead az)
MAX_SOCKETS = 1 (FortiOS bunu sever)
Saniyede 1 IP bloklamak yetiyor mu? Test edelim:
- DDoS bypass tactic: 200 IP/dk
- ShamashAi capacity: 60 IP/dk (1/sn rate)
PUT ile gönder.
Burada hız 60 IP/dk yerine 3,000 IP/dk'ya çıkar.
batch_size: 50 IP / 1 PUT request
rate: 1 PUT / sec
effective: 3000 IP / minute (saldırı pattern'i bilinene kadar)
Retry policy
Fortigate occasionally 429 (rate limit) veya 503 (service unavailable) atar. ShamashAi backoff:
attempt 1: hemen
attempt 2: 2 sn sonra
attempt 3: 4 sn sonra
attempt 4: 8 sn sonra
attempt 5: 16 sn sonra
fail: audit log + remediation task üretilir
Total budget: 30 sn. Bu süre içinde başarısız olursa, IT yöneticisinin manuel müdahalesi gerekiyor → remediation queue'sine düşer.
Auto-expire loop
Bloklanan IP sonsuza kadar kalmaz. 60 dk default sonra cleanup loop:
// Her 60 saniyede çalışır
async function expireSoarActionsLoop() {
const expired = await db.query(
`SELECT * FROM soar_actions
WHERE applied_at IS NOT NULL
AND reverted_at IS NULL
AND expires_at < NOW()`
);
for (const action of expired) { await fortigateRemoveAddrFromGroup(action.target); await deleteFortigateAddressObject(action.target); await markReverted(action.id); await writeAudit({ action: 'soar.auto_expire', target: action.target, }); } }
Müşteri kalıcı blok istiyorsa? Shamashai-Blocked grubundan IP'yi Permanent-Blocked adlı kendi grubuna manuel taşır. ShamashAi o gruba dokunmaz.
Lockout önleme — operasyon kuralları
1. Whitelist mecburiyet: kendi public IP'leri, MPLS WAN endpoint'leri, bilinen partner IP'leri ShamashAi'da "soar_protected" listesinde olmalı 2. Private/loopback/CGNAT yasak: 10.x, 172.16.x, 192.168.x, 169.254.x — bunlar perimeter'da bloklanmaz; iç quarantine için ayrı endpoint var 3. Dual-channel yedek: SOAR connector down olursa otomatik kapanır; ShamashAi pasif mode'a düşer (alarm verir ama action almaz) 4. Manual override: Operatör SOAR action history'sinden anında unblock yapabilir
Limitler (dürüst)
- Bu yazı sadece Fortinet FortiGate entegrasyonu için. Palo Alto, Sophos,
- IPv6 desteği: address objesi support var, ama group'ta member sıralaması
- Cluster: HA pair'de primary'ye yazıyoruz, secondary sync ediyor — split-brain
- Cloud FortiGate (FortiCloud) — REST API farklı; ayrı connector v2.0'da
Üst seviye özet: SOAR sihir değil; iyi tasarlanmış bir API integration. Sınırlı blast radius, geri-dönülebilirlik, audit zinciri olmadan SOAR production'a çıkmamalı. ShamashAi pilot programı bu kuralları sıkı uygular — 30 günlük ücretsiz deneme süresince ilk hafta observation, sonra controlled SOAR aktivasyonu.
