# KVKK 72-Saat İhlal Bildirim Runbook

> **Hayati Bilgi:** KVKK madde 12/5'e göre veri ihlali tespit edildikten sonra
> **72 saat içinde** Kişisel Verileri Koruma Kurulu'na ve etkilenen kişilere
> bildirim yapılması zorunludur.
>
> Bildirim yapılmaması veya gecikmesi: **₺85.000 — ₺17.000.000 TL** idari para cezası.

---

## 0. Acil Durum İletişim Listesi

İhlal şüphesi anında **hemen** ara/yaz:

| Rol | İsim | Telefon | E-posta | Görev |
|---|---|---|---|---|
| Veri Sorumlusu (sahip) | [İSİM] | [+90 5XX XXX XX XX] | kvkk@onox.com.tr | Karar verici |
| KVKK Hukuk Müşaviri | [İSİM] | [TEL] | [EMAIL] | Bildirim yazımı + Kurul başvuru |
| DPO (varsa) | [İSİM] | [TEL] | dpo@onox.com.tr | Süreç koordinasyon |
| E&O Sigorta Acentesi | [ŞİRKET] | [TEL] | [EMAIL] | Hasar bildirimi (24 saat) |
| Bağımsız Forensic | [PRODAFT/BTRİSK] | [TEL] | [EMAIL] | Delil toplama |

**24/7 nöbet:** Telegram grubu: `t.me/onoxsoft-incident` — sahibinin telefonuna direkt iletim.

---

## 1. Saat T+0: İhlal Tespiti

### Tetikleyici Olaylar
- ❗ fail2ban uyarısı: anormal IP'den 100+ failed login / 15 dk
- ❗ ModSecurity audit log'da SQL injection/XSS başarılı pattern
- ❗ Müşteri raporu: "Hesabıma giremedim, içerik silinmiş"
- ❗ Storage'da bilinmeyen dosya (`.encrypted`, `README_DECRYPT.txt`)
- ❗ DB'de bilinmeyen tablo veya `DROP TABLE` audit_log kaydı
- ❗ Anormal trafik patlaması (özellikle outbound)
- ❗ Üçüncü taraf ihbar (security@onox.com.tr → bug bounty)

### İLK 5 DAKİKA — Containment
```bash
# 1. Etkilenen sunucuyu network'tan İZOLE ET (panel down süresine değer)
sudo systemctl stop httpd
sudo systemctl stop pdns
sudo iptables -A INPUT -j DROP
sudo iptables -A OUTPUT -j DROP -m state --state ! ESTABLISHED

# 2. Tam disk snapshot al (forensic için — silmeden önce!)
hcloud server create-snapshot panel-master \
  --description "incident-$(date +%Y%m%d-%H%M)-pre-investigation"

# 3. Tüm aktif oturumları KILL
mysql -e "DELETE FROM sessions; FLUSH PRIVILEGES;"
redis-cli FLUSHDB

# 4. Audit log'u kopyala (silinmiş olabilir!)
mysqldump onoxsoft_panel audit_log > /tmp/audit_$(date +%Y%m%d_%H%M).sql
# /tmp NOT: ihlal devam ediyorsa /tmp güvenli değil — uzak SSH ile dış sunucuya kopyala
scp /tmp/audit_*.sql forensic-backup-server:/incidents/
```

### Hızlı Doğrulama (False Positive Filtreleme)

| Belirti | False positive? | Aksiyon |
|---|---|---|
| Tek IP'den brute force | Genelde evet | fail2ban zaten engelliyor; logla |
| `wget`/`curl` outbound | Genelde hayır | C2 sunucu olabilir — incele |
| `nc -lvp 4444` çalışıyor | %99 ihlal | Hemen kapat, snapshot |
| Yeni cron job | İncele | Yetkili kullanıcı mı? |
| Sysapi onx-* dışı sudo logu | %95 ihlal | İzole et |

**Eğer doğrulandıysa:** Saat T+0 → KVKK bildirim sayacı başladı. 72 saat geri sayım.

---

## 2. Saat T+0 → T+4: Triage & Forensic

### Forensic Snapshot
```bash
# Disk imajı (read-only, hash'li)
sudo dd if=/dev/sda1 of=/forensic/disk-$(date +%Y%m%d).img bs=4M
sha256sum /forensic/disk-*.img > /forensic/disk-*.sha256

# Memory dump (LiME modülü)
sudo insmod /usr/local/lime/lime.ko "path=/forensic/mem.lime format=raw"

# Network capture (varsa devam eden ihlal)
sudo tcpdump -i any -w /forensic/capture.pcap not port 22
```

### Etki Alanı Tespiti — Hangi Veri Etkilendi?

`onox:audit-incident` komutu (Phase 1.5'a eklenecek) ile çapraz kontrol:

```bash
# Hangi user_id'ler etkilendi?
mysql -e "SELECT DISTINCT user_id FROM audit_log
          WHERE created_at > '<incident_start>'
          AND outcome = 'failure'
          AND ip_address IN ('<attacker_ips>')"

# Sızdırılan tablolar (eğer SELECT log'lanıyorsa)
mysql -e "SELECT target_type, target_id, before, after FROM audit_log
          WHERE created_at > '<incident_start>'
          AND action LIKE 'read.%'"

# Dosya erişimleri (Apache access log)
grep -E "POST|PUT|DELETE" /var/log/httpd/access.log* \
  | awk '$9 ~ /^(200|201|204)/' | head -100
```

### Etkilenen Kişi Sayısı

```bash
SELECT COUNT(DISTINCT u.id) AS affected_users,
       COUNT(DISTINCT a.id) AS affected_accounts,
       COUNT(DISTINCT d.id) AS affected_domains
FROM users u
LEFT JOIN accounts a ON a.owner_user_id = u.id
LEFT JOIN domains d ON d.account_id = a.id
WHERE u.id IN (<incident_user_ids>);
```

> **Önemli:** Etkilenen kişi sayısı **çok yüksek**ise (>1000), Kurul tek tek bildirim yerine
> "açıklama yayını" izni verebilir — hukuk müşaviri ile karara bağla.

---

## 3. Saat T+4 → T+24: Hukuki Hazırlık

### Hukuk Müşaviri ile Bildirim Yazısı

KVKK ihlal bildirim formu (Kurulun sitesinden) doldurulur. Mecburi alanlar:

1. **Veri sorumlusu bilgileri**
2. **İhlalin türü:**
   - ☐ Veri sızıntısı (data leak)
   - ☐ Veri imhası (ransomware/sabotaj)
   - ☐ Yetkisiz erişim
   - ☐ Veri değiştirme
3. **Etkilenen veri kategorileri:**
   - ☐ Kimlik (ad, T.C., adres)
   - ☐ İletişim (email, telefon)
   - ☐ Kimlik doğrulama (şifre, 2FA)
   - ☐ Finansal (kart, IBAN)
   - ☐ Sağlık/biyometrik (hassas veri — özel kategori)
4. **Etkilenen kişi sayısı**
5. **İhlalin tarihi (tespit + olay)**
6. **Olası sonuçlar** (kimlik hırsızlığı, finansal zarar, vb.)
7. **Alınan tedbirler** (containment, izolasyon, vb.)
8. **İletişim noktası**

**Hukuk müşaviri taslağı 4 saat içinde hazır olmalı, sahibinin onayıyla T+24'te Kurul'a yollanır.**

### E&O Sigorta Bildirimi
24 saat içinde sigorta acentesine yaz (poliçe gereği). Sigorta:
- Hukuki müşavirlik masrafları (varsa retainer dışı)
- Adli forensic masrafları
- Etkilenen kişilere bildirim postaları
- PR/iletişim danışmanlığı (büyük olaylar)

---

## 4. Saat T+24 → T+48: Kişilere Bildirim Hazırlığı

### Etkilenen Müşterilere E-posta Şablonu

```
Konu: [ACİL — Hesap Güvenliği] ONOXSOFT Veri Güvenliği Bildirimi

Sayın {{ad}} {{soyad}},

[TARIH] tarihinde ONOXSOFT panel sunucularımızda bir güvenlik olayı tespit ettik.
6698 sayılı KVKK madde 12/5 gereğince size bilgi vermek zorunluluğumuzdur.

NE OLDU?
[Yalın, dürüst, somut anlatım. Tahmin değil, doğrulanmış bilgi.]

HANGİ VERİLERİNİZ ETKİLENDİ?
- {{ETKİLENEN_LİSTE — örn: email, hash'lenmiş şifre}}
- {{ETKİLENMEYEN_LİSTE — örn: kart bilgisi, fatura adresi}}

NE YAPMANIZ GEREKİYOR?
1. Hemen şifrenizi değiştirin: https://panel.onox.com.tr/sifre-degistir
2. 2FA'yı (iki adımlı doğrulama) aktif edin
3. Aynı şifreyi başka servislerde kullanıyorsanız onları da değiştirin
4. Sahte e-postalara karşı dikkatli olun (saldırgan email'inizi de almış olabilir)

BİZ NE YAPIYORUZ?
[Containment, forensic, yeni güvenlik kontrolleri — somut liste]

İLETİŞİM:
- E-posta: kvkk@onox.com.tr
- Telefon: [+90 XXX XXX XX XX]
- Yardım merkezi: https://onox.com.tr/destek/ihlal-FAQ

KVKK Kurulu Şikayet Hakkınız:
30 gün içinde Kurul'a şikayet edebilirsiniz: https://www.kvkk.gov.tr

Güveninize layık olmaya devam edeceğimize söz veriyoruz.

[İSİM] — ONOXSOFT Veri Sorumlusu
```

### Bildirim Kanalları
- E-posta (tüm etkilenen müşteriler — bounce'lanırsa SMS yedek)
- Panel girişinde modal (ilk login'de zorunlu okuma)
- Web sitesi anasayfa banner (kamuya açık)
- Sosyal medya açıklaması (büyük olaylar — basın bildirimi)

---

## 5. Saat T+48 → T+72: Resmi Bildirimler

### KVKK Kurulu Bildirimi (Mecburi)
- Kurul'un online formu: https://veriihlalibildirimi.kvkk.gov.tr
- Hukuk müşaviri yazılı taslağı sahibinin imzasıyla yüklenir
- Kurul başvuru numarası alınır — dosyaya eklenir

### Etkilenen Kişilere Bildirim (Mecburi)
- E-posta gönderim raporu (bounce, delivery, open rate)
- Bildirilemeyen kişiler için kamu açıklaması

### Kolluk Kuvvetleri (Suç Şüphesi Varsa)
- Siber Suçlarla Mücadele Şube (Polis): 0312 462 30 00
- Veya CMK kapsamında savcılığa şikayet
- Forensic raporu deliller ile birlikte

### İçeriden Bildirim
- Tüm çalışanlara durumun bilgisi (NDA kapsamında)
- Müşteri destek ekibi yanıt komut dosyası (script) verilir

---

## 6. Post-Mortem (T+72 Sonrası)

### 7 Gün İçinde
- Detaylı root cause analysis (RCA) yayınla (kamuya açık)
- Kullanılan saldırı vektörünün CVE'si varsa CVE numarası ve patch
- Etkilenen müşterilere bireysel destek (1 ay)

### 30 Gün İçinde
- Bağımsız penetrasyon testi siparişi (PRODAFT/BTRİSK)
- Yeni güvenlik kontrollerinin canlıya alınması
- Müşterilere "iyileştirme raporu"

### 90 Gün İçinde
- Bug bounty programı genişletme
- Personel KVKK + güvenlik eğitimi
- E&O sigorta poliçe yenileme + teminat artırımı

---

## 7. Test Tatbikatı (6 Ayda Bir)

Bu runbook **gerçek bir ihlal olmadan önce** test edilmeli. Önerilen senaryolar:

### Senaryo A: Brute Force + 2FA Bypass
- Test: Saldırgan IP'den 1000 failed login + başarılı 2FA bypass
- Beklenen: T+5dk fail2ban, T+15dk audit anomaly alert
- Süre hedefi: Containment T+30dk

### Senaryo B: SQL Injection + Veri Sızıntısı
- Test: ModSecurity bypass simülasyonu (controlled)
- Beklenen: WAF log analizi, etkilenen tablo tespiti
- Süre hedefi: Etki alanı T+2 saat

### Senaryo C: Insider Threat
- Test: Admin hesabıyla `users` tablosu SELECT/export
- Beklenen: Audit log alert, hızlı access revoke
- Süre hedefi: Detection T+10dk

---

## 8. Önleyici Tedbirler (Continuous)

Master plan referansları:

- ✅ Audit log her destructive action için (90 gün retention)
- ✅ fail2ban: sshd, panel-login, pure-ftpd
- ✅ ModSecurity OWASP CRS aktif
- ✅ 2FA admin için ZORUNLU, customer için opsiyonel
- ✅ Database erişimi sadece app IP'sinden
- ✅ Disk LUKS şifrelemesi
- ✅ Günlük disaster recovery test cron'u
- ✅ Yılda bir bağımsız pentest
- ✅ Bug bounty programı ($250 başlangıç)
- ✅ E&O sigortası (₺1-5M teminat)

---

**Runbook Versiyon:** v1.0 — 2026-05-13
**Tatbikat Tarihi:** [SONRAKİ TATBİKAT TARİHİ — sahibinin takvimi]
**Bağlantı:** [aydinlatma-metni.md](./aydinlatma-metni.md) · [kisisel-veri-envanteri.md](./kisisel-veri-envanteri.md)

> **Bu runbook, kapsamlı bir veri ihlali senaryosu için detaylı bir rehber olsa da
> avukat onayı olmadan yasal evrak yerine geçmez.** Gerçek bir olayda hukuk
> müşaviri ile temas, ilk 4 saat içinde olmazsa olmazdır.
