Milhares de solicitações com domínios inexistentes como HTTP_REFERER [duplicado]

2

Nos últimos dias, um dos meus sites recebeu centenas de solicitações por minuto com domínios aleatórios inexistentes como HTTP_REFERER e de IPs diferentes (portanto, usar deny from IP não é um opção):

REMOTE_ADDR     | HTTP_REFERER    | HTTP_USER_AGENT
95.133.126.178  | 1dljlc2jm2.info | Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; QihooBot 1.0 [email protected])
188.232.31.38   | 3r28169e6v4.net | Mozilla/5.0 (compatible; ShunixBot/1.x; http://www.7vlc8pngqk7zmx.com/bot.htm)
177.184.135.114 | 3p10jjujbn.ru   | Mozilla/5.0 (compatible; Bot; +http://w4n2e2mte8.ws/spamfilter
188.235.184.231 | 06d94hx.biz     | Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; iRider 2.21.1108; FDM)
42.119.240.12   | ho0gg8r7.net    | Mozilla/3.0 (WorldGate Gazelle 3.5.1 build 11; FreeBSD2.2.8-STABLE)
...

Alguma idéia de como lutar contra isso, por favor?

UPDATE (depois que o problema foi resolvido com sucesso)

Minha pergunta não é uma duplicata para Estou sob DDoS. O que posso fazer? porque eu sabia "o que está acontecendo" (pequeno ataque DDoS) e, portanto, pedi que as regras exatas fossem adicionadas ao .htaccess para bloquear os invasores. / p>

BTW, aqui Estou sob DDoS. O que posso fazer? é sugerido para entrar em contato com o provedor de hospedagem. Eu fiz, mas meu provedor de hospedagem (um dos mais populares) propôs comprar um pacote mais caro com mais recursos incluídos. :)

A solução do Froggiz era exatamente o que eu estava procurando.

    
por Grigur 09.11.2015 / 12:54

1 resposta

2

estas são as regras para bloquear seus atacantes

# Block request if not empty or not start with http
RewriteCond %{HTTP_REFERER} "!^$|^http"
# Block request rule
RewriteRule .* - [F]

Eu adicionei mais algumas regras para bloquear outros bots:

# Block empty user agent, and suspect user agen
RewriteCond %{HTTP_USER_AGENT} ^-?$|perl|python|\x.*?\x [NC,OR]
# Limit request to GET POST and HEAD
RewriteCond %{REQUEST_METHOD} !^(GET|HEAD|POST)$ [OR]
# Block request who doesn't start with / as it should for normal web sites
RewriteCond %{REQUEST_URI} !^/ [OR]
# Block request if not empty or not start with http
RewriteCond %{HTTP_REFERER} "!^$|^http"
# Redirect to 406 page
RewriteRule .* - [END,R=406]

Estou usando o código 406 (Não Aceitável) como código de resposta, mas é opcional, pode ser tudo que você quiser, como [F], como sugerido pelo apache doc

link

Se você estiver usando outra regra de regravação (como url curto, por exemplo), é necessário colocar a regra que eu postei antes, para ser usada na primeira

    
por 09.11.2015 / 13:26