Basit bir şekilde Google’da “WordPress XML-RPC” araması yaptığınızda 2.67 milyon arama sonucu çıkıyor. Arama sonuçlarında ortaya çıkan sayfaların büyük bir kısmı WordPress XML-RPC‘yi nasıl devredışı bırakılacağını anlatan WordPress Güvenlik ile ilgili makalelerden oluşmakta.
XML-RPC saldırıları günümüzde daha yaygın hale gelmeye başladığı için web site sahipleri ve yöneticileri WordPress sitelerini koruma konusunda giderek daha fazla endişe duymaya başladı. XML-RPC özünde belirli işlemler için kullanmak faydalı olsa da doğru bir şekilde yönetilmediği ve kullanılmadığı zaman güvenlik açıklarının oluşmasına sebebiyet verebilmektedir.
Bu blog yazımızda WordPress sitenizin güvenliğini sağlamlaştırmak için xml-rpc’yi eklentili ve eklentisiz olarak nasıl devredışı bırakacağınızı anlattık. Sizler için hem eklentili hemde eklentisiz olarak kapsamlı bir güvenlik rehberi hazırladık. Ek olarak, XML-RPC‘nin sitenizde çalışıp, çalışmadığını, aktif veya kapalı olup olmadığını test edebileceğiniz bir test aracını da sizlerle paylaşacağız.
Ama önce bilmeniz gerekenler var.
WordPress’te XML-RPC Nedir?
XML-RPC, WordPress kullanıcılarının harici web uygulamaları, araçları ve hizmetleri WordPress siteleriyle entegre edip, kullanabilmelerini sağlayan bir WordPress API sistemidir. Format olarak XML yapısını kullanır ve sistemler arasında iletişimi sağlar. XML, JSON formatına kıyasla daha az kullanılan bir format olsa da WordPress XML-RPC ilk tanıttığında XML’in daha iyi ve güvenli olacağını düşünüyordu.
XML-RPC kelimesinde “RPC ” kelimesi Remote Procedure Call kelimesinin kısaltmasıdır. Türkçesi, Uzaktan Yordam Çağrısı olan bu protokol bir sistemin bir başka sistem ile bağlantı kurulmasına ve belirli eylemlerin gerçekleştirilmesi için kullanılan bir API sistemidir. XML-RPC, REST API ve Graph API gibi yeni nesil API protokolleri ortaya çıkmadan önce benzer işlevselliğe ulaşmanın bir yolu olarak hizmet ediyordu.
WordPress’te XML-RPC Neden Güvenlik Sorunu Oluşturmakta?
İlk başlarda internet siteleri ile kesintisiz bir iletişim sağlamak amacıyla kullanılan XML-RPC zamanla istismar edilebilir yapısı nedeniyle WordPress siteleri için bir güvenlik sorunu olmaya başladı.
Dijital korsanlar XML-RPC’yi istismar edebileceklerini keşfettiklerinde internet sitelerinin erişimlerini engellemek ve hattta tamamen durdumak için XML-RPC’yi kullanmaya başladılar. XML-RPC, Brute Force (Kaba Kuvvet) saldırıları için dijital korsanların en çok tercih ettiği bir ağ geçidi oldu. Bu dijital korsanlar, WordPress sitelerine yetkisiz erişim sağlamak amacıyla sistematik olarak çeşitli kullanıcı adı ve şifre kombinasyonlarını denemeye çalışır.
Ayrıca, dijital korsanlar DDoS saldırıları içinde xmlrpc.php dosyasını kullanmaktalar.Birden fazla kaynaktan xmlrpc.php dosyasına ping atarak dosyanın bulunduğu sunucuların aşırı yüklenmesine ve bu aşırı yüklenmenin sonucunda sunucuların gelen isteklere yanıt veremez hale gelmekte.
Aktif olarak ihtiyaç duyulmadığında XML-RPC’yi devre dışı bırakmak daha akıllıca olacaktır. Bunu yaparak, web sitesi sahipleri savunmalarını güçlendirebilir, yetkisiz erişim riskini azaltabilir, kendileri ve kullanıcıları için daha güvenli bir çevrimiçi ortam yaratabilir.
WordPress’te XML-RPC Eklentisiz Nasıl Devredışı Bırakılır? (Apache ve Nginx Sunucularda)
XML-RPC’yi devre dışı bırakmak, xmlrpc.php dosyasına erişme girişimlerini engelleyerek WordPress uygulamasını potansiyel tehditlere karşı korur. WordPress’in güncel versiyonlarında, harici sistemlerle iletişim öncelikle REST API gibi gelişmiş API’lere dayanır. Sonuç olarak, kaba kuvvet (brute force) ve DDoS saldırılarının neden olduğu güvenlik açıklarını azaltmak için XML-RPC‘yi tamamen devre dışı bırakmak akıllıca olacaktır.
Birazdan size Apache ve Nginx tabanlı sunucularda manuel olarak XML-RPC’yi nasıl devredışı bırakacağınızı anlatacağız.
Ancak, işlemelere geçmeden önce her zaman olduğu gibi sitenizin tam yedeğini almayı unutmayın. Oluşabilecek bir hata ve yanlış işlem sonucunda site erişiminizi kaybetmeniz durumunda aldığınız yedeğe geri dönüş yaparak erişimi tekrar sağlayabilirsiniz.
Apache’de XML-RPC Nasıl Devredışı Bırakılır?
Apache’de XML-RPC’yi devre dışı bırakmak için web sitenizin kök dizinindeki .htaccess dosyasına bir kod bloğu ekleyerek bunu hızlı bir şekilde yapabilirsiniz.
Bu görevi kendinizin gerçekleştirmesi konusunda emin değilseniz uzman bir kişiden yardım isteyin.
Ancak, aşağıda WordPress’te .htaccess dosyasına nasıl erişeğinizi görseller ile adım adım anlatacağız.
.htaccess Dosyasını Bulun
.htaccess dosyasını erişebilmek için iki farklı yöntem bulunmakta. Bunlar cPanel sunucu yönetim paneli ile bir diğeri ise FTP kullanarak erişmek.
1) cPanel Yöntemi:
WordPress Hosting sağlayıcınızın size sağlamış olduğu sunucu yönetim paneli olan cPanel hesabınızda oturum açın. Açılan cPanel penceresinde Dosya Yöneticisi (File Manager) bulun ve tıklayın.
Daha sonra sol tarafta ki listenene klasörlerden public_html klasörüne tıklayın ve sağ tarafta WordPress sitenize ait dosyalar listenecektir. Buradan dosya ismi .htaccess olan dosyayı bulun.
Not: Eğer, .htaccess dosyasını göremiyorsanız, sağ üst kısımdan Ayarlar butonuna tıklayın, açılan açılır pencereden Gizli Dosyaları Göster (dotfiles) seçeneğine tik koyun ve Save butonuna tıklayın. Bunu yaptığınızda .htaccess dosyasını görebileceksiniz.
2) FTP Yöntemi
» İlginizi Çekebilir: WordPress’te Dosya Yüklemek İçin FTP Nasıl Kullanılır?
WordPress Hosting sağlayıcınızın size sağlamış olduğu FTP bilgileri ile FileZilla adlı ftp programı ile sitenizin kök dizinine bağlanın ve .htaccess dosyasını bulun.
Her iki yöntemde .htacess dosyasını bilgisayarınıza indirin ve herhangi bir kod düzenleme editörü (Tavsiyemiz: VS Code) ile dosyayı açın ve bir sonraki adımı uygulayın.
.htaccess Dosyasını Düzenleyin
Bir önceki adımdan bahsettiğimiz adımlardan bulduğunuz .htaccess dosyasınız bir kod editörü yardımı ile açın ve düzenleyin. Dosyanın içerisine aşağıda ki kod bloğunu ekleyin ve kaydedin.
Aşağıda ki kodu .htaccess dosyanızda en son satıra ya da en üst satıra ekleyin.
# xmlrpc.php Gelen İstekleri WordPress'te Engelleme
<files xmlrpc.php>
order deny,allow
deny from all
</files>
ApacheDeğişiklikleri yaptıktan sonra .htaccess dosyasını kayıt edin ve bulduğunuz yere tekrar bu dosyayı yükleyin.
Artık xmlrpc.php dosyasına gelen her türlü istek sunucunuz tarafından rededilecektir. Tarayıcının adres satırından ya da diğer herhangi bir uygulama aracı ile bu dosyaya artık erişim mümkün değildir. Eğer ki, ileri de bu dosyayı kullanma ihtiyacınız oluşur ise .htaccess dosyasından bu kod bloğunu silmeniz yeterli olacaktır.
NGINX’de XML-RPC Nasıl Devredışı Bırakılır?
Nginx’te XML-RPC’yi devredışı bırakmak için basit .htaccess yöntemine göre farklı bir yaklaşıma ihtiyaç vardır.
- Nginx sunucu yapılandırma dosyası olan /etc/nginx/nginx.conf dosyasını bulun.
- nginx.conf dosyasını bulduktan sonra aşağıda ki kod satırını location komutlarınızın bulunduğu ilgili satıra ekleyin.
Location = /xmlrpc.php {
deny all;
}
Nginx- Daha sonra dosyayı kaydedin ve nginx sunucusunu yeniden başlatın. İşlemin etkili olabilmesi biraz zaman alacaktır.
Eklentisiz olarak XML-RPC’yi devredışı bırakmak konusunda zorlanan ya da risk almak istemeyen site sahiplerinin en çok tercih ettiği yöntem olan eklenti kullanarak bu işi çözmektir. Birçok ihtiyaç için kullanılan WordPress Eklentileri, XML-RPC’yi devredışı bırakmak içinde mevcut.
»İlginizi Çekebilir: WordPress’te Eklenti Nasıl Kurulur?
Tamamen Devredışı Bırakmak İçin: XML-RPC’yi sitenizde tamamen devredışı bırakmak için kullanabileceğiniz iki adet eklenti bulunmakta. Bunlar; Disable XML-RPC-API ve Disable XML-RPC
Kismi Olarak Devredışı Bırakmak İçin: XML-RPC’nin Pingback özelliğini devredışı bırakarak güvenli zafiyetini önleyebilirsiniz. Geri kalan özellikler engellenmeden kullanılabilir halde olacaktır. Bunun için kullanabileceğiniz eklenti ise: Disable XML-RPC Pingback eklentisidir.
Eklenti kullanarak XML-RPC’yi devredışı bırakabilirsiniz. Ancak, WordPress Güvenlik eklentilerini kullanmanın bazı dezavantajları vardır. Bu eklentiler sistem kaynaklarını tüketebilir ve ek kod yürütme nedeniyle potansiyel olarak site performansınızı etkileyebilirler.
Üstelik yalnızca uygulama düzeyinde güvenlik sunarlar ve optimum performansı sürdürmek için sürekli yönetim gerektirirler. Bazı güvenlik eklentileri, özellikle oturum açma işlevselliği açısından da risk oluşturabilir.
Bu nedenle, bilinçli bir karar vermek için eklentilerin kullanım kolaylığı ile potansiyel performans ve güvenlik sonuçları arasındaki dengelerin dikkatli bir şekilde değerlendirilmesi gereklidir.
Sitenizde XML-RPC’nin Aktif veya Devredışı Olup Olmadığını Test Etme
XML-RPC’yi devredışı bıraktıktan sonra işlemlerin başarılı olup olmadığını doğrulamak son derece önemlidir. XML-RPC varsayılan olarak tüm WordPress sitelerinde etkindir, bu nedenle xmlrpc.php dosyasını devredışı bıraktıktan sonra durumunu kontrol etmek gerekir.
xmlrpc.php dosyasının durumunu kontrol etmek için XMLRPC Blog adlı aracı kullanabilirsiniz. Tek yapmanız gereken site adresinizi yazmak ve Check butonuna tıklamaktır.
Eğer aşağıda ki görselde ki gibi bir sonuç gösterir ise sitenizde XML-RPC aktif durumda demektir. Eğer ikinci görselde ki gibi bir mesaj çıkar ise XML-RPC sitenizde devredışı durumda demektir.
Son olarak, xmlrpc.php’nin etkinleştirilmesi, eski sürüm sistemlerle iletişim veya WordPress’in güncellenmesinde kısıtlamalarla karşılaşılması gibi belirli durumlarla sınırlı olmalıdır.
Ancak genel olarak xmlrpc.php’yi devre dışı bırakmanız ve sitenizi en son teknolojiyle güncel tutmanız öneririz. Bununla birlikte, yalnızca xmlrpc.php’yi devre dışı bırakmak, WordPress sitenizi tüm güvenlik açıklarından tam olarak korumaz. Dijital korsanlar diğer güvenlik açıklarından yararlanmaya devam edebilir.
Bu nedenle sitenizi kaba kuvvet saldırılarına, XSS’ye, SQL enjeksiyonuna, kötü amaçlı yazılımlara, DDoS’a ve diğer WordPress güvenlik tehditlerine karşı korumak için diğer güvenlik tedbirlerinide almayı ihmal etmeyin.