Çoğu web site sahibi "Sitem neden yavaşladı?" diye kontrol ettiğinde asıl suçlunun DDoS veya yüksek trafik olmadığını, gizlice sömürülen xmlrpc.php dosyası olduğunu fark etmez. WordPress altyapısının eski bir haberleşme standardı olan XML-RPC'yi neden kapatmanız gerektiğini anlatıyoruz.
XML-RPC Nedir? Neden Vardı?
XML-RPC, farklı sistemlerin (örneğin akıllı telefonunuz ile web sunucunuzun) WordPress ile haberleşmesini sağlayan protokoldür. Geçmiş yıllarda, telefondan WordPress uygulamasıyla yazı yayına almak veya diğer blogların sitenizle "Pingback" iletişimi kurması için bu dosyaya bağımlıydık.
Ancak WordPress'in güncel REST API altyapısına geçmesiyle, XML-RPC köhne ve açık dolu bir miras olarak kaldı.
XML-RPC'nin Açık Bırakılmasının Zararları (Saldırı Türleri)
Eğer siteniz.com/xmlrpc.php adresine tarayıcıdan girdiğinizde "XML-RPC server accepts POST requests only." yazısı görüyorsanız saldırı altındasınız veya saldırıya açıksınız demektir.
1. Dev Brute Force Atakları (Amplifikasyon Etkisi)
Normal wp-admin giriş ekranında siber saldırgan tek seferde bir şifre dener. Ancak XML-RPC'deki system.multicall fonksiyonunu sömüren bir hacker, tek bir komut paketinin (request) içine yüzlerce farklı şifre ihtimalini gömerek sunucunuza gönderir!
Güvenlik uygulamaları bunu "tek bir istek" gibi sandığından engellemekte (Fail2Ban vb.) geç kalır. Sonuç olarak yönetici şifreniz kırılamasa bile, sunucunun işlemcisi (MySQL) kilitlenir.
2. Sitenizin DDoS Aracı Olarak Kullanılması (Pingback)
Hackerlar, sizin siteniz gibi 10.000 adet zafiyetli WordPress sitesini bulur. Sizin XML-RPC dosyanıza "Şu site bana haber gönderdi mi bir sor bakalım (Pingback)" komutunu yollar. Bunun sonucunda sizin masum siteniz gidip X hedefine saldırıya başlar! Hem sitenizin kapasitesi (Bandwidth) çalınır hem de IP'niz veri merkezi tarafından Ban (Blok) listesine alınır.
XML-RPC Nasıl Kapatılır?
Birçok eklenti bu işi yapar (Örn: Disable XML-RPC) ancak en sağlıklısı sunucu ayarlarından (veya .htaccess üzerinden) tamamen erişime kapatmaktır.
Yöntem 1: .htaccess Üzerinden Kapatma (cPanel/Apache için)
Ana dizininizdeki .htaccess dosyasını açıp aşağıdaki kodu ekleyin:
# XML-RPC Kapatma
<Files xmlrpc.php>
Require all denied
</Files>
Artık her istek 403 Forbidden engeline takılacaktır.
Yöntem 2: Nginx Üzerinden Kapatma (VDS Yöneticileri İçin)
Eğer güçlü bir VDS üzerinde Nginx sunucunuz varsa, vhost konfigürasyonunuza şunu ekleyin:
location = /xmlrpc.php {
deny all;
access_log off;
log_not_found off;
}
🚀 Hızlı, Temiz ve İzole Kaynaklar
Sürekli xmlrpc.php saldırısı yüzünden CPU değerleriniz paylaşımlı alanda limitsize mi dayanıyor? Yüksek kaynaklı ve kendinize ait (Dedicated RAM & CPU) KVM altyapılı VDS kiralayarak gücünüzü geri alın!
Sonuç
Eğer Jetpack veya çok eski nesil bir otomasyon yazılımı gibi spesifik bir sebepten ötürü XML-RPC dosyasına muhtaç değilseniz, kapatılması tartışmasız WordPress güvenlik optimizasyonunun 1 numaralı kuralıdır.