WordPress'te xmlrpc.php Hakkında Eksiksiz Bir Kılavuz (Nedir, Güvenlik Riskleri, Nasıl Devre Dışı Bırakılır)

Yayınlanan: 2020-07-06

XML-RPC WordPress spesifikasyonu, farklı sistemler arasındaki iletişimi standart hale getirmek için geliştirilmiştir; bu, WordPress dışındaki uygulamaların (diğer blog platformları ve masaüstü istemcileri gibi) WordPress ile etkileşime girebileceği anlamına gelir.

Bu spesifikasyon, başlangıcından bu yana WordPress'in bir parçası olmuştur ve çok faydalı bir iş çıkarmıştır. O olmasaydı, WordPress internetin geri kalanından ayrı olarak kendi silosunda olurdu.

Ancak, xmlrpc.php'nin dezavantajları vardır. WordPress sitenize güvenlik açıkları getirebilir ve artık WordPress'i diğer uygulamalara açma konusunda çok daha iyi bir iş çıkaran WordPress REST API'sinin yerini almıştır.

Bu gönderide, xmlrpc.php'nin ne olduğunu, neden devre dışı bırakmanız gerektiğini açıklayacağız ve WordPress sitenizde çalışıp çalışmadığını belirlemenize yardımcı olacağız.

Hazır? Hadi dalalım!

xmlrpc.php Nedir?

XML-RPC, WordPress ve diğer sistemler arasında iletişimi sağlayan bir özelliktir. Bunu, aktarım mekanizması olarak HTTP'yi ve kodlama mekanizması olarak XML'i kullanarak bu iletişimleri standartlaştırarak yaptı.

XML-RPC, WordPress'ten önce gelir: 2003'te WordPress'i oluşturmak için çatallanan b2 blog yazılımında mevcuttu. Sistemin arkasındaki kod, sitenin kök dizininde xmlrpc.php adlı bir dosyada saklanır. Ve XML-RPC büyük ölçüde modası geçmiş olmasına rağmen hala orada.

WordPress'in ilk sürümlerinde, XML-RPC varsayılan olarak kapalıydı. Ancak 3.5 sürümünden beri varsayılan olarak etkindir. Bunun ana nedeni, WordPress mobil uygulamasının WordPress kurulumunuzla konuşmasına izin vermekti.

WordPress mobil uygulamasını 3.5 sürümünden önce kullandıysanız, uygulamanın içerik gönderebilmesi için sitenizde XML-RPC'yi etkinleştirmeniz gerektiğini hatırlıyor olabilirsiniz. Bunun nedeni, uygulamanın WordPress'i çalıştırmamasıydı; bunun yerine, WordPress sitenizle xmlrpc.php kullanarak iletişim kuran ayrı bir uygulamaydı.

Ancak XML-RPC'nin kullanıldığı yalnızca mobil uygulama değildi: WordPress ve diğer blog platformları arasında iletişime izin vermek için de kullanıldı, geri izleme ve geri pinglere olanak sağladı ve kendi kendine barındırılan bir WordPress'i birbirine bağlayan Jetpack eklentisini güçlendirdi. siteyi WordPress.com'a çevirin.

Ancak REST API, WordPress çekirdeğine entegre edildiğinden, bu iletişim için artık xmlrpc.php dosyası kullanılmamaktadır. Bunun yerine, REST API, WordPress mobil uygulaması, masaüstü istemcileri, diğer blog platformları, WordPress.com (Jetpack eklentisi için) ve diğer sistem ve hizmetlerle iletişim kurmak için kullanılır. REST API'nin etkileşimde bulunabileceği sistem aralığı, xmlrpc.php tarafından izin verilenden çok daha fazladır. Ayrıca, çok daha fazla esneklik var.

REST API, XML-RPC'nin yerini aldığından, şimdi sitenizde xmlrpc.php'yi devre dışı bırakmalısınız. Neden görelim.

Neden xmlrpc.php'yi Devre Dışı Bırakmalısınız?

WordPress sitenizde xmlrpc.php'yi devre dışı bırakmanızın ana nedeni, güvenlik açıkları oluşturması ve saldırıların hedefi olabilmesidir.

Artık WordPress dışında iletişim kurmak için XML-RPC'ye ihtiyaç kalmadığına göre, onu aktif tutmak için hiçbir neden yok. Bu nedenle sitenizi devre dışı bırakarak daha güvenli hale getirmek akıllıca olacaktır.

xmlrpc.php bir güvenlik yükümlülüğüyse ve artık bir iş yapmıyorsa, neden WordPress'ten tamamen kaldırılmadı?

Bunun nedeni, WordPress'in temel özelliklerinden birinin her zaman geriye dönük uyumluluk olacak olmasıdır. Sitenizi iyi yönetiyorsanız, WordPress'i ve ayrıca eklentileri veya temaları güncel tutmanın çok önemli olduğunu bileceksiniz.

Ancak, WordPress sürümlerini güncellemek istemeyen veya yapamayan web sitesi sahipleri her zaman olacaktır. REST API'sinden önceki bir sürümü çalıştırıyorlarsa, yine de xmlrpc.php'ye erişmeleri gerekir.

Belirli güvenlik açıklarına daha ayrıntılı olarak bakalım.

XML-RPC Pingback'leri Yoluyla DDoS Saldırıları

xmlrpc.php'nin etkinleştirdiği işlevlerden biri pingback ve trackback idi. Başka bir blog veya site içeriğinize bağlantı verdiğinde sitenizdeki yorumlarda görünen bildirimlerdir.

Bu iletişimi mümkün kılan XML-RPC özelliğiydi, ancak bunun yerini REST API aldı (daha önce gördüğümüz gibi).

Sitenizde XML-RPC etkinse, bir bilgisayar korsanı, sitenize kısa sürede çok sayıda pingback göndermek için xmlrpc.php'yi kullanarak potansiyel olarak sitenize bir DDoS saldırısı başlatabilir. Bu, sunucunuzu aşırı yükleyebilir ve sitenizi devre dışı bırakabilir.

XML-RPC Üzerinden Kaba Kuvvet Saldırıları

xmlrpc.php her istekte bulunduğunda, kimlik doğrulama için kullanıcı adını ve parolayı gönderir. Bu, önemli bir güvenlik yükümlülüğü sunar ve REST API'nin yapmadığı bir şeydir. Aslında, REST API, kullanıcı adları veya parolalar yerine kimlik doğrulama için belirteçler gönderen OAuth'u kullanır.

xmlrpc.php her istekte kimlik doğrulama bilgisi gönderdiğinden, bilgisayar korsanları sitenize erişmeyi denemek için bunu kullanabilir. Bunun gibi bir kaba kuvvet saldırısı, içerik eklemelerine, kod silmelerine veya veritabanınıza zarar vermelerine izin verebilir.

Bir saldırgan sitenize, her biri farklı bir kullanıcı adı ve şifre çiftine sahip yeterli sayıda istek gönderirse, sonunda doğru olanı bulup sitenize erişmelerine izin verme şansları vardır.

Bu nedenle, harici sistemlerle iletişim kurmak için REST API kullanan WordPress'in güncel bir sürümünü çalıştırıyorsanız, xmlrpc.php'yi devre dışı bırakmalısınız . Gerekli değildir ve sitenizi savunmasız hale getirebilir.


xmlrpc.php WordPress Sitenizde Çalışıyor mu?

Yapmanız gereken ilk şey, WordPress sitenizde xmlrpc.php'nin çalışıp çalışmadığını belirlemektir.

Bu, dosyanın orada olup olmadığını kontrol etmek için basit bir durum değildir: her WordPress kurulumunun bir parçasıdır ve XML-RPC devre dışı bırakılsa bile mevcut olacaktır.

Sitenizde xmlrpc.php'nin etkin olup olmadığını kontrol etmek için WordPress XML-RPC Doğrulama Hizmetini kullanın. Bu, sitenizi kontrol edecek ve xmlrpc.php'nin etkin olup olmadığını size söyleyecektir.

WordPress XML-RPC Doğrulama Hizmeti
WordPress XML-RPC Doğrulama Hizmeti

İşte bu siteyi serviste kontrol ettiğimde aldığım sonuç.

Kinsta XML-RPC kontrolü
Kinsta XML-RPC kontrolü

Bu, xmlrpc.php'nin kinsta.com'da devre dışı bırakıldığını gösterir. Öyleyse, kontrolü çalıştırır ve sitenizde xmlrpc.php'nin hala etkin olduğunu keşfederseniz, onu nasıl kapatırsınız?

xmlrpc.php Nasıl Devre Dışı Bırakılır

xmlrpc.php'yi devre dışı bırakmanın üç yolu vardır:

Her birine ayrı ayrı bir göz atalım.

Bir Eklenti ile xmlrpc.php Nasıl Devre Dışı Bırakılır

Bunu yapmanın en kolay yolu xmlrpc.php'yi devre dışı bırakmak için bir eklenti kurmaktır. Disable XML-RPC eklentisi onu tamamen devre dışı bırakacaktır. İşte nasıl kullanacağınız.

Başlangıç ​​noktam, xmlrpc.php'nin etkinleştirildiği kendi web sitem. Bunu yaptığım kontrolle görebilirsiniz:

Rachel McCollin web sitesi - XML-RPC kontrolü
Rachel McCollin web sitesi – XML-RPC kontrolü

Eklentiyi WordPress yöneticisindeki Eklentiler ekranınızdan yükleyin ve etkinleştirin.

Başka bir şey yapmanıza gerek yok: eklentiyi etkinleştirmek, onun XML-RPC'yi devre dışı bırakmasına neden olacaktır. Şimdi sitemde bir kontrol çalıştırırsam farklı bir sonuç alıyorum:

Rachel McCollin web sitesi - ikinci XML-RPC kontrolü
Rachel McCollin web sitesi – ikinci XML-RPC kontrolü

Bu kadar basit!

Bir Eklenti ile XML-RPC Pingback'lerini Devre Dışı Bırakın

Ama ya xmlrpc.php'nin bazı yönlerini devre dışı bırakmak ve diğerlerini devre dışı bırakmak istiyorsanız? Disable XML-RPC Pingback eklentisi, yalnızca pingback işlevini devre dışı bırakmanıza olanak tanır, yani ihtiyacınız olduğunda XML-RPC'nin diğer özelliklerine erişmeye devam edebilirsiniz.

Eklenti, Disable XML-RPC eklentisi ile aynı şekilde çalışır: sadece kurun, etkinleştirin ve çalışacaktır.

Bir Eklenti ile XML-RPC ve REST API Etkinleştirmesini Yapılandırın

Sitenizde hem xmlrpc.php hem de REST API'nin nasıl yapılandırıldığı konusunda daha ayrıntılı kontrol istiyorsanız, REST XML-RPC Veri Denetleyicisi eklentisini yükleyebilirsiniz.

Bu eklentiyi kurup etkinleştirdikten sonra, Ayarlar > REST XML-RPC Veri Denetleyicisi'ne gidin ve XML-RPC sekmesine tıklayın.

REST XML-RPC Veri Denetleyicisi
REST XML-RPC Veri Denetleyicisi

Bu, sitenizde xmlrpc.php'nin hangi yönlerinin etkin olduğunu tam olarak yapılandırmanıza olanak tanır.

Son derece hızlı, güvenli ve geliştirici dostu bir barındırmaya mı ihtiyacınız var? Kinsta, WordPress geliştiricileri düşünülerek oluşturulmuştur ve birçok araç ve güçlü bir gösterge panosu sağlar. Planlarımıza göz atın

Alternatif olarak, tamamen kapatabilirsiniz. Ayrıca REST API üzerinde kontrol sahibi olmak istiyorsanız, eklenti size bunun için başka bir sekme verir.

Eklenti Olmadan xmlrpc.php Nasıl Devre Dışı Bırakılır

Sitenize başka bir eklenti yüklemek istemiyorsanız, bir filtreye veya .htaccess dosyanıza bazı kodlar ekleyerek xmlrpc.php'yi devre dışı bırakabilirsiniz. Her iki yönteme de bakalım.

Bir Filtre aracılığıyla xmlrpc.php'yi devre dışı bırakın

Buradaki bir seçenek, xmlrpc.php'yi devre dışı bırakmak için xmlrpc_enabled filtresini kullanmaktır. Bu işlevi bir eklentiye ekleyin ve sitenizde etkinleştirin:

 add_filter( 'xmlrpc_enabled', '__return_false' );

Bunu tema işlevleri dosyanıza ekleyebilirsiniz, ancak bir eklenti yazmak daha iyi bir uygulamadır.

Diğer seçenek, Apache kullanan barındırma sağlayıcılarında bulunan .htaccess dosyanızı sitenizin sunucusuna FTP veya cPanel aracılığıyla bağlanarak düzenlemekle ilgilidir.

.htacess Dosyası aracılığıyla xmlrpc.php'yi devre dışı bırakın

.htaccess dosyanıza şu kodu ekleyin:

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

Herhangi bir sorunla karşılaşmanız durumunda, bunu yapmadan önce eski dosyanın bir kopyasını aldığınızdan emin olun.

Barındırma Sağlayıcınızın xmlrpc.php'yi Devre Dışı Bırakmasını Sağlayın

Alternatif olarak, bazı barındırma sağlayıcıları, bir saldırı algılanırsa xmlrpc.php'yi devre dışı bırakır.

Kinsta'da, XML-RPC yoluyla bir saldırı algılandığında, Nginx.config dosyasına otomatik olarak bir kod parçacığı eklenir:

 location ~* ^/xmlrpc.php$ { return 403; }

Bu, bir 403 hatası üretecek ve saldırıyı kendi yolunda durduracaktır.

Bunu kendiniz yapıyorsanız, yukarıdaki yöntemlerden birini kullanmak en iyisidir. Ancak bunu yapmadan önce, her zaman önce barındırma sağlayıcınıza danışın.

xmlrpc.php'yi Ne Zaman Etkinleştirmeniz Gerekir?

WordPress sitenizde xmlrpc.php'yi etkinleştirmeniz gereken veya tamamen devre dışı bırakmamanız gereken bazı durumlar olabilir.

Bunlar:

  • REST API'sini çalıştırmıyorsunuz (önerilmez, ancak bazı durumlarda gerekli) ancak WordPress siteniz ve diğer sistemler arasında iletişim kurmanız gerekiyor.
  • WordPress'i 4.4 veya daha yüksek bir sürüme güncelleyemezsiniz, bu nedenle REST API'sine erişiminiz yok. Bunun nedeni, barındırma kurulumunuzdaki kısıtlamalar (bu durumda barındırma sağlayıcısını değiştirirdim) veya tema veya eklentilerin uyumsuzluğu (bu durumda bunları değiştirir veya güncellerdim) olabilir.
  • WP REST API'sine erişemeyen ancak XML-RPC'ye erişebilen harici bir uygulamayla çalışıyorsunuz (uzun vadede, o uygulamayı güncellemenizi veya REST uyumlu bir uygulamaya geçmenizi öneririm).

Bu kadar! Bunların hiçbiri, XML-RPC belirtimini açık tutmak için özellikle iyi nedenler değildir.

Hâlâ WordPress'te olmasının tek nedeni geriye dönük uyumluluktur ve onu yalnızca eski sistemlerle çalışıyorsanız kullanırsınız. Sitelerini güncel tutmak ve en son teknolojiyle çalışmak isteyen herkes için xmlrpc.php'yi devre dışı bırakmak doğru yoldur.

XML-RPC, bir zamanlar WordPress'in önemli bir parçasıydı. Şimdi bu bir güvenlik riskini temsil ediyor - Bu kılavuz, sitenizde onu tam olarak nasıl devre dışı bırakacağınızı gösterecektir. Tweetlemek için tıklayın

Özet

XML-RPC spesifikasyonu, WordPress'in harici sistemler ve uygulamalarla iletişim kurması için bir araç olarak, WordPress oluşturulmadan önce geliştirilmiştir. Kendine özgü güvenlik kusurları vardır ve sitenizi saldırılara karşı savunmasız hale getirebilir.

Artık REST API, sitenizin diğer uygulamalarla iletişim kurmasına izin verdiğine göre, xmlrpc.php'yi güvenle devre dışı bırakabilirsiniz. Yukarıdaki adımları izlerseniz, devre dışı bırakarak sitenizin güvenliğini artıracaksınız.