WordPress sitesi hacklenmesin: güvenlik kontrol listesi
WordPress internetteki sitelerin çok büyük bir kısmında kullanılıyor. Bu yüzden saldırganların da en çok hedef aldığı sistemlerden biri. Hacklenen WordPress sitelerinin çoğunda sorun WordPress'in çekirdeği değil, güncellenmemiş eklentiler, temalar ve zayıf şifrelerdir.
1. Güncellemeler
- WordPress çekirdeğini, eklentileri ve temaları güncel tut. Bilinen açıklar yayımlandıktan kısa süre sonra otomatik taramalarla istismar edilmeye başlanır.
- Kullanmadığın eklenti ve temaları devre dışı bırakmakla yetinme, sil. Devre dışı bir eklentinin dosyaları sunucuda durdukça açık hâlâ kullanılabilir.
- Uzun süredir güncellenmeyen, geliştiricisi bırakmış eklentilerden kaçın.
2. "Nulled" tema ve eklenti kullanma
Ücretli tema ve eklentilerin "ücretsiz" dağıtılan kopyaları, hacklenen sitelerin en yaygın sebeplerinden biridir. Bu dosyalara çoğu zaman arka kapı (backdoor) eklenmiştir ve güncelleme de alamazsın.
3. Yönetici hesapları
adminkullanıcı adını kullanma.- Uzun, benzersiz şifreler ve bir parola yöneticisi.
- İki adımlı doğrulama ekle (bunun için güvenilir eklentiler mevcut).
- Sadece gerçekten yönetici olması gerekenlere yönetici yetkisi ver. Yazarlar için "Yazar" veya "Editör" rolü yeterli.
- Ayrılan çalışanların ve ajansların hesaplarını kapat.
4. Giriş sayfasını koru
wp-login.php ve xmlrpc.php sürekli kaba kuvvet saldırısı alır:
- Başarısız giriş denemelerini sınırlayan bir eklenti veya sunucu tarafında fail2ban gibi bir araç kullan.
- XML-RPC'ye ihtiyacın yoksa (bazı mobil uygulamalar ve eski entegrasyonlar kullanır) kapatabilirsin.
- Yönetim paneline sadece belirli IP'lerden erişim, en güçlü önlemdir (sabit IP'n varsa).
5. Dosya ve sunucu ayarları
wp-config.php içinde:
define('DISALLOW_FILE_EDIT', true); // Panelden tema/eklenti dosyası düzenlemeyi kapatır
Saldırgan yönetici paneline girse bile panelden doğrudan PHP kodu yazamaz.
Diğerleri:
wp-config.phpdosyasının izinleri kısıtlı olsun (örneğin640veya600, sunucu yapına göre).wp-content/uploadsklasöründe PHP çalıştırılmasını engelle. Yükleme açıklarında saldırganlar buraya PHP dosyası bırakır. Nginx'te:
location ~* /wp-content/uploads/.*\.php$ {
deny all;
}
- Dizin listelemeyi kapat.
- Sunucudaki PHP sürümünü güncel ve desteklenen bir sürümde tut.
6. Yedek
Hem dosyaları hem veritabanını kapsayan, sitenin bulunduğu sunucunun dışına alınan otomatik yedekler. Hacklenen bir siteyi temizlemenin en güvenilir yolu, saldırıdan önceki temiz yedeğe dönmektir.
7. Güvenlik eklentileri: faydalı ama sihirli değil
Güvenlik eklentileri dosya değişikliklerini izlemek, zararlı kod taramak ve giriş denemelerini sınırlamak için faydalıdır. Ama yukarıdaki temel adımların yerine geçmez. Ayrıca birden fazla güvenlik eklentisini aynı anda kurmak çakışmalara ve yavaşlamaya neden olur.
Hacklendiğini nasıl anlarsın?
- Sitede tanımadığın sayfalar, özellikle bahis, ilaç veya kopya ürün içerikli sayfalar (arama motorlarında
site:alanadin.comaramasıyla görülebilir). - Mobilden girenlerin başka bir siteye yönlendirilmesi.
- Tanımadığın yönetici hesapları.
wp-content/uploadsveya tema klasörlerinde garip adlı.phpdosyaları.- Arama motoru veya tarayıcının "bu site tehlikeli olabilir" uyarısı.
Böyle bir durumda: yönetici ve veritabanı şifrelerini, wp-config.php içindeki güvenlik anahtarlarını (salt'ları) değiştir, temiz yedeğe dön ya da çekirdek dosyaları yeniden yükle, bütün eklentileri resmi kaynaktan yeniden kur ve giriş noktasını bul. Aksi hâlde birkaç gün içinde aynı şey tekrar olur.