Bugünkü rehberimizde xmlrpc.php nedir ve xmlrpc açığı sorununu ortadan kaldırabilmek için bu dosyayı nasıl devre dışı bırakabileceğiniz üzerinde duracağız. WordPress’in her daim sitenizle uzaktan etkileşime geçebilmeniz üzere tasarlanmış dahili özelliklere sahiptir. Mutlaka siz de bazen, yakınlarda bilgisayar olmadığında sitenize ulaşmak istemişsinizdir. Uzun bir süre boyunca, çözüm xmlrpc.php dosyasıydı. Fakat son zamanlarda bu dosya çözümden çok kendi başına bir sorun oluşturmaya başladı.
Yazımızın devamında tam olarak xmlrpc.php nedir ve oluşturulmuştur sorularına cevap vereceğiz. Aynı zamanda bu dosyanın oluşturduğu yaygın güvenlik açıklarını ve bu açıkları kendi WordPress sitemizde nasıl kapatacağımız hakkında da bilgi vereceğiz.
Xmlrpc.php Nedir?
XML-RPC, HTTP’nin bir tür taşıma mekanizması ve XML’nin kodlama mekanizması şeklinde çalışarak veri transferine olanak tanıyan bir WordPress özelliğidir. WordPress’in kendisi kapalı bir sistem olmadığından ve ara ara diğer sistemlerle iletişime geçmesi gerektiğinden, bu işi gerçekleştirmesi için xmlrpc.php dosyası düşünüldü.
Örneğin, bilgisayarınız yanınızda değil ve mobil cihazınızı kullanarak sitenizde yazı yayınlamak istediniz. Tam da bunun için xmlrpc.php dosyası sayesinde uzaktan erişim özelliğini kullanabilirsiniz.
Xmlrpc.php’nin çekirdek özellikleri sitenize bir akıllı telefonla ulaşabilmenizi sağlar, diğer sitelerden geri izleme ve pinglemeye olanak tanır ve jetpack eklentisiyle ilişkili çeşitli diğer işlevleri üstlenir.
Xmlrpc.php Niçin Oluşturuldu ve Nasıl Kullanıldı?
XML-RPC uygulaması WordPress’in henüz WordPress olmadığı günlere dayanıyor.
İnternetin ilk zamanlarında, bağlantılar inanılmaz derece yavaşken internette yazı yazma ve yayınlama çok daha zor ve zaman alan bir işlemdi. Tarayıcı üzerinde yazmak yerine, çoğu kişi offline olarak yazılarını hazırlar ardından bu içeriği kopyala yapıştır yöntemiyle internete taşırdı. Bu işlem hala ideal olmaktan uzak.
Çözüm (o zamanlarda), içeriğinizi hazırlayıp ardından yayınlayabilmek için bloğunuza bağlanan offline bir blog istemcisi oluşturmak oldu. Bu bağlantı XML-RPC aracılığıyla sağlandı. XML-RPC’nin basit sistemi oluşturulduğunda, ilk uygulamalar bu bağlantıyı kullanarak insanların WordPress sitelerine diğer cihazlardan ulaşabilmelerini sağladı.
Günümüzde XML-RPC
2008’de WordPress 2.6 sürümüyle birlikte XML-RPC’yi etkinleştirme veya devre dışı bırakma seçeneği eklendi. Ancak WordPress iPhone uygulamasının yayınlanmasıyla birlikte, XML-RPC desteği varsayılan olarak etkinleştirildi ve kapatma seçeneği ayarlardan kaldırıldı. Günümüzde bu durum hala geçerli.
Ancak bu dosyanın işlevselliği zaman içinde oldukça düştü ve dosya boyu 83kb’tan 3kb’a kadar geriledi, yani artık bir zamanlar olduğu kadar büyük bir rol oynamıyor.
XML-RPC Geleceği
Yeni WordPress API ile, XML-RPC’nin tamamen ortadan kaldırılmasını bekleyebiliriz. Günümüzde, bu yeni API hala deneme aşamasında ve sadece bir eklenti aracılığıyla etkinleştirilebiliyor.
Fakat, gelecekte API’in doğrudan WordPress çekirdeğine kodlanacağını bekleyebiliriz, bu sayede xmlrpc.php dosyasına ihtiyaç tamamen ortadan kalkmış olacaktır.
Yeni API kusursuz değil, ancak xmlrpc.php’nin çözdüğü sorunun altından kalkabilmek için çok daha güçlü ve güvenli bir yöntem.
Xmlrpc.php Dosyasını Niçin Devre Dışı Bırakmalısınız
XML-RPC’nin en büyük sorunu, ortaya çıkan güvenlik endişeleri. Sorun doğrudan XML-RPC ile alakalı değil ancak bu dosya kullanılarak nasıl sitenize brute force saldırıları yapılabileceği.
Elbette kendinizi aşırı güçlü şifrelerle ve WordPress güvenlik eklentileriyle koruyabilirsiniz. Ancak en iyi korunma yöntemi, basitçe bu dosyayı devre dışı bırakmaktır.
XML-RPC’nin geçmişte istismar edildiği başlıca iki zayıflığı bulunmaktadır.
İlki, sitenize erişim kazanmak için brute force saldırılarının kullanımı. Saldırgan xmlrpc.php dosyasını kullanarak şifre ve kullanıcı adı kombinasyonları deneme suretiyle sitenize erişim sağlamaya çalışıyor. Sadece bir komut kullanarak yüzlerce farklı şifre deneyebiliyorlar. Bu sayede genellikle brute force saldırılarını tespit ederek önüne geçebilen güvenlik araçlarını atlayabiliyorlar.
İkincisi, sitenizin bir DDoS saldırısıyla kapatılması. Ardından saldırganlar WordPress’deki pingback özelliğini kullanarak binlerce siteye eş zamanlı olarak geri pingleme gerçekleştiriyor. Xmlrpc.php’deki bu özellik, saldırganlara DDoS saldırısın dağıtımı için neredeyse sınırsız sayıda IP adresi sağlıyor.
XML-RPC’nin sitenizde çalışıp çalışmadığını kontrol etmek için XML-RPC Validator isimli aracı kullanabilirsiniz. Araç üzerinde sitenizi çalıştırın ve eğer bir hata mesajı alırsanız bu XML-RPC’nin aktif olmadığı anlamına gelir.
Eğer bir başarı mesajı alırsanız, xmlrpc-php dosyasını durdurmak için aşağıdaki iki yöntemden birini kullanabilirsiniz.
Yöntem 1: Eklentiler Aracılığıyla Xmlrpc.php Devre Dışı Bırakma
WordPress sitenizde XML-RPC’yi devre dışı bırakmak oldukça kolaydır.
Sadece WordPress admin panelinizden Eklentiler > Yeni Ekle bölümünü açın. Ardından arama kısmına Disable XML-RPC girin ve aşağıdaki gibi görünen eklentiyi yükleyin.
Eklentiyi etkinleştirin ve hazırsınız. Bu eklenti, XML-RPC’yi devre dışı bırakmak için gerekli kodu otomatik olarak ekleyecektir.
Ancak bazı mevcut eklentilerin XML-RPC’nin çeşitli bölümlerini kullanabileceğini unutmayın. Bu yüzden tamamen devre dışı bırakmak sahip olduğunuz bir eklentinin çakışmasına veya sitenizdeki işlevini kaybetmesine sebep olabilir.
Eğer XML-RPC’nin sadece belirli öğelerini devre dışı bırakmak ancak hala belirli eklenti ve özelliklerin çalışmasına izin vermek için aşağıdaki eklentileri kullabilirsiniz:
- Stop XML-RPC Attack. Bu eklenti tüm XML-RPC saldırılarını durdurur ancak Jetpack gibi diğer otomatik araç ve eklentilerin xmlrpc.php dosyasına erişim sağlamasına izin verir.
- Control XML-RPC Publishing. Bu eklenti size xmlrpc-php tarafından sunulan uzaktan yayınlama özelliğini kullanabilme ve kontrol etme imkanı sağlar.
Yöntem 2: Xmlrpc.php Dosyasını Manuel Kapatma
Eğer bir eklenti kullanmadan manuel olarak yapmak istiyorsanız, bu yöntemi uygulayın. Bu sayede gelecek olan tüm xmlrpc.php taleplerini WordPress’e ulaşmadan kapatabilirsiniz.
.htaccess dosyanızı açın. Bu dosyayı bulabilmek için dosya yöneticisinde veya FTP istemcisinde ‘gizli dosyaları göster’ seçeneğini etkinleştirmeniz gerekebilir.
.htaccess dosyası içine aşağıdaki kodu yapıştırın:
# Block WordPress xmlrpc.php requests <Files xmlrpc.php> order deny,allow deny from all allow from 123.123.123.123 </Files>
Kısaca Özetleyelim
XML-RPC, WordPress sitenizde uzaktan içerik yayınlamayla ilgili sorunları ortadan kaldırmak için iyi bir çözümdü. Fakat bu özellik beraberinde getirdiği güvenlik açıkları yüzünden bazı WordPress site sahipleri için büyük hasarlara sebebiyet verdi.
Sitenizin güvende olması için xmlrpc.php dosyasını tamamen devre dışı bırakmak iyi bir fikirdir. Tabi uzaktan yayınlama ve Jetpack eklentisi için bazı özelliklerinden yararlanmanız gerekmiyorsa. Bu durumda, güvenlik açıklarını gidererek ilgili özelliklerin kullanılabilmesine olanak sağlayan eklentileri deneyebilirsiniz.
Zaman içerisinde XML-RPC özelliklerinin yeni WordPress API içerisine dahil edilmesini bekleyebiliriz, bu sayede güvenlik açıklarına maruz kalmadan uzaktan erişim sağlamaya devam edebiliriz. Ancak o zamana kadar, sitenizi potansiyel XML-RPC açıklarına karşı korumanızı tavsiye ediyoruz.
XML-RPC erişimini eklenti aracılığıyla mı yoksa manuel olarak mı kapattınız? Veya bu dosya yüzünden daha önce herhangi bir güvenlik sorunu yaşadınız mı? Tecrübelerinizi aşağıdaki yorumlar bölümünü kullanarak bizimle paylaşabilirsiniz.
There are no comments