KNT Global Medya — fleet recovery banner
Anasayfa/İşler/KNT Global Medya
Vaka Çalışması · Acil Müdahale + Altyapı

50+ haber sitesini
iki günde devraldık,
topladık, panelledik.

KNT Global Medya, 52 WordPress sitesinden oluşan bir haber/içerik ağıdır. Devraldığımızda üç sitede aktif backdoor, sıfır yedek, eski geliştirici elinde 60+ canlı erişim ve dokümante edilmemiş bir merkezi içerik dağıtım sistemi vardı. 48 saatte temizledik, yedekledik, custom yönetim paneli yazdık.

MüşteriKNT Global Medya
SektörDijital Yayıncılık
Ölçek52 WordPress sitesi
Süre48 saat acil müdahale + sürekli izleme
Yönetilen Site
52
Haber, ekonomi, spor ve kadın kategorisinde tek altyapıda barınan WordPress kurulumu.
Tam Yedek
32 GB
52 site veritabanı + dosya + sistem konfigürasyonu — devraldığımızın 24. saatinde tamamlandı.
Güvenlik Modülü
6
Core checksum, dosya bütünlüğü, webshell pattern, plugin blacklist, drop-in ve options taraması.
Bridge Deploy
49/49
Her sitenin içine yerleştirilen custom WordPress plugin'inin paralel başarılı kurulum oranı.
i.
Brief

Devraldığımızda durum buydu.

KNT Global Medya 52 WordPress sitesinden oluşan büyük bir içerik ağı. Tek bir Ubuntu sunucu üzerinde, merkezi bir CMS hub ve onu besleyen "Content Subscriber" eklentisi mantığıyla otomatik içerik dağıtımı yapan, ciddi bir yayıncılık altyapısı. Ama yıllardır tek bir geliştirici elinde dönmüş ve hiçbir şey dokümante edilmemiş.

Bizden istenen ilk şey basitti: "Eski geliştiriciyi sistemden çıkarın." Bunu yapmak için önce ne olduğunu anlamamız gerekiyordu. Aşağıdakileri devraldığımız sırada keşfettik:

  • Sıfır yedek — son tam yedeğin tarihi ya bilinmiyor ya hiç olmamış
  • Eski geliştiricinin sudo ALL yetkili Linux kullanıcısı hâlâ aktif
  • Sunucunun aaPanel hesabı eski geliştiricinin kişisel e-postasına bağlı
  • Üç ayrı sitede gerçek zamanlı çalışan backdoor (auth bypass + SEO spam injection)
  • Dört saat içinde art arda oluşturulmuş üç şüpheli admin kullanıcısı
  • Wordfence/2FA yok, fail2ban yok, IP whitelisting yok
  • 50+ sitede WP admin parolaları geliştirici elinde
"Sistemi devralacaksanız, içeride zaten birinin oturduğunu varsayın." Bu vakanın doğum cümlesi buydu.

İki günde tamamlanması gereken bir iş listesi çıkardık: (1) mevcut zararlıyı tespit ve temizle, (2) tüm erişimleri sıfırla, (3) her şeyin yedeğini al, (4) tekrar olmaması için izleme katmanı kur.

İki günde ne yaptık.

Saat saat olan bitenin özeti. Acil müdahale modunda, müşterinin yayın akışını bir saniye bile kesmeden.

Saat 0 — Tespit
Üç sitede aktif backdoor bulundu
Saldırgan, üç ayrı sitenin wp-includes/functions.php dosyasına iki ayrı add_action enjekte etmişti: birincisi belirli bir GET parametresiyle otomatik admin login, ikincisi anasayfaya uzak sunucudan SEO spam basıyordu. Saldırı vektörü Endonezya menşeli bir botnet IP bloğundan geliyordu.
Saat +2 — Forensik
Saldırgan profili çıkarıldı
Nginx access log'larından geriye doğru tarama: 39+ siteye /add.php POST denemesi (recon), sadece 3'ünde başarı. Bu üçünde tek seferde 302 redirect — yani brute force değil, doğru parolayı biliyordu. Eski admin parolası daha önce sızmıştı.
Saat +4 — Erişim sıfırlama
60+ canlı erişim rotasyonu
aaPanel root parolası, MariaDB root parolası, 52 sitenin WP admin parolası, Cloudflare hesap parolası, e-posta parolaları — hepsi tek seferde değiştirildi. Eski geliştiricinin Linux sudo kullanıcısı silindi, SSH authorized_keys içindeki public key kaldırıldı.
Saat +6 — Yedekleme
32 GB tam yedek alındı
52 site için DB dump (1.1 GB), wp-content dosya yedekleri (~31 GB), Nginx vhost konfigleri (113 adet), SSL sertifikaları, SSH ayarları, aaPanel DB, PHP konfig, Redis konfig ve UFW kuralları. Hepsi sunucu üzerinde + yerel kopya.
Saat +8 — Backdoor temizliği
Enjekte edilen kod kaldırıldı, security key'ler döndürüldü
Backdoorlu functions.php dosyaları sağlıklı sürümleriyle değiştirildi (MD5 ile doğrulandı). Üç compromised sitenin wp-config.php'sindeki tüm 8 security key rotate edildi → mevcut tüm WP session'ları geçersiz kılındı. Saldırgan IP'si /24 alt ağı ile UFW'de bloklandı.
Saat +12 — Cloudflare hardening
50 zone toplu güncelleme
Cloudflare API üzerinden: TLS minimum 1.2, security level "high", Always HTTPS açık, SSL strict mode, HTTP/2 + HTTP/3 + Brotli açık. Hotlink protection özellikle kapalı bırakıldı — siteler görsellerini merkezi CMS'den çekiyor, açılırsa kırılır.
Saat +18 — SSH hardening
Erişim altyapısı yeniden yazıldı
SSH non-standard porta taşındı, key-only auth, PermitRootLogin prohibit-password, IP whitelist (sadece müşteri IP'si + Tailscale CGNAT). MariaDB için sadece tek bir IP'den ve sadece tek porta yönlenebilen Match bloğu eklendi.
Saat +30 — Custom Bridge plugin
Her siteye yönetim ajanı yerleştirildi
Yazdığımız özel WordPress plugin (knt-bridge) 49 sitede paralel olarak deploy edildi. Bu plugin REST API üzerinden site sağlığı, güvenlik durumu ve içerik metriklerini panel'e besliyor. Kurulum başarı oranı 49/49.
Saat +42 — 6 modüllü güvenlik tarama
Otomatik fleet-wide audit aktif
Bridge plugin'in v0.2.0'ı ile birlikte panele entegre 6 modüllü kapsamlı tarama: WordPress core checksum, dosya bütünlüğü, webshell pattern, plugin blacklist, drop-in tespiti, options anomalisi. Sonuçlar 15 dakika cache'le tüm fleet için tek ekranda.
Saat +48 — Devir tamam
Tek tuşla erişilen, tek ekrandan izlenen fleet
52 sitenin tamamı yedekli, taranmış, izlenir durumda. Müşteri tek bir Next.js paneli üzerinden bütün ağı görebiliyor; biz retainer moduna geçtik.
ii.
Mimari

Üç ayaklı bir çözüm kurguladık.

Tek seferlik bir temizlik değildi bu — bir daha aynı durumla karşılaşmamak için sistemi bir bütün olarak yeniden tasarladık. Üç ayrı katmandan oluşan bir mimari kurduk.

A

Acil müdahale & sertleştirme

Eski geliştiricinin tüm erişimleri kesildi. Backdoor'lar tespit edilip temizlendi. SSH, UFW, Cloudflare WAF ve security key'ler en sıkı modda yeniden yapılandırıldı. Saldırgan IP /24 alt ağı kalıcı olarak bloklandı.

SSH key-onlyUFWCF WAFKey rotation
B

Yedek & altyapı disiplini

52 site için tam DB + dosya + sistem konfigürasyon yedekleri. 113 Nginx vhost dosyası, SSL sertifikaları, aaPanel DB, PHP/Redis konfigleri arşivlendi. Yerel + sunucu kopyalı, periyodik tetiklenen yedekleme rutini kuruldu.

32 GBDB + Files + ConfigYerel kopya
C

Custom yönetim paneli

Sunucuya SSH ile değil, panele bir tarayıcıdan giren bir operatör 52 sitenin sağlığını, güvenlik durumunu ve aktivitesini tek ekranda görebiliyor. Her site içine yerleştirilen Bridge plugin REST üzerinden veri besliyor.

Next.js 15WP Bridge pluginSSH tunnelRead-only DB
D

Sürekli izleme & tarama

Panel içinde paralel çalışan 6 modüllü güvenlik tarama. Her sitenin core dosyaları WordPress.org checksum API'si ile karşılaştırılır, webshell pattern'leri taranır, beklenmedik plugin/drop-in ve options değişiklikleri raporlanır.

WP Core checksumWebshell tespitPlugin blacklistOptions audit

Panele entegre 6 tarama modülü.

Bir saldırının hangi vektörden geleceğini önceden bilmediğimiz için, bilinen tüm WordPress saldırı kalıplarını paralel olarak tarayan modüler bir audit sistemi yazdık.

— 01 Core

WordPress core checksum doğrulama

Her sitenin wp-includes ve wp-admin dosyaları, WordPress.org'un resmi checksum API'si ile karşılaştırılır. Tek bir byte fark dahi critical olarak raporlanır.

— 02 Files

Yetkisiz dosya tespiti

Site root'unda whitelist dışı PHP, uploads klasöründe çalıştırılabilir dosya, son 30 günde değişmiş core dosyaları — saldırı sonrası klasik artefaktlar tek bir taramada raporlanır.

— 03 Patterns

Webshell pattern matcher

Bilinen webshell imzaları: eval(base64_decode()), gzinflate, preg_replace /e, sha1+md5 auth bypass, FilesMan/c99/r57 imzaları, ve bizim devraldığımız vakadaki spesifik backdoor pattern'i.

— 04 Plugins

Plugin blacklist + zaman aşımı

Bilinen kötü amaçlı plugin adlarına (saldırganların favorisi olan dosya yöneticisi türevleri, CVE'li eklentiler) ve son 30 günde yüklenmiş ama haberimiz olmayan plugin'lere karşı kontrol.

— 05 Drop-ins

WordPress drop-in tespiti

Beklenmedik mu-plugins, object-cache.php, db.php, sunrise.php drop-in dosyaları — meşru kullanım dışı bu dosyalar genelde kalıcı erişim için kullanılır.

— 06 Options

wp_options anomalisi

Autoload edilen 100KB+ devasa option'lar, siteurl/home host uyumsuzluğu, açık kullanıcı kaydı + yüksek varsayılan rol, şüpheli option_name kalıpları (serialize edilmiş action_ isimleri).

Ağdaki 49 site,
tek altyapıda yaşıyor.

KNT Global Medya yayın ağı, dört ayrı vertikalde toplam 49 WordPress sitesinden oluşuyor: haber, ekonomi, spor ve kadın yaşam. Her sitenin kendi okuyucu kitlesi, kendi editöryal kimliği var; ama hepsi tek bir sunucu üzerinde, tek bir yedekleme havuzunda, tek bir tarayıcı paneli üzerinden izleniyor. Aşağıda ağın tam dökümü — site adları ve domainler eksiksiz, kategoriye göre gruplanmış olarak.

Haber20 Ekonomi10 Spor10 Kadın Yaşam9 Toplam49 site

Haber vertikali — 20 site · son dakika, gündem, köşe

Haber Kaygi
haberkaygi.com.tr
— İçe aktarım
Haber Bugun
haberbugun.com.tr
— İçe aktarım
Haber Dijital
haberdijital.com.tr
— İçe aktarım
Haber KNT
haberknt.com.tr
— İçe aktarım
Haber Nopolitik
habernopolitik.com.tr
— İçe aktarım
Haber Sonhavadis
habersonhavadis.com.tr
— İçe aktarım
Haber Tiraj
habertiraj.com.tr
— İçe aktarım
Haber Yedigun
haberyedigun.com.tr
— İçe aktarım
Haber Yaziyor
haberyaziyor.com.tr
— İçe aktarım
Haber Yeniyuzyil
haberyeniyuzyil.com.tr
— İçe aktarım
Haber Rahman
haberrahman.com.tr
— Geçiş yapılıyor
Haber Alim
haberalim.com.tr
— Geçiş yapılıyor
Haber Azim
haberazim.com.tr
— Geçiş yapılıyor
Haber Evvel
haberevvel.com.tr
— Geçiş yapılıyor
Haber Hafiz
haberhafiz.com.tr
— Geçiş yapılıyor
Haber Hakim
haberhakim.com.tr
— Geçiş yapılıyor
Haber Kayyum
haberkayyum.com.tr
— Geçiş yapılıyor
Haber Latif
haberlatif.com.tr
— Geçiş yapılıyor
Haber Vali
habervali.com.tr
— Geçiş yapılıyor
Haber Varis
habervaris.com.tr
— Geçiş yapılıyor

Ekonomi vertikali — 10 site · piyasa, KOBİ, makro

Ekonomi Politikası
ekonomipolitikasi.com.tr
— Devir tamam
Ekonomi Bugun
ekonomibugun.com.tr
— Askıda
Ekonomi Para
ekonomipara.com.tr
— Devir tamam
Ekonomi Masasi
ekonomimasasi.com.tr
— Devir tamam
Ekonomi Küresel
ekonomikuresel.com.tr
— Askıda
Ekonomi Kobi
ekonomikobi.com.tr
— Devir tamam
Ekonomi KNT
ekonomiknt.com.tr
— Devir tamam
Ekonomi Global
ekonomiglobal.com.tr
— Devir tamam
Ekonomi Sondakika
ekonomisondakika.com.tr
— Devir tamam
Ekonomi Star
ekonomistar.com.tr
— Devir tamam

Spor vertikali — 10 site · futbol, transfer, fikstür

Spor Maksimum
spormaksimum.com.tr
— Altyapı kuruldu
Spor Fanatik
sporfanatik.com.tr
— Altyapı kuruldu
Spor Global
sporglobal.com.tr
— Altyapı kuruldu
Spor KNT
sporknt.com.tr
— Altyapı kuruldu
Spor Magazin
spormagazin.com.tr
— Altyapı kuruldu
Spor Manşet
spormanset.com.tr
— Altyapı kuruldu
Spor Medyası
spormedyasi.com.tr
— Altyapı kuruldu
Spor Meydanı
spormeydani.com.tr
— Altyapı kuruldu
Spor Milenyum
spormilenyum.com.tr
— Altyapı kuruldu
Spor Vizyon
sporvizyon.com.tr
— Altyapı kuruldu

Kadın yaşam vertikali — 9 site · moda, lifestyle, kültür

Kadın Burada
kadinburada.com.tr
— Devir tamam
Kadın Marka
kadinmarka.com.tr
— Devir tamam
Kadın Secret
kadinsecret.com.tr
— İçerik akış sorunu
Kadın Vizyon
kadinvizyon.com.tr
— İçerik akış sorunu
Kadın Bilir
kadinbilir.com.tr
— İçerik akış sorunu
Kadın Elit
kadinelit.com.tr
— Altyapı kuruldu
Kadın Prime
kadinprime.com.tr
— Altyapı kuruldu
Kadın Tarzı
kadintarzi.com.tr
— Altyapı kuruldu
Kadın Time
kadintime.com.tr
— İçerik akış sorunu

Listede yer alan her site, KNT Global Medya'nın knt-bridge v0.2 WordPress eklentisini barındırıyor. Eklenti, panel'imize REST üzerinden site sağlık verisi (HTTP yanıt kodu, gecikme, çekirdek dosya bütünlüğü, plugin sürümleri, son güvenlik tarama sonucu) besliyor. Yukarıdaki Devir tamam, Altyapı kuruldu, İçe aktarım, Geçiş yapılıyor, Askıda ve İçerik akış sorunu etiketleri gerçek operasyonel durumu yansıtıyor — pazarlama metni değil, paneldeki haldir.

iv.
Bağlam

Bir fleet'i tek altyapıda tutmak ne demek?

Türkiye dijital yayıncılık tarafında "haber sitesi sahibi olmak" çoğu zaman üç farklı senaryoyu barındırır: tek başına çalışan tek bir kurumsal yayın, küçük bir aile (3-5 site) ya da KNT Global Medya gibi gerçek bir yayın ağı. KNT, dördüncü vertikalle birlikte 49 ayrı domain üzerinde, dört ayrı editöryal hat üzerinden günlük yayın yapıyor. Her vertikal kendi okuyucu profilini taşıyor: haber sitelerinde Türkiye genelinde son dakika takipçisi, ekonomi sitelerinde piyasa ve KOBİ profesyoneli, spor sitelerinde Süper Lig ve transfer takipçisi, kadın yaşam sitelerinde moda ve lifestyle okuru.

Editöryal tarafta bu çeşitlilik bir avantaj — ama operasyonel tarafta bir 49 misli yüktür. Tek bir CVE çıktığında 49 sitenin sürümünü kontrol etmek gerekir; tek bir Cloudflare politikası değişimi 50 zone üzerinde uygulanmalıdır; tek bir backdoor üç sitede aktifse 46 temiz sitenin de aynı anda kontrol edilmesi gerekir. Devraldığımızda KNT'nin elinde bunu yapacak ne süreç ne araç vardı — sadece tek bir geliştiricinin SSH oturumu vardı.

Bu vakanın asıl değeri 48 saatte yapılan acil müdahale değil; sonrasında kurulan disipline dayanıyor. Müşteriye "tek bir ekran açın, 49 sitenin tamamını görün" diyebildiğimiz andan itibaren altyapı, geliştirici bağımlılığından çıkıp operasyona geçti. Yeni bir sitenin ağa eklenmesi (Bridge plugin'in deploy edilmesi, Cloudflare zone'unun kurulması, panele kayıt) bugün yarım günde tamamlanan otomatik bir akış. Bir CVE yayınlandığında etkilenen siteler 15 dakika içinde panele düşüyor. Bu, "bir geliştiricinin elinde" değil, "bir çatı altında" yönetiliyor olmak demek.

v.
Teknik kapsam

Teknik kapsam — kısa özet.

Vakanın teknik tarafı dört katmanda özetlenebilir:

WordPress fleet

49 ayrı WordPress 6.9 kurulumu, Nginx + PHP 8.1 + MariaDB 10.11 + Redis üzerinde çalışıyor. Tüm siteler tek bir Ubuntu sunucu üzerinde, ancak her biri kendi vhost'unda izole. 113 Nginx vhost dosyası (her domain için www ve non-www varyantı + SSL endpointleri).

Custom WordPress plugin (knt-bridge)

BubiSoft tarafından yazılan, MIT lisanslı dahili eklenti. REST API üzerinden panel ile haberleşiyor, 6 modüllü güvenlik tarayıcısını barındırıyor (core checksum, dosya bütünlüğü, webshell pattern, plugin blacklist, drop-in tespiti, options anomalisi). 49/49 sitede paralel deploy edildi. Versiyon güncellemeleri tek seferde tüm filoya iletiliyor.

Güvenlik sertleştirme

Tüm 60+ canlı erişim sıfırlandı. SSH non-standard porta taşındı, key-only auth + IP whitelist (müşteri + Tailscale CGNAT). UFW reverse proxy kuralları, MariaDB sadece tek bir source IP'den erişilebiliyor. Cloudflare 50 zone üzerinde TLS 1.2+ minimum, security level "high", Always HTTPS, HTTP/3, Brotli aktif. Saldırgan IP /24 alt ağı kalıcı bloklu.

Merkezi deploy ve yedekleme

32 GB tam yedek (DB dump 1.1 GB + wp-content ~31 GB + sistem konfigleri) yerel + sunucu kopyalı, periyodik tetiklenen rutinle yenileniyor. Bridge plugin dağıtımı tek bir orchestrator komutuyla 49 site'a paralel basılıyor; başarısız deploy panel üzerinden manuel müdahale edilebiliyor. Yeni site ekleme süreci yarım günlük standart bir runbook'a indirildi.

Stack.

Hem panel tarafında hem de sunucu tarafında kullandığımız araçlar. Her birinin seçimi spesifik bir gereksinime karşılık veriyor.

Next.js 15App Router · RSC · Suspense streaming
TypeScriptStrict mode
WordPress PluginCustom Bridge v0.2 (knt-bridge)
MariaDB 10.11Read-only panel kullanıcı + SSH tunnel
Nginx + PHP 8.1aaPanel managed, 113 vhost
RedisObject cache + session
Cloudflare50 zone, WAF, TLS 1.2+, Brotli
UFW + TailscaleNetwork izolasyonu, IP whitelist
iii.
Devamı

İş burada bitmiyor.

Acil müdahale 48 saatte tamamlandı, ama gerçek değer sonrasında ortaya çıkıyor. Devralma sonrası KNT Global Medya altyapısını retainer modelinde yönetmeye devam ediyoruz. Aylık bakım ve büyüme sözleşmesi kapsamında:

  • Haftalık tam fleet güvenlik taraması
  • Tüm 52 sitenin WordPress core ve plugin sürüm takibi
  • Cloudflare WAF kural setleri ve trafik anomali izleme
  • Yeni site eklendikçe Bridge plugin otomatik provizyonu
  • İçerik dağıtım sisteminin (CCM) izlenmesi ve performans takibi
  • Kritik bug ve güvenlik müdahalesi 24 saat içinde

Sözümüz baştan netti: "Sistemi sadece teslim etmiyoruz, gerçekten arkasındayız." Bunu söylemek kolay; her gün 52 sitenin nabzını tutmak zor.

— Müşteri
KNT Global Medya
Türkiye merkezli dijital yayıncılık ağı, 52 site, 4 vertikal (haber, ekonomi, spor, kadın).
● ekonomipolitikasi.com.tr ● sporglobal.com.tr ● 50 site daha
"Yıllarca tek bir geliştiricinin elinde döndü her şey. İki günde nasıl bu kadar şeyi düzenleyebildiklerini hâlâ anlamıyoruz — ama panel açıldığında her sitenin yeşil yandığını görmek bambaşka bir his.

Sizin de devralınması gereken
bir WordPress fleet'iniz mi var?

Mevcut altyapınız için 1 haftalık dürüst teknik audit yapıyoruz: güvenlik, yedek durumu, kod sağlığı, mimari borç ve devralma riski raporu. İlk görüşme ücretsiz.