Dev (Back & Front)

16 set, 2015

Block User-Agent em htaccess para servidor Apache

Publicidade

Este guia vai te mostrar como bloquear requisições do seu site se elas vierem de determinado User-Agent. Isso pode ser muito útil para se defender de um ataque DDoS através do pingback no WordPress ou para bloquear outras requisições indesejadas.

Levando em consideração que o .htaccess já está habilitado no seu servidor (está, na maioria dos servidores Apache), adicione o seguinte trecho próximo ao topo para bloquear este user-agent de acessar o seu site.

$ cat .htaccess
<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteCond %{HTTP_USER_AGENT} ^WordPress [NC]
  RewriteRule .* - [F,L]
</IfModule>

 

O exemplo acima vai bloquear qualquer requisição que tenha um User-Agent que comece com (o modificador regex ^) “WordPress”. Usei esse exemplo em particular para defender contra um ataque pingback no WordPress, no qual antigas versões do CMS são levadas a atacar um único alvo.

Se você quiser bloquear múltiplos user-agents em htaccess, você pode combiná-los em uma única linha como esta:

$ cat .htaccess
<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteCond %{HTTP_USER_AGENT} ^(WordPress|ApacheBench) [NC]
  RewriteRule .* - [F,L]
</IfModule>

 

O exemplo acima bloqueia todas as requisições com um user-agent que comece com WordPress ou ApacheBench.

De forma alternativa, você pode usar um bloqueio SetEnvIfNoCase, que define um meio ambiente variável se a condição descrevida é encontrada. Isso pode ser útil se, por alguma razão, mod_rewrite não estiver disponível.

$ cat .htaccess
<IfModule mod_setenvif.c>
  SetEnvIfNoCase User-Agent (sqlmap|wordpress|apachebench) bad_user_agents

  Order Allow,Deny
  Allow from all
  Deny from env=bad_user_agents
</IfModule>

 

O exemplo acima vai negar acesso para todos que tiverem um user-agent que tenha SQLMap, WordPress ou ApacheBench na string. É case-sensitive, e o User-Agent não precisa começar com a mesma string, porque não tem o modificador ^.

***

Mattias Geniar faz parte do time de colunistas internacionais do iMasters. A tradução do artigo é feita pela redação iMasters, com autorização do autor, e você pode acompanhar o artigo em inglês no link: https://ma.ttias.be/block-user-agent-in-htaccess-for-apache-webserver/