Como evitar que seu site/forum caia devido a acessos do baidu e ataques DDOS

--> Para ser simples e direto, eu estava tendo em dois momentos, um problema insuportável com um fórum, por algum motivo bizarro, o agente do baidu abria da China centenas de conexões para o fórum, resultado, sistema muito lento e provedor bloqueando acesso devido ao alto uso do script php.

Procurando por diversas solução, que incluía bloquear o IP, não resolvia muito já que não dava para conhecer todos os ranges, encontrei a solução abaixo que você pode inseri-lo no seu .htaccess:

BrowserMatchNoCase Baiduspider bad_bot
Deny from env=bad_bot

Assim o agente deles será bloqueado, funcionou tão bem que nunca mais tive problema de lentidão ou site fora devido ao agente fora de linha deles.
Outro momento ocorreu devido a um ataque DDOS. Verificando os logs de acesso pelo CPANEL, vi um monte de conexões variadas vindo sempre do user agente do WordPress, inseri então a linha abaixo no .htaccess:

SetEnvIf User-Agent WordPress keep_out
Deny from env=keep_out

Funcionou lindamente e o site pode continuar no ar sem maiores problems.

Como preciso me precaver quanto a bloqueios inesperados do provedor quanto ao uso excessivo do site, fiz um pequeno script que remove a permissão do arquivo principal caso haja um numero de processos do index.php em uso ao mesmo tempo, no meu caso, esse alto uso estava associado ao ataque DDOS, pelo menos assim tenho segurança de poder ir dormir sem receber notificação do provedor que a conta foi bloqueada devida a abuso de recursos, segue meu script, lembrando que tenho acesso ssh no provedor mas é possível fazer tudo pelo cpanel e é necessário ter o crontab liberado:

#!/bin/bash
portal_location="/home/meuuser/public_html/forum/index.php"
portal_ps=$(ps -ef|grep -i index.php|wc -l)
if [ $portal_ps -gt 20 ]
then
if [ -f "$portal_location" ]
then
echo "Mais de 20 processos: $portal_ps"
echo "Removendo permissao de leitura de $portal_location"
chmod a-r $portal_location
if [ $? -eq 0 ]
then
echo "Permissao de leitura removida com sucesso com sucesso"
ls -ltra ${portal_location}.$(date +%d%m%y%H%M%S)
fi
fi
fi

E depois basta inserir na crontab:

* * * * *  sh /home/meuuser/scripts/prot_porta.sh
O script rodara a cada minuto, você pode mudar a quantidade de processos desejados, no meu caso só posso ter 25 ao mesmo tempo, como sou notificado por email quando o script executa, sempre estarei no controle se algo tiver saído do normal.







Comentários

Postagens mais visitadas deste blog

Transformando o Linksys WRT54G2 V1 em bridge, repetidor

Recuperando partições deletadas

How to install YUM and other rpm packages on VIOs and AIX manually