WordPress sitelerinin büyük kısmı güncellenmeyen eklentiler, zayıf şifreler ve sahipsiz bırakılmış sunucular yüzünden hacklenir. WordPress çekirdeği aktif bir ekip tarafından geliştirilir ve güvenlik açıklarını hızlı kapatır. Sorun genellikle çekirdeğin etrafına eklenen her şeyde ve o her şeye kimsenin bakmamasında başlar.
2004'ten bu yana 1000'den fazla web sitesi yaptık. Bunların bir kısmı WordPress'ti, bir kısmı başka sistemler. Hacklenen sitelerin hikâyesi neredeyse hep aynı: site yapılmış, teslim edilmiş ve sonra unutulmuş. Aşağıdaki dokuz neden, bu unutulmanın farklı yüzleri.
Hangi siteler daha çok risk altında?
Risk, sitenin büyüklüğünden çok bakım düzenine bağlıdır. Yıllardır kimsenin giriş yapmadığı kurumsal tanıtım siteleri, kampanya için açılıp unutulan alt alan adları ve farklı ajanslar arasında el değiştirmiş siteler en savunmasız olanlardır. Bu sitelerde genellikle kimin sorumlu olduğu bile belli değildir. İlk adım, sahip olduğunuz tüm WordPress kurulumlarının bir listesini çıkarmaktır.
1. Güncellenmeyen eklentiler
WordPress'in gücü eklenti ekosisteminden gelir. En büyük risk de oradan gelir. Her eklenti, sitenize başka birinin yazdığı kodu ekler. Bir eklentide açık bulunduğunda geliştirici yama yayınlar, ama yamayı siz yüklemezseniz açık sitenizde kalır. Saldırganlar bilinen açıkları otomatik araçlarla tarar. Sitenizin küçük olması sizi korumaz. Tarayıcı botlar her siteyi aynı şekilde tarar ve buldukları açığı kullanır.
Çözüm: Eklentileri düzenli güncelleyin. Önce bir test ortamında deneyin, sonra canlıya alın. Kritik güvenlik yamalarını bekletmeyin.
2. Güncellenmeyen tema ve WordPress çekirdeği
Temalar da kod içerir ve aynı riski taşır. Özellikle özel olarak satın alınmış, içine sayfa oluşturucu ve slider gömülmüş temalar sık açık verir. Üstelik tema güncellemesi bazen tasarımı bozar, bu yüzden ekipler güncellemeyi erteler. Erteleme birikir, birkaç yıl sonra site güncellenemez hâle gelir.
Çözüm: Tasarım değişikliklerini bir alt temada (child theme) yapın, ana temanın dosyalarına dokunmayın. Böylece ana temayı güvenle güncelleyebilirsiniz. Çekirdek için otomatik küçük sürüm güncellemelerini açık tutun.
3. Gereğinden fazla ve terk edilmiş eklenti
Bir iletişim formu, bir SEO eklentisi, bir önbellek eklentisi derken site kırk eklentiye ulaşır. Bazıları artık kullanılmıyor, bazılarının geliştiricisi projeyi bırakmış. Terk edilmiş bir eklentide açık bulunursa yama hiç gelmez.
Çözüm: Yılda en az bir kez eklenti envanteri çıkarın. Kullanılmayan eklentiyi devre dışı bırakmakla yetinmeyin, tamamen silin. Uzun süredir güncellenmeyen eklentiler için alternatif arayın.
4. Nulled (korsan) tema ve eklentiler
Ücretli bir temanın "ücretsiz" kopyasını indirmek cazip görünür. Bu kopyalar genellikle içine arka kapı, gizli bağlantı veya kötü amaçlı kod eklenerek dağıtılır. Siteyi kurduğunuz anda kapıyı kendiniz açmış olursunuz. Üstelik bu kopyalar güncelleme de almaz.
Çözüm: Tema ve eklentileri sadece resmî kaynaktan veya geliştiricinin kendi sitesinden alın. Ajansınız size site teslim ettiyse lisansların kimin adına olduğunu sorun.
5. Zayıf şifreler ve iki adımlı doğrulamanın olmaması
"admin" kullanıcı adı ve tahmin edilebilir bir şifre, hâlâ en yaygın giriş yollarından biri. Botlar giriş sayfasına sürekli şifre dener. Bir de aynı şifrenin e-postada, hostingde ve WordPress'te kullanıldığını düşünün. Bir sızıntı hepsini açar.
Çözüm: Her yönetici için uzun, benzersiz şifre kullanın ve bir şifre yöneticisine kaydedin. İki adımlı doğrulamayı (2FA) zorunlu yapın. Giriş denemelerini sınırlayın. Ayrılan çalışanların hesaplarını aynı gün kapatın.
6. Açık bırakılmış xmlrpc.php
xmlrpc.php, WordPress'e uzaktan bağlanmak için eski bir arayüzdür. Bugün çoğu site buna ihtiyaç duymaz. Ama açık kaldığında saldırganlara tek istekte çok sayıda şifre deneme imkânı verir. Ayrıca başka sitelere yönelik saldırılarda aracı olarak kullanılabilir.
Çözüm: Mobil uygulama veya Jetpack gibi bu arayüzü kullanan bir araç yoksa xmlrpc.php'yi sunucu seviyesinde kapatın. Kapatmadan önce hangi entegrasyonların buna dayandığını kontrol edin.
7. Yanlış dosya izinleri
Bir eklenti çalışmadığında "her şeye 777 verelim" çözümü sık görülür. Bu, sunucudaki her sürecin dosyalarınızı değiştirebilmesi demektir. wp-config.php gibi veritabanı şifresini içeren dosyalar da okunur hâlde kalabilir.
Çözüm: Klasörler için 755, dosyalar için 644 genel kuraldır. wp-config.php daha kısıtlı olmalıdır. Yönetim panelinden dosya düzenlemeyi kapatın. Böylece biri panele girse bile tema dosyalarına kod yazamaz.
8. Ucuz paylaşımlı hosting ve izolasyon eksikliği
Paylaşımlı hostingde siteniz aynı sunucuda başka sitelerle yaşar. İzolasyon zayıfsa komşu sitedeki bir açık sizin sitenize de sıçrayabilir. Eski PHP sürümleri, kapalı güvenlik duvarları ve yavaş destek bu riski büyütür.
Çözüm: Hesap izolasyonu sağlayan, güncel PHP sürümü sunan ve web uygulama güvenlik duvarı (WAF) desteği olan bir altyapı seçin. Kurumsal bir sitede hosting, en son tasarruf yapılacak kalemdir.
9. Yedek ve izleme olmaması
Yedek, saldırıyı engellemez. Ama saldırıdan sonra işinize dönüp dönemeyeceğinizi belirler. Birçok site sahibi, hacklendiğini müşterisinden veya arama motorundaki uyarıdan öğrenir. O noktada temiz bir yedek yoksa her dosyayı tek tek incelemek gerekir.
Çözüm: Günlük otomatik yedek alın ve yedeği sitenin bulunduğu sunucudan ayrı bir yerde saklayın. Yedekten geri dönmeyi en az bir kez deneyin. Dosya değişikliği ve çalışma süresi izlemesi kurun.
İpucu: Güvenliği düzenli bir rutin olarak görün. Ayda bir saatlik düzenli bakım, yılda bir kez yapılan büyük temizlikten çok daha etkilidir. Takvime yazın ve sorumluyu belli edin.
Basit bir aylık bakım rutini
Yukarıdaki dokuz maddenin çoğu, düzenli ve sıkıcı bir rutinle çözülür. Güvenliği çoğu zaman aksatılmayan küçük kontroller sağlar. Kendi ekibiniz veya ajansınız için şu listeyi temel alabilirsiniz:
- Çekirdek, tema ve eklenti güncellemelerini önce test ortamında, sonra canlıda yapın.
- Kullanıcı listesini gözden geçirin; ayrılan kişilerin ve gereksiz yönetici hesaplarının kaydını silin.
- Son yedeğin alındığını ve açılabildiğini kontrol edin.
- Güvenlik eklentisi veya sunucu kayıtlarındaki uyarılara bakın.
- Arama konsolunda güvenlik ve dizine ekleme uyarılarını kontrol edin.
- PHP sürümünün desteklenen bir sürüm olduğunu doğrulayın.
Siteyi bir ajans yaptıysa şu soruları sormaktan çekinmeyin: Güncellemeleri kim yapıyor? Yedekler nerede duruyor? Tema ve eklenti lisansları kimin adına? Bir sorun çıktığında kime, ne kadar sürede ulaşabilirim? Bu soruların net cevabı yoksa siteniz büyük ihtimalle sahipsiz kalmıştır.
Siteniz hacklendiyse ilk ne yapmalısınız?
- Paniklemeyin ve siteyi bakım moduna alın.
- Tüm şifreleri değiştirin: WordPress, hosting, FTP/SFTP, veritabanı ve e-posta.
- Saldırıdan önceki temiz bir yedeği belirleyin.
- Hangi açıktan girildiğini bulun. Yoksa aynı kapıdan tekrar girerler.
- Çekirdeği, temaları ve eklentileri resmî kaynaktan yeniden yükleyin.
- Arama motoru uyarısı varsa temizlikten sonra yeniden inceleme talep edin.
Ne zaman özel bir CMS'e geçmek mantıklı?
Adil olmak gerekirse WordPress kötü bir sistem sayılmaz. İyi bakılan, az ve güvenilir eklentiyle çalışan bir WordPress sitesi yıllarca sorunsuz çalışır. Blog, küçük tanıtım sitesi veya hızlı başlangıç için hâlâ mantıklı bir seçimdir.
Ama bazı işaretler, sitenin WordPress'i aştığını gösterir:
- Temel işlevler için onlarca eklentiye bağımlı hâle geldiniz.
- Her güncellemede bir şey bozuluyor ve güncellemeyi korkarak yapıyorsunuz.
- Çok dilli içerik, karmaşık izinler veya özel veri yapıları eklentilerle yamalanıyor.
- Site, iç sistemlerinizle (ERP, CRM) entegre olmalı ve bu entegrasyon eklentiyle zorlanıyor.
- Aynı site birden fazla kez hacklendi.
Bu durumda Symfony tabanlı, açık kaynaklı Sulu CMS gibi bir sistem iyi bir alternatiftir. Sulu'da içerik yapıları kodla tanımlanır. Bu yüzden eklenti yığınına gerek kalmaz ve saldırı yüzeyi küçülür. Çok dillilik ve rol bazlı yetkiler sistemin içinde gelir. Geçişi doğru planlamak gerekir. URL yapısı korunmalı, yönlendirmeler eksiksiz kurulmalı, içerik temiz taşınmalı. Aksi hâlde güvenlik kazanırken arama trafiğinizi kaybedebilirsiniz.
Özet
WordPress sitelerini çoğunlukla bakımsızlık hackletir. Eklentileri azaltın ve güncel tutun, korsan tema kullanmayın, 2FA açın, gereksiz arayüzleri kapatın, izinleri düzeltin, iyi bir altyapı seçin ve test edilmiş yedek tutun. Bunları yaptığınız hâlde site sizi sürekli uğraştırıyorsa, platformu sorgulamanın zamanı gelmiştir.