Como posso bloquear um agente de usuário de todos os sites no meu servidor?

9

Originalmente, eu publiquei em webmasters.stackexchange.com , mas recebi a informação de que uma melhor recepção aqui.

Nos últimos dias, tenho sofrido com o que parece ser um ataque DDOS (presumivelmente inadvertido). Recebi tantas solicitações de um agente que se identificou como "Mozilla / 4.0 (compatível; ICS)" que o apache consome toda a memória disponível.

Consequentemente, gostaria de bloquear todas as solicitações acompanhadas por esse agente do usuário, por isso tentei fazer isso no httpd.conf:

SetEnvIfNoCase User-Agent "Mozilla/4.0 (compatible; ICS)" bad_user
Deny from env=bad_user

Mas quando eu reinicio o Apache, ele reclama sobre o uso de deny aqui. Sem ter que envolvê-lo em um bloco location ou directory , o que significa que eu teria que adicionar um novo bloco para cada site, existe alguma maneira de negar acesso a todo o servidor?

UPDATE: o erro que recebo

  • Restarting web server apache2
    Syntax error on line 4 of /etc/apache2/httpd.conf: deny not allowed here [fail]
    
por Tom Wright 15.04.2013 / 01:55

3 respostas

6

Parece uma velha pergunta agora, mas eu queria fazer o mesmo e encontrar a resposta do nervo acima. Não está bem como está - parece-me que deveria ser <Location "/"> , e o SetEnvIf precisa de uma expressão regular para que os parênteses precisem ser citados.

Isso funcionou para eu aplicar o controle de acesso em todos os vhosts:

SetEnvIfNoCase User-Agent "^Mozilla/4.0 \(compatible; Synapse\)" bad_ua
<Location "/">
    Deny from env=bad_ua
</Location>

Apenas inclua isso antes das definições do vhost.

    
por 15.01.2016 / 17:24
4

mod_rewrite pode ser configurado no nível do servidor de acordo com os documentos:

RewriteCond %{HTTP_USER_AGENT} "Mozilla/4\.0 \(compatible; ICS\)" [nocase]
RewriteRule ^.*$ - [forbidden,last]

Não se esqueça de escapar do regex no RewriteCond

    
por 15.04.2013 / 06:38
1

Desde que a sintaxe nas linhas SetEnv esteja correta, você deve ser capaz de jogar isso no conf da seguinte forma:

<Location *>
SetEnvIfNoCase User-Agent "Mozilla/4.0 (compatible; ICS)" bad_user
Deny from env=bad_user
</Location>

Deve permitir que isso funcione em todos os hosts virtuais - apenas testados no 2.2.24, funcionou como um encanto.

    
por 15.04.2013 / 07:44