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:

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

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:

sudo su
iptables -A INPUT -s 51.15.50.51 -j DROP
iptables -A INPUT -s 51.15.51.63 -j DROP

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

iptables-save > /opt/bitnami/iptables-rules
crontab -e

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

@reboot /sbin/iptables-restore < /opt/bitnami/iptables-rules

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:

<Directory "/opt/bitnami/apps/wordpress/htdocs">
# Only allow direct access to specific Web-available files.

# protect xmlrpc
<IfModule mod_alias.c>
        RedirectMatch 403 /xmlrpc.php
</IfModule>
</Directory>

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:

sudo su
chmod 777 htaccess.conf

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

sudo su
chmod 644 htaccess.conf

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:

sudo su
iptables -D INPUT -s 51.15.50.51 -j DROP
iptables -D INPUT -s 51.15.51.63 -j DROP
Natural de Salvador-BA, é graduado em Analise de Sistemas pela Universidade Católica do Salvador (UCSal, 2003), e Especialista em Engenharia de Software pela Universidade Salvador (2010).

Deixe uma resposta

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