- Konu sahibi
- #1
XML-RPC’yi kullanan bir uygulamanız veya entegrasyonunuz yoksa
XML-RPC, harici uygulamaların WordPress ile iletişim kurmasını sağlayan bir arayüzdür. Bu arayüze yönelik parola denemeleri ve pingback istekleri kötüye kullanılabilir. Aşağıdaki engel, yalnızca bu giriş noktasını hedefler; sitenin diğer giriş yollarını veya bütün saldırıları durdurmaz.
Kararınızı şu ayrıma göre verin:
İzin listesi kullanacaksanız servis sağlayıcısının doğruladığı güncel IP adreslerini esas alın. Güvenlik duvarı veya CDN kullanıyorsanız doğrudan sunucu adresine erişimin kuralı aşmaması için sunucu tarafındaki erişimi de barındırma sağlayıcınızla değerlendirin.
Bu kural ilgili dosyaya erişimi reddetmeyi amaçlar. Barındırma yapılandırması
Normal sayfa çalışırken XML-RPC isteğinin 403 Forbidden dönmesi, test edilen adresten erişimin reddedildiğini gösterir. Bu sonuç tek başına bütün alternatif alan adlarının veya doğrudan sunucu adresinin de korunduğunu kanıtlamaz; kullanılıyorsa onları da yetkiniz dahilinde sınayın. İsteklerin erişim günlüğünde hangi durum koduyla göründüğüne bakın.
Uç nokta 200 ya da XML-RPC’ye ait bir yanıt veriyorsa engel beklenen biçimde uygulanmamış olabilir. Doğru alan adını ve WordPress dizinini kullandığınızı, dosyanın kaydedildiğini ve sunucunun Apache olup
Sorun sürerse barındırma sağlayıcısına test edilen yol, denemenin zamanı, görülen HTTP durum kodu ve varsa ilgili hata günlüğü kaydıyla başvurun;
Yalnız
xmlrpc.php dosyasına dış erişimi web sunucusunda engelleyin; ardından gerçek site adresine istek göndererek kuralı doğrulayın. Kullanıyorsanız tamamen kapatmak yerine erişimi güvenilir istemcilerle sınırlayın veya istek hızını güvenlik duvarında kontrol edin. Böylece meşru bağlantıları gereksiz yere kesmeden saldırı yüzeyini daraltabilirsiniz.XML-RPC, harici uygulamaların WordPress ile iletişim kurmasını sağlayan bir arayüzdür. Bu arayüze yönelik parola denemeleri ve pingback istekleri kötüye kullanılabilir. Aşağıdaki engel, yalnızca bu giriş noktasını hedefler; sitenin diğer giriş yollarını veya bütün saldırıları durdurmaz.
Engellemeden önce kullanımı belirleyin
Siteye bağlanan yayınlama uygulamalarını, eklentileri ve üçüncü taraf servisleri gözden geçirin. Bir entegrasyonun XML-RPC kullanıp kullanmadığından emin değilseniz sağlayıcısına sorun ve değişiklikten sonra bağlantıyı sınayın. Engelleme bu arayüzü kullanan hizmetleri durdurabilir.Kararınızı şu ayrıma göre verin:
| Durum | Uygun yaklaşım |
|---|---|
| XML-RPC kullanılmıyor | Uç noktaya erişimi tamamen engelleyin. |
| Belirli istemciler kullanıyor | Mümkünse yalnız güvenilir kaynaklara izin verin. |
| İstemci adresleri sabit değil | Güvenlik duvarında istek hızı ve kötüye kullanım kuralları uygulayın. |
Apache üzerinde erişimi engelleyin
Bu örnek Apache 2.4 ve.htaccess yetkilendirme kurallarına izin veren bir kurulum içindir. Nginx veya farklı bir sunucu kullanıyorsanız bu dosyadaki kuralı genel bir çözüm olarak kabul etmeyin; sunucu yapılandırmasında ya da güvenlik duvarında eşdeğer engel uygulanmalıdır.- Dosya yöneticisi veya SFTP ile WordPress’in kurulu olduğu dizine, yani
xmlrpc.phpdosyasının bulunduğu yere erişin. Mevcut.htaccessdosyasının bir yedeğini alın. - Dosyayı açın ve mevcut WordPress kurallarını silmeden, onların dışına aşağıdaki bloğu ekleyin. Dosya yoksa aynı dizinde oluşturun.
- Dosyayı kaydedin ve aşağıdaki testleri çalıştırın. Site genelinde 500 hatası oluşursa yedeği geri yükleyin; sunucunun hata günlüğündeki ilgili kaydı inceleyin.
Kod:
<Files "xmlrpc.php">
Require all denied
</Files>
Bu kural ilgili dosyaya erişimi reddetmeyi amaçlar. Barındırma yapılandırması
.htaccess dosyasını dikkate almıyorsa veya başka bir sunucu katmanı isteği farklı ele alıyorsa tek başına etkili olmayabilir. XML-RPC dosyasını silmek yerine erişimi kuralla sınırlamak, engeli daha sonra kaldırmayı da kolaylaştırır.Engeli test edin ve sonucu yorumlayın
Komut satırında aşağıdaki örnek adresi kendi sitenizin gerçek adresiyle değiştirin. WordPress bir alt dizindeyse o dizini de yola ekleyin. Önce normal sayfanın, sonra XML-RPC uç noktasının yanıtını inceleyin:
Bash:
curl -i https://ornek.com/
curl -i -X POST https://ornek.com/xmlrpc.php
Normal sayfa çalışırken XML-RPC isteğinin 403 Forbidden dönmesi, test edilen adresten erişimin reddedildiğini gösterir. Bu sonuç tek başına bütün alternatif alan adlarının veya doğrudan sunucu adresinin de korunduğunu kanıtlamaz; kullanılıyorsa onları da yetkiniz dahilinde sınayın. İsteklerin erişim günlüğünde hangi durum koduyla göründüğüne bakın.
Uç nokta 200 ya da XML-RPC’ye ait bir yanıt veriyorsa engel beklenen biçimde uygulanmamış olabilir. Doğru alan adını ve WordPress dizinini kullandığınızı, dosyanın kaydedildiğini ve sunucunun Apache olup
.htaccess kurallarını işlediğini kontrol edin. 404 yanıtı ise test edilen adreste dosyanın bulunmadığını veya başka bir katmanın isteği farklı işlediğini gösterebilir; tek başına kuralın çalıştığını kanıtlamaz.Sorun sürerse barındırma sağlayıcısına test edilen yol, denemenin zamanı, görülen HTTP durum kodu ve varsa ilgili hata günlüğü kaydıyla başvurun;
xmlrpc.php erişiminin hangi katmanda engellendiğinin doğrulanmasını isteyin. Günlük paylaşırken parola, oturum bilgisi ve diğer hassas verileri çıkarın.XML-RPC kullanılıyorsa korumayı daraltın
Tam engel yerine sunucu veya güvenlik duvarında yalnız gerekli istemcilere erişim tanıyın. Sabit kaynak adresleri yoksaxmlrpc.php yoluna gelen istekler için hız sınırlaması ve şüpheli trafiği engelleme kuralları uygulayın; eşiği meşru uygulamanızın çalışma düzenini bozmayacak şekilde belirleyin. Ardından uygulamayla gerçek bir bağlantı veya yayınlama denemesi yapın ve engellenen istek kayıtlarını izleyin. Hız sınırlaması tek başına başarılı parola denemelerini bütünüyle önlemez; hesaplarda güçlü ve benzersiz parolalar kullanın.Yalnız
xmlrpc_enabled filtresini kapatmak, XML-RPC uç noktasını bütünüyle kapatmaz. Bu filtre kimlik doğrulaması gerektiren XML-RPC yöntemlerini etkiler; pingback gibi kimlik doğrulaması gerektirmeyen yöntemleri veya dosyaya gelen istekleri genel olarak engellemez. Amacınız uç noktayı tamamen kapatmaksa sunucu veya güvenlik duvarı düzeyindeki engeli kullanın.
Moderatör tarafında düzenlendi: