Como bloquear ataques DDOS (XML RPC) ao WordPress?

Esta semana a Base de Conhecimento ficou fora do ar devido a um ataque DDoS. Ele estava atacando uma falha conhecida no WordPress causada pelo XML RPC habilitado para pingbacks.

Os sintomas eram a dificuldade para acessar o site, que ficou muito lento devido a quantidade de requisições sendo realizadas ao arquivo “xmlrpc.php” contido no pacote do WordPress.

Para detectar o ataque é muito simples, visualize a quantidade de conexões abertas para determinados endereços IPs em seu servidor. No linux isto pode ser feito através do comando:

<br />
netstat -tn 2&gt;/dev/null | grep :80 | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr | head<br />

Em meu servidor foram detectados dois endereços (51.15.50.51 e 51.15.51.63) com 300 conexões abertas cada um.

A primeira ação foi bloqueá-los via Firewall executando os comandos abaixo:

<br />
sudo su<br />
iptables -A INPUT -s 51.15.50.51 -j DROP<br />
iptables -A INPUT -s 51.15.51.63 -j DROP<br />

Para que estes endereços permaneçam bloqueados mesmo depois do servidor ser reiniciado, execute:

<br />
iptables-save &gt; /opt/bitnami/iptables-rules<br />
crontab -e<br />

Abrirá o editor, adicione a linha abaixo e salve:

<br />
@reboot /sbin/iptables-restore &lt; /opt/bitnami/iptables-rules<br />

Reinicie o servidor.

Agora, estes endereços estão boqueados. Mas outros atacantes podem aparecer, então será necessário bloquear o acesso do arquivo xmlrpc.php a qualquer usuário. Para fazer isso, edite o arquivo .htaccess de sua instalação WordPress (geralmente na pasta raiz, mas para os usuários da instalação BitNami este arquivo se localiza na pasta /opt/bitnami/apps/wordpress/conf/htaccess.conf) adicionando o código abaixo:

<br />
&lt;Directory &quot;/opt/bitnami/apps/wordpress/htdocs&quot;&gt;<br />
# Only allow direct access to specific Web-available files.</p>
<p># protect xmlrpc<br />
&lt;IfModule mod_alias.c&gt;<br />
        RedirectMatch 403 /xmlrpc.php<br />
&lt;/IfModule&gt;<br />
&lt;/Directory&gt;<br />

Observação 1:Lembre-se de modificar o diretório para conter a pasta onde estão os arquivos do WordPress em sua instalação.

Observação 2:Lembre-se que para alterar o arquivo acima, será necessário ter permissão:

<br />
sudo su<br />
chmod 777 htaccess.conf<br />

Finalizada a modificação retorne a permissão para a original por motivos de segurança:

<br />
sudo su<br />
chmod 644 htaccess.conf<br />

Agora você deve reiniciar o servidor apache e pronto.

Observação: Caso deseje remover aqueles endereços IPs que estavam atacando do bloqueio via Firewall, basta executar o comando abaixo:

<br />
sudo su<br />
iptables -D INPUT -s 51.15.50.51 -j DROP<br />
iptables -D INPUT -s 51.15.51.63 -j DROP<br />

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *