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:

[code lang=”plain”]
netstat -tn 2>/dev/null | grep :80 | awk ‘{print $5}’ | cut -d: -f1 | sort | uniq -c | sort -nr | head
[/code]

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:

[code lang=”plain”]
sudo su
iptables -A INPUT -s 51.15.50.51 -j DROP
iptables -A INPUT -s 51.15.51.63 -j DROP
[/code]

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

[code lang=”plain”]
iptables-save > /opt/bitnami/iptables-rules
crontab -e
[/code]

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

[code lang=”plain”]
@reboot /sbin/iptables-restore < /opt/bitnami/iptables-rules
[/code]

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:

[code lang=”plain”]
<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>
[/code]

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:

[code lang=”plain”]
sudo su
chmod 777 htaccess.conf
[/code]

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

[code lang=”plain”]
sudo su
chmod 644 htaccess.conf
[/code]

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:

[code lang=”plain”]
sudo su
iptables -D INPUT -s 51.15.50.51 -j DROP
iptables -D INPUT -s 51.15.51.63 -j DROP
[/code]

Deixe um comentário

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

Sair da versão mobile