Sunucunuzun kaynakları durup dururken tükeniyor, erişim kayıtlarında xmlrpc.php dosyasına saniyede onlarca istek görüyorsanız sitenize bu dosya üzerinden yük biniyor olabilir. Saldırganlar bu dosyayı iki şey için sever. Biri parola denemelerini tek istekte yüzlerce kez yapabilmek, diğeri de siteyi başka hedeflere saldırı aracı olarak kullanmak. İkisi de sunucunuzu yavaşlatır, bazen tamamen erişilmez yapar.
Bu dosya ne işe yarıyor
xmlrpc.php, WordPress’in dışarıdan uzaktan bağlantı kabul etmesini sağlayan eski bir arayüz. Mobil uygulamalar, bazı masaüstü yazı araçları ve Jetpack gibi servisler bununla haberleşir. Çoğu modern site artık buna ihtiyaç duymaz, çünkü aynı işi REST API daha güvenli biçimde yapıyor. Yani pek çok kullanıcı için bu dosya sadece açık bir kapı olarak duruyor.
İhtiyacınız var mı, önce ona bakın
Dosyayı kapatmadan şunları kontrol edin. Jetpack kullanıyor musunuz? WordPress mobil uygulamasından yazı mı giriyorsunuz? Siteye bağlanan bir dış servis var mı? Bu soruların hepsine hayır diyorsanız dosyayı gönül rahatlığıyla kapatabilirsiniz. Jetpack kullananlar dikkat etsin, dosyayı tamamen kapatırsanız Jetpack’in bazı özellikleri çalışmayı bırakır. Bu durumda kapatmak yerine koruma altına almak daha mantıklı.
Kapatma yöntemleri
- En temiz yol .htaccess ile erişimi engellemek. Apache sunucuda kök dizindeki .htaccess dosyasına erişimi reddeden bir blok ekleyebilirsiniz. Bu, istek daha PHP’ye ulaşmadan reddedildiği için sunucuyu en az yorar.
- Bir satır kodla kapatmak isterseniz temanızın functions.php dosyasına xmlrpc’yi devre dışı bırakan standart bir filtre ekleyebilirsiniz. WordPress’in add_filter(‘xmlrpc_enabled’, ‘__return_false’); satırı bunu yapar.
- Kod yazmak istemeyenler için güvenlik eklentileri bu seçeneği panelden sunar. Çoğunda tek bir kutucuğu işaretleyerek xmlrpc erişimini kapatırsınız.
Kullanmak zorundaysanız
Jetpack ya da başka bir servis yüzünden dosyaya ihtiyacınız varsa kapatmak yerine sınırlandırın. Bir güvenlik eklentisiyle belirli bir süre içinde gelen istek sayısına sınır koyun. Aynı adresten art arda gelen başarısız denemeleri geçici olarak engelleyen bir kural devreye alın. Sunucu tarafında güvenlik duvarınız varsa xmlrpc.php’ye erişimi sadece Jetpack sunucularından gelen isteklere açacak şekilde daraltabilirsiniz.
Gerçekten durdu mu, test edin
Kapattıktan sonra dosyanın adresini tarayıcıya yazıp açmayı deneyin. Normalde kısa bir metin mesajı döner. Engelleme çalışıyorsa yetkisiz erişim ya da yasak uyarısı görmeniz gerekir. Erişim kayıtlarınızı birkaç gün sonra tekrar kontrol edin, o dosyaya giden isteklerin azaldığını görmelisiniz.
Pingback tuzağına da dikkat
xmlrpc.php’nin bir de pingback özelliği var. Saldırganlar bunu kötüye kullanarak sitenizi, başka sitelere istek yağdıran bir aracı hâline getirebilir. Yani sadece siz değil, başkaları da sizin sunucunuz üzerinden zarar görür. Dosyayı tamamen kapatmak bu riski de ortadan kaldırır. Kapatmıyor ama sınırlıyorsanız, pingback’i ayrıca devre dışı bırakan bir ayar ya da eklenti kullanmak bu özel saldırı türünü engeller. Erişim kayıtlarınızda system.multicall ya da pingback.ping gibi ifadeler sık geçiyorsa büyük ihtimalle bu yöntemle uğraşıyorsunuz.
Sonrasında rahat etmek için
xmlrpc’yi kapatmak tek başına yeterli bir güvenlik önlemi değildir. Yönetici parolalarınızı uzun ve tahmin edilmesi zor tutun. Giriş sayfasına da deneme sınırı koyan bir çözüm ekleyin, çünkü saldırganlar bu kapı kapanınca başka kapıları dener. WordPress, tema ve eklentilerinizi güncel tutun. Erişim kayıtlarınıza ara ara göz atmayı alışkanlık hâline getirin, olağan dışı bir trafik artışını erken fark etmek sizi büyük baş ağrılarından kurtarır.
Bu küçük düzenleme, çoğu sitede sunucu yükünü gözle görülür biçimde azaltır. Jetpack ya da benzeri bir servis kullanıyorsanız kapatmadan önce iki kez düşünün, aksi hâlde beklemediğiniz bir özelliğin durduğunu görebilirsiniz. Takıldığınız yer olursa erişim kayıtlarından aldığınız örnek satırları saklayın, yardım alırken epey işinize yarar.
Bu işleri kendiniz yapmak yerine profesyonel destek isterseniz, WordPress bakım ve teknik destek hizmetime göz atabilirsiniz.
Bu konunun tüm rehberi: WordPress Hataları ve Çözümleri