O que é xmlrpc.php no WordPress e por que você deve desativá-lo
O WordPress sempre teve recursos embutidos que permitem que você interaja remotamente com o seu site. Às vezes, você precisa acessar seu site e seu computador não vai estar disponível para isso.
Por muito tempo, essa solução era o arquivo xmlrpc.php. Desde os primórdios do WordPress, foram incorporados recursos que permitiram que o WordPress se comunicasse com outros sistemas. Mas nos últimos anos, xmlrpc.php se tornou mais um problema do que uma solução.
Neste artigo nós vamos explicar o que é xmlrpc.php realmente é e porque ele foi criado. Também analisamos os problemas comuns de segurança que ele causa e como corrigi-los em seu próprio site WordPress.
Conteúdo
O que é xmlrpc.php?
O XML-RPC é um recurso do WordPress que permite que dados sejam transmitidos, com HTTP agindo como mecanismo de transporte e XML como mecanismo de codificação. Como o WordPress não é um sistema “fechado” e, ocasionalmente, precisa se comunicar com outros sistemas, esse sistema foi feito para lidar com esse trabalho.
Por exemplo, digamos que você queira postar no seu site a partir do seu dispositivo móvel, já que está sem um computador. Você poderia usar o recurso de acesso remoto ativado por xmlrpc.php para fazer exatamente isso.
Com o xmlrpc.php habilitado, você consegue se conectar ao seu site via smartphone, implementando trackbacks e pingbacks de outros sites, e algumas funções associadas ao plugin Jetpack.
Por qual motivo foi criado e como foi usado?
Você já sabe o que é xmlrpc.php, agora resta saber o motivo da criação. Bom, a implementação do XML-RPC vem desde os primórdios do WordPress, antes mesmo de se tornar WordPress. No início da internet, quando as conexões eram incrivelmente lentas, o processo de escrever e publicar na web era muito mais difícil e demorado.
Ao invés de escrever no próprio navegador, a maioria das pessoas escrevia offline, depois copiava e colava o conteúdo na web. Ainda assim, esse processo estava longe de ser ideal.
A solução (na época) era criar um cliente de blog offline, onde você poderia compor seu conteúdo, depois conectar-se ao seu blog para publicá-lo. Essa conexão foi feita através do XML-RPC.
Com a estrutura básica do XML-RPC funcionando, os primeiros aplicativos usavam essa mesma conexão para permitir que as pessoas acessassem seus sites do WordPress de outros dispositivos.
XML-RPC hoje
Em 2008, com a versão 2.6 do WordPress, havia uma opção para ativar ou desativar o XML-RPC. No entanto, com o lançamento do aplicativo WordPress para iPhone, o suporte a XML-RPC foi habilitado por padrão e não havia opção para desativar a configuração. Isso permanece até hoje.
No entanto, a funcionalidade desse arquivo diminuiu bastante com o tempo, e o tamanho geral do arquivo diminuiu de 83 kb para 3 kb, de modo que ele não desempenha um papel tão grande quanto costumava.
XML-RPC no futuro
Com a nova API do WordPress, podemos esperar que o XML-RPC seja totalmente eliminado. Hoje, essa nova API ainda está em fase de teste e só pode ser ativada com o uso de um plugin. No entanto, você pode esperar que, no futuro, a API seja codificada diretamente no núcleo do WordPress, o que eliminará a necessidade do arquivo xmlrpc.php. A nova API não é perfeita, mas fornece uma solução mais robusta e segura para o problema que o xmlrpc.php tenta solucionar.
Por que você deve desativar xmlrpc.php
Agora que você já sabe o que é xmlrpc.php e como funciona, precisa entender o principal, que são os problemas que ele traz. Os maiores problemas com o XML-RPC são as preocupações de segurança que surgem. Os problemas não estão diretamente com o XML-RPC, mas sim como o arquivo pode ser usado para ativar um ataque no seu site.
Claro, você pode se proteger com senhas fortes e plugins de segurança do WordPress. Mas o melhor modo de proteção é simplesmente desativá-lo. Existem duas principais fraquezas do XML-RPC que foram exploradas no passado.
O primeiro é usar ataques para entrar no seu site. Um invasor tentará acessar seu site usando xmlrpc.php e tentando várias combinações de nome de usuário e senha. Eles podem efetivamente usar um único comando para testar centenas de senhas diferentes. Isso permite que eles ignorem as ferramentas de segurança que normalmente detectam e bloqueiam esses tipos de ataque.
O segundo foi derrubar um site realizando um ataque DDoS. Hackers usariam o recurso pingback no WordPress para enviar pingbacks para milhares de sites instantaneamente. Esse recurso em xmlrpc.php fornece aos hackers um suprimento quase infinito de endereços IP para distribuir um ataque DDoS.
Para verificar se o XML-RPC está sendo executado em seu site, você pode checar através de uma ferramenta chamada XML-RPC Validator. Execute seu site por meio da ferramenta e, se você receber uma mensagem de erro, isso significa que você não tem o XML-RPC ativado.
Se você receber uma mensagem de “sucesso”, indicando que o XML-RPC está sendo executado dentro do seu site, você poderá interromper o xmlrpc.php com uma das duas abordagens abaixo.
Método 1: Desativando xmlrpc.php com plugins
Essa maneira de desativar o xmlrpc.php é muito simples e fácil. Basta entrar no painel de controle do seu site WordPress e ir até a seção Plugins › Adicionar novo. Procure pelo plugin Disable XML-RPC e instale-o.
Ative o plug-in e está tudo pronto. Este plugin vai inserir automaticamente o código necessário para desativar o XML-RPC. No entanto, lembre-se de que alguns plugins existentes podem utilizar partes do XML-RPC, portanto, desabilitá-lo completamente pode fazer com que um conflito de plug-in ou certos elementos do site não funcionem mais.
Se você deseja desativar determinados elementos do XML-RPC, mas ainda permitir que certos plugins e recursos funcionem, use os seguintes plugins:
- Stop XML-RPC Attack: Esse plugin vai interromper todos os ataques de XML-RPC, mas continuará permitindo que plugins como o Jetpack e outras ferramentas e plugins automáticos mantenham o acesso ao arquivo xmlrpc.php.
- Control XML-RPC Publishing: Isso permite que você mantenha o controle sobre a opção de publicação remota oferecida pelo xmlrpc.php.
Método 2: Desativando xmlrpc.php manualmente
Se você não quiser usar um plugin e preferir fazê-lo manualmente, siga esta abordagem. Ele vai interromper todas as solicitações xmlrpc.php recebidas antes de serem passadas para o WordPress. Abra seu arquivo .htaccess. Você pode ter que ativar o “show hidden files” no gerenciador de arquivos ou no seu cliente FTP para localizar esse arquivo. Dentro do seu arquivo .htaccess, cole o seguinte código:
# Block WordPress xmlrpc.php requests <Files xmlrpc.php> order deny,allow deny from all allow from 123.123.123.123 </Files>
Conclusão
No geral, o XML-RPC foi uma solução sólida para alguns dos problemas que ocorreram devido à publicação remota em sites WordPress. No entanto, com esse recurso, surgiram algumas falhas de segurança que acabaram sendo muito prejudiciais para alguns proprietários de sites do WordPress.
Para garantir que seu site permaneça seguro, é uma boa ideia desabilitar o xmlrpc.php por completo. A menos que você precise de algumas das funções necessárias para publicação remota e o plugin do Jetpack. Caso precise, você deve usar os plugins de solução alternativa que permitem esses recursos, enquanto ainda corrige as falhas de segurança.
Com o tempo, podemos esperar que os recursos do XML-RPC se integrem na nova API do WordPress, que manterá o acesso remoto, sem sacrificar a segurança. Mas, enquanto isso, é uma boa ideia proteger-se dos potenciais buracos de segurança do XML-RPC.
Agora que você entendeu o que é xmlrpc.php, nós perguntamos: Você bloqueou o acesso ao XML-RPC por meio de um plugin ou manualmente? Teve algum problema de segurança dentro do seu site por causa da ativação do xmlrpc.php? Por favor, compartilhe sua experiência nos comentários abaixo.
Comentários
August 30 2018
Muita boa explicação. O problema a meu ver, de certa forma, é uma cartelização por parte do "Wordpress.com", que afirma aceitar hospedagens de terceiros, mas não avisa que os servidores precisam desbloquear o protocolo de comunicação xmp-rpc para que haja sincronismo. Como a maioria dos servidores prezam pela segurança, inclusive em ambiente compartilhado, eles não liberam. Aí começam os problemas. Você não conecta suas contas de redes sociais ás postagens, tendo que fazer manualmente, e o aplicativo mobile não sincroniza e não te permite publicações nem acesso á biblioteca de imagens. Há enormes dificuldades de indexação, e você fica à deriva, mesmo com as melhores práticas de SEO. O pior, mesmo desabilitando o jetpack os problemas continuam, se você estiver logado via Wordpress.com.
August 26 2019
Muito bom o artigo, mas uma duvida porque permitir o acesso de 123.123.123.123?
December 17 2019
Acredito que ele quis dizer o IP da hospedagem. 123.123.123.123 Seria o da sua hospedagem.
October 06 2020
Tive uma experiência ruim com um wordpress multisites, ele não parava em pé, fiz a configuração no apache e não no .htaccess pois tenho acesso full a máquina, agora é ver se dá certo. Esse IP que ele coloca é só um exemplo.
August 21 2021
Então, sofri muito com quedas em servidores, sem saber de onde vinha o consumo de ram e do nada o servidor travava. depois de muito procurar o problema cheguei neste arquivo xmlrpc.php Que fiz no ssh apliquei este comando, na verdade são 2 comandos porque meus servidores tem home e home2 E se um cliente reclamar é só acesar a pasta public_httml e liberar acesso no arquivo deixando em 0644 chmod 000 /home/*/public_html/xmlrpc.php chmod 000 /home2/*/public_html/xmlrpc.php
October 28 2021
Instalei o plugin wordfence e foi através dele que descobri o ataque no arquivo xmlrpc.php, quais os plugins que utilizam ele? pois acredito que desabilitar de forma manual é mais eficaz.
November 05 2021
Pior que não tem uma lista certinha dos plugins que utilizam o xmlrpc.php não. Tem que verificar um a um mesmo, infelizmente ?
May 17 2022
Bom de mais! Como diz os mineiros... Na linha allow from 123.123.123.123 devo substituir pelo IP da minha hospedagem? Vlw ?
May 20 2022
Ficamos muito felizes que você gostou! Então, você substitui por um endereço de IP que você ainda quer que tenha acesso ao arquivo xmlrpc.php. Se você não quiser que nenhum IP tenha acesso, você pode deletar essa linha ?
June 08 2022
Na mesma pasta onde está o .htaccess está também o famigerado xmlrpc.php e nele temos a linha: "define( 'XMLRPC_REQUEST', true);" Mudar para false também não resolveria o problema?
July 01 2022
Olá, Claudio! Então, ao desabilitar ou editar o código do arquivo xmlrpc.php, você ainda pode deixar aberta a possibilidade de outros plugins ou conexões que solicitam esse arquivo estarem presentes ou acessarem o site de forma remota. Como resultado, para desabilitá-lo completamente, nós recomendamos usar os métodos mostrados no tutorial. Assim, nenhuma outra conexão vão poder acessar o seu site ?
April 12 2023
Bom tutorial