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]