BT Profesyonelleri ve Kullanıcılar için ipuçları
Wordpress

WordPress – XMLRPC.PHP Güvenlik Sorunu

“XML-RPC, HTTP üzerinden veri taşıyan ve XML ile kodlanmış bir uzaktan prosedür çağrısıdır. Tehdit Aktörleri, ‘wp.getUsersBlogs’ API çağrısıyla bir WordPress web sitesinde kullanıcı kimlik bilgilerini almak için bu arayüzü kötüye kullanabilir.”

Rutin güvenlik taramaları sırasında yönetiminden sorumlu olduğu web sitelerinden birinde yukarıdaki gibi bir bildirimle bir güvenlik açığı olduğunu öğrendim. Öğrendiğim detayları ve çözüm yollarını da paylaşmak istedim.

WordPress’in kök dizininde bulunan dosya xmlrpc.php, XML-RPC protokolünü kullanarak uzaktan bağlantı kurulmasını sağlar. Üçüncü parti uygulamalar, bu protokolü kullanarak WordPress sitesine bağlanarak içerik yayınlama, yorum yapma ve diğer görevleri gerçekleştirebilir. Bu dosya, özellikle mobil uygulamalar, içerik yönetim araçları ve bazı eklentiler tarafından WordPress sitenizle bağlantı kurar.

Özellikleri:

  • Uzaktan Erişim Sağlar: xmlrpc.php dosyası, uzak bir istemcinin WordPress sitesine erişmesini sağlar. Bu, özellikle WordPress mobil uygulaması veya diğer içerik yönetim araçlarının kullandığı bir durumdur.
  • Pingback ve Trackback İşlemleri: Trackback işlemleri de XML-RPC gerektirir. Başka bir sitenin içeriğinize bağlantı eklediğini belirten “pingback” uyarılarını almanızı sağlar.

Güvenlik Açısından xmlrpc.php

Bu dosya bazı güvenlik sorunları yaratabilir; özellikle xmlrpc.php üzerinden brute-force saldırıları düzenlenebilir. Dosya çok sayıda istek alırsa sunucunun kaynaklarını tüketebilir ve sitenin yavaşlamasına ya da çökmesine neden olabilir.

Güvenliği Sağlamak İçin Alınabilecek Önlemler:

  • Erişimi Kısıtlamak: Eğer xmlrpc.php dosyasını kullanmıyorsanız, erişimini tamamen kısıtlayabilirsiniz. Bu, .htaccess dosyasına belirli bir kod ekleyerek yapılabilir.
  • Güvenlik Eklentileri Kullanmak: Bazı WordPress güvenlik eklentileri (Wordfence, iThemes Security gibi) XML-RPC isteklerini kontrol altında tutmanıza yardımcı olabilir.
  • API Tercihi: Eğer uzak bağlantıya ihtiyacınız varsa ve XML-RPC’yi devre dışı bırakmak istiyorsanız, REST API kullanabilirsiniz; REST API, XML-RPC’ye göre daha güvenlidir ve daha modern bir yapıdır.

WordPress’te xmlrpc.php dosyasına erişimi kısıtlamak, sitenizi istenmeyen saldırılardan ve kaynak tüketiminden korumaya yardımcı olabilir. Aşağıda bu dosyaya erişimi kısıtlamak için izleyebileceğiniz birkaç farklı yöntem şunlardır;

1. .htaccess Dosyası ile Erişimi Engelleme

Eğer siteniz Apache sunucusu kullanıyorsa .htaccess dosyasına birkaç satır kod ekleyerek xmlrpc.php dosyasına erişimi tamamen engelleyebilirsiniz. Bu dosyayı WordPress’in kurulu olduğu kök dizinde bulabilirsiniz.

.htaccess dosyasına şu kodu ekleyin:

<Files xmlrpc.php>
    Order Deny,Allow
    Deny from all
</Files>

Bu kod, xmlrpc.php dosyasına yapılan tüm erişimleri engeller.

Not: Bu yöntemle xmlrpc.php dosyasına tam erişimi engellediğiniz için, eğer WordPress mobil uygulaması veya diğer XML-RPC kullanan uygulamalarla erişim sağlamanız gerekiyorsa, bu yöntem uygun olmayabilir.

2. Belirli IP Adreslerine İzin Verme

Eğer yalnızca belirli IP adreslerinin xmlrpc.php dosyasına erişmesine izin vermek istiyorsanız, .htaccess dosyasına şu şekilde bir kod ekleyebilirsiniz:

<Files xmlrpc.php>
    Order Deny,Allow
    Deny from all
    Allow from 123.45.67.89
</Files>

Bu kodda 123.45.67.89 yerine izin vermek istediğiniz IP adresini yazmalısınız. Bu yöntem, yalnızca izin verilen IP adreslerinin dosyaya erişmesine olanak tanır. Birden fazla IP eklemek isterseniz, her IP adresi için ayrı bir Allow from satırı ekleyebilirsiniz.

3. Güvenlik Eklentileri ile Erişimi Kısıtlama

WordPress güvenlik eklentileri, xmlrpc.php dosyasına yapılan istekleri denetlemenize yardımcı olabilir. Güvenlik eklentisi kullanarak hem saldırılardan korunabilir hem de gerekli olduğunda XML-RPC erişimini kapatıp açabilirsiniz. İşte bazı popüler güvenlik eklentileri:

  • Wordfence Security: Wordfence, xmlrpc.php dosyasına yapılan saldırıları izleyip engelleyebilir. Eklenti ayarlarında XML-RPC işlevselliğini kapatma seçeneği de bulunur.
  • iThemes Security: iThemes Security eklentisi ile XML-RPC’yi devre dışı bırakabilir veya sınırlayabilirsiniz. Eklenti panelinden “XML-RPC” ayarlarına gidip ilgili ayarı kapatabilirsiniz.
  • Disable XML-RPC Plugin: Bu eklenti, XML-RPC işlevini tamamen devre dışı bırakır. Sadece XML-RPC işlevini devre dışı bırakmak istiyorsanız basit ve etkili bir çözüm olabilir. Ben bunu tercih ettim, gerçekten de çok basit birkaç adım ayarla erişimi engellemek mümkün.

4. Cloudflare veya Sunucu Seviyesinde Güvenlik Sağlama

Eğer siteniz Cloudflare gibi bir güvenlik ve hızlandırma servisi kullanıyorsa, Cloudflare üzerinden xmlrpc.php dosyasına gelen istekleri engelleyebilirsiniz:

  • Cloudflare’de “Firewall Rules” bölümüne gidin ve yeni bir kural oluşturun.
  • xmlrpc.php dosyasına erişim için bir engelleme kuralı ayarlayın.

Aynı şekilde sunucu tarafında güvenlik önlemleri alarak da xmlrpc.php dosyasına erişimi kısıtlayabilirsiniz. Bu işlemler için sunucu sağlayıcınızla iletişime geçebilirsiniz.

5. xmlrpc.php Dosyasını Devre Dışı Bırakma (Kodu Düzenleyerek)

Son olarak, xmlrpc.php dosyasının işlevselliğini tamamen devre dışı bırakmak için WordPress’e küçük bir kod ekleyebilirsiniz. WordPress’in functions.php dosyasına şu kodu ekleyin:

add_filter('xmlrpc_enabled', '__return_false');

Bu kod, WordPress’in XML-RPC işlevini devre dışı bırakır ve dosyaya yapılan isteklere yanıt vermez.

Hangi Yöntemi Seçmeli?

  • Eğer XML-RPC işlevine hiç ihtiyacınız yoksa, .htaccess dosyasını kullanarak erişimi tamamen kapatabilirsiniz.
  • Belirli bir uygulama veya cihazın XML-RPC erişimini sağlamanız gerekiyorsa, izin verilen IP adreslerini ekleyebilirsiniz.
  • Eğer esneklik istiyorsanız ve farklı güvenlik katmanları eklemek istiyorsanız, güvenlik eklentilerinden birini tercih edebilirsiniz.

Bir yorum ekleyin

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir