5 temel: önce bunları yapın
- WordPress çekirdeğini, temaları ve eklentileri güncel tutun. Savunmasız eklentiler 1 numaralı saldırı vektörüdür. Küçük sürüm otomatik güncellemelerini etkinleştirin (WordPress 5.6+ bunu varsayılan olarak yapar). Büyük sürümler için, yayımlanmadan sonraki 7 gün içinde güncelleyin. Eklentiler için güvenilir olanların otomatik güncellemesini etkinleştirin; kritik eklentilerin sürüm notlarını manuel olarak inceleyin.
- Her WordPress hesabı için güçlü, benzersiz parolalar kullanın. Özellikle yönetici hesapları. Bir parola yöneticisi kullanın (1Password, Bitwarden). «admin» kullanıcı adını devre dışı bırakın: yeni bir yönetici oluşturun ve eskisini silin.
- İki faktörlü kimlik doğrulamayı etkinleştirin. Wordfence Login Security'yi (ücretsiz) veya herhangi bir TOTP uygulamasıyla 2FA QR Üreticimizi kullanın. 2FA, kimlik bilgisi doldurma saldırılarının %99'undan fazlasını alt eder.
- Güvenilir bir güvenlik eklentisi kurun. Wordfence (ücretsiz sürüm çoğu site için yeterlidir) veya Solid Security. Birden fazlasını üst üste yığmayın: çakışırlar. Eklenti, oturum açma deneme sınırlamasını, dosya bütünlüğü izlemeyi ve kötü amaçlı yazılım taramasını yönetir.
- Site dışı günlük yedeklemeler. UpdraftPlus → Dropbox/Google Drive. Yedeği ihtiyacınız olmadan önce alın. Geri yükleme sürecini en az bir kez test edin.
Sonraki 10: ek yüksek etkili önlemler
- HTTPS'yi zorlayın. Let's Encrypt her modern barındırmada ücretsizdir. HTTP'yi sunucu düzeyinde HTTPS'ye yönlendirin.
- Veritabanı tablo önekini değiştirin. WordPress varsayılan olarak wp_ kullanır; kurulum sırasında özel bir şeyle değiştirin. Saldırıları önlemez ama bazı saldırı kalıplarını zorlaştırır.
- Kullanmıyorsanız XML-RPC'yi devre dışı bırakın. XML-RPC, yaygın bir kaba kuvvet yükseltme vektörüdür. Jetpack mobil uygulamasını veya uzaktan yayınlamayı kullanmıyorsanız, .htaccess veya bir eklenti aracılığıyla devre dışı bırakın.
- Oturum açma denemelerini sınırlayın. Wordfence bunu otomatik olarak yapar. Kaba kuvvet kimlik bilgisi doldurmayı önler.
- WordPress kimlik doğrulama anahtarlarını/salt'larını döndürün. WordPress Salt Üreticimizi kullanın. Herhangi bir şüpheli ihlalden sonra, ele geçirilmiş bir yöneticiyi sildikten sonra ve rutin olarak her 6-12 ayda bir döndürün.
- Dosya aktarmak için SSH veya SFTP kullanın, asla düz FTP değil. FTP, kimlik bilgilerini düz metin olarak iletir.
- Mümkünse wp-admin erişimini IP'ye göre kısıtlayın. Ekibiniz sabit IP'ler kullanıyorsa (ofis, VPN), wp-admin'i yalnızca o IP'lerle sınırlayın. .htaccess veya Nginx yapılandırması aracılığıyla.
- wp-config.php'de dosya düzenlemeyi devre dışı bırakın. Şunu ekleyin:
define('DISALLOW_FILE_EDIT', true);Bir hesabı ele geçirirlerse saldırganların panelden temaları/eklentileri düzenlemesini önler. - WordPress sürüm numarasını gizleyin. generator meta etiketini kaldırın. Saldırıları önlemez ama parmak izi çıkarmayı azaltır.
- Dosya izinlerini kilitleyin. Dosyalar 644, dizinler 755, wp-config.php 600. Çoğu yönetilen barındırma bunu otomatik olarak yapar; bir VPS'te açıkça yapılandırın.
İnce ayar: iyi ama kritik değil
- Özel oturum açma URL'si (ör. WPS Hide Login). Çoğunlukla bot trafiği gürültüsünü azaltır; gerçek güvenlik değildir.
- Oturum açma formlarında CAPTCHA. Otomatik saldırılar için hafif bir sürtünme.
- /uploads/ içinde PHP yürütmeyi devre dışı bırakın. Yüklenen PHP shell'lerinin çalışmasını önler.
- Cloudflare WAF'ı (ücretsiz katman) kullanın. Kötü amaçlı trafiği sunucunuza ulaşmadan filtreler.
- Eklenti/çekirdek güncellemeleri için bir yönetici e-posta uyarısı yapılandırın.
- Tarayıcı düzeyinde HTTPS'yi zorlamak için HSTS ön yüklemesini kullanın.
- REST API aracılığıyla kullanıcı sayımını devre dışı bırakın (Solid Security veya Wordfence bunu yönetir).
- İçerik Güvenliği Politikası (CSP) başlıklarını kullanın.
- Dizin gezinmesini devre dışı bırakın (çoğu barındırma bunu varsayılan olarak yapar).
- Çalışma süresini + bütünlüğü harici bir hizmetle izleyin (UptimeRobot ücretsiz katmanı + haftalık Sucuri SiteCheck).
- Kullanıcı rollerini en az ayrıcalıkla sınırlayın. Çoğu katkıda bulunanın editör düzeyinde erişime ihtiyacı yoktur.
- Veritabanı yedeklemesi şifrelemesi (UpdraftPlus Premium bunu sunar).
- CDN aracılığıyla alan adı dışında görüntü barındırma (saldırı yüzeyini azaltır).
- Düzenli güvenlik denetim günlüğü incelemesi.
- Site önemli gelir üretiyorsa yıllık sızma testi.
WordPress güvenlik efsaneleri: bunları atlayın
Sıkça önerilen birkaç «güvenlik» önlemi minimum gerçek koruma sunar: (1) «WordPress sürümünü gizleyin»: sürümünüzü bilmek hedefli saldırılara hafifçe yardımcı olur, ancak gerçek çözüm gizlemek değil güncellemektir. (2) «wp-config.php'yi public_html üzerine taşıyın»: esasen sıfır güvenlik faydası sağlar; dosya zaten .htaccess ile korunmaktadır. (3) «REST API'yi devre dışı bırakın»: birçok eklentiyi bozar ve çok azını engeller. Bunun yerine belirli uç noktaları sınırlayın. (4) «Birden fazla güvenlik eklentisini üst üste yığın»: çakışır ve örtüşürler. Güvenilir bir eklenti (Wordfence veya Solid Security) üçünün yapacağını kapsar. (5) «wp-login.php'yi yeniden adlandırın»: gizlilik yoluyla güvenlik; saldırganlar yeni URL'yi yönlendirmeler aracılığıyla kolayca bulur.
Hacklendiyseniz: kurtarma listesi
- Paniğe kapılmayın; hemen bir şeyleri silmeyin. Adli analiz için önce mevcut durumun bir anlık görüntüsünü alın.
- Siteyi çevrimdışına alın (bakım modu eklentisi veya statik bir sayfaya .htaccess yönlendirmesi).
- Tüm yönetici parolalarını değiştirin ve WordPress salt'larını döndürün.
- Kullanıcı hesaplarını denetleyin: tanınmayan yönetici hesaplarını hemen silin.
- Wordfence Premium veya Sucuri ile kötü amaçlı yazılım taraması yapın.
- Mevcut dosyaları temiz bir WordPress indirmesiyle karşılaştırın: diff, değiştirilmiş çekirdek dosyalarını ortaya çıkarır.
- Veritabanı wp_options tablosunda beklenmeyen girdileri inceleyin (genellikle enjekte edilmiş JS içerir).
- En son temiz yedeklemeden geri yükleyin (günlük yedeklemelerin önemli olmasının nedeni budur).
- Geri yükledikten sonra her eklentiyi denetleyin: kullanılmayanları silin, hepsini güncelleyin ve herkese açık CVE'leri olanları değiştirin.
- WordPress çekirdeğini en son sürüme güncelleyin.
- Siteyi yeniden etkinleştirin ve 30 gün boyunca yeniden enfeksiyonu izleyin.