WordPress giriş sayfası ve xmlrpc.php saldırılarını engelleme
Erişim günlüğünüzde yüzlerce POST /wp-login.php ve POST /xmlrpc.php isteği görüyorsunuz; sunucu yavaşlıyor, hatta kullanıcı adınız kilitleniyor. Bunlar WordPress'i hedefleyen botlardır. İnternete açık her WordPress sitesi günde birkaç yüz kez denenir; parolanız güçlüyse içeri giremezler ama sunucunuzu yorarlar. Birkaç adımla ciddi biçimde azaltabilirsiniz.
Önce temel: güçlü parola ve iki adımlı giriş
- Yönetici kullanıcı adı
adminolmasın. Başka bir yönetici kullanıcı açıpadmin'i silin ya da yetkisini alın. - Uzun ve benzersiz bir parola kullanın: güçlü parola.
- İki adımlı doğrulama sağlayan bir güvenlik eklentisi kurun.
xmlrpc.php'yi kapatın
Eski bir uzaktan yönetim arayüzü olan xmlrpc.php, tek istekle yüzlerce parola denemesine izin verir. Mobil uygulama ya da Jetpack gibi bir bağımlılığınız yoksa kapatın.
- Hosting paketimizde: Panelde WEB bölümünden alan adını düzenleyin, Gelişmiş Seçenekler'de Web Şablonu olarak
wordpress-disable-xmlrpcseçin ve kaydedin. Bu hazır şablon WordPress için gereken kuralları içerir ve xmlrpc isteklerini engeller. - VDS'te Nginx: Site ayarınıza şu bloğu ekleyip
sudo nginx -t && sudo systemctl reload nginxçalıştırın:location = /xmlrpc.php { deny all; }
wp-login.php isteklerini sınırlayın (VDS)
Nginx'in istek sınırlayıcısı, aynı adresten dakikada çok fazla giriş denemesini keser. http bloğuna (genelde /etc/nginx/nginx.conf) bir bölge tanımlayın:
limit_req_zone $binary_remote_addr zone=giris:10m rate=5r/m;
Site ayarında giriş sayfası için kullanın:
location = /wp-login.php {
limit_req zone=giris burst=3 nodelay;
include /etc/nginx/snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
}
Bu kural dakikada 5 isteğe izin verir (3 ek istek tolerans). Kendi giriş denemelerinizi bu hız sınırlamaz; botların denemelerini ise keser. Yapılandırmayı uygulamadan önce sudo nginx -t ile denetleyin.
Başarısız girişleri engelleyin: fail2ban
fail2ban, günlükte tekrar eden başarısız girişleri görüp IP adresini güvenlik duvarında engeller. WordPress için ek bir filtre gerekir (bir WordPress güvenlik eklentisi başarısız girişleri sistem günlüğüne yazabilir ya da Nginx erişim günlüğünü okuyan bir filtre yazılır). Genel kurulum için brute force koruması makalesine bakın.
Giriş sayfasını gizlemek
Bazı güvenlik eklentileri giriş adresini /wp-login.php yerine özel bir yola taşır. Botların büyük kısmını eler; ama tek başına güvenlik sağlamaz ve adresi unutursanız kendiniz de giremezsiniz. Yedekleyin.
Saldırı altında mıyım?
Günlükte en çok istek yapan adreslere bakın: erişim günlüğünü okuma. Site ele geçirildiyse: sitem hacklendi ve yetkisiz erişim kontrol listesi.
Sık sorulanlar
xmlrpc.php'yi kapatırsam hangi özellikler bozulur?
WordPress mobil uygulaması, Jetpack ve bazı yayın araçları xmlrpc ister. Bunları kullanmıyorsanız bir şey bozulmaz. Güncel WordPress'in REST API'si yeni uygulamalar için yeterlidir.
Hız sınırlayıcı beni de engeller mi?
Dakikada 5 isteğin altında kalan normal girişler etkilenmez. Çok sayıda yanlış parola denerseniz yavaşlarsınız; bu istenen davranıştır.
CAPTCHA işe yarar mı?
Giriş formuna CAPTCHA ekleyen eklentiler botları büyük ölçüde keser. Sunucu yükünü azaltmak için yukarıdaki sunucu önlemleriyle birlikte kullanın.
İlgili makaleler
- Bilinmeyen girişleri (brute force) nasıl engellerim?
- WordPress yönetim paneline giremiyorum: parola sıfırlama ve giriş sorunları
- Sitem hacklendi veya virüs bulaştı, ne yapmalıyım?
Sorununuz çözülmediyse destek talebi açın. Hangi adımı denediğinizi ve ekranda ne gördüğünüzü yazarsanız çözüm çok daha hızlı olur.
Geri bildiriminiz için teşekkürler!