Bloqueio do acesso ao apache via string do agente do usuário

7

Eu tenho um scripter que está usando um proxy para atacar um site que estou servindo.

Tenho notado que eles tendem a acessar o site por meio de um software com uma determinada string de agente do usuário comum (ou seja, link "Havij advanced sql injection software" com uma string user_agent de Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727) Havij ). Estou ciente de que qualquer software de cracking que vale a pena ser salgado provavelmente será capaz de modificar sua string de agente de usuário, mas eu estou bem com o scripter ter que lidar com esse recurso em algum momento.

Então, existe algum software disponível para bloquear automaticamente o acesso & permanentemente na lista negra, combinando as strings do agente do usuário?

    
por Kzqai 25.03.2011 / 21:51

2 respostas

18

você pode negar acesso por BrowserMatch e Negar de SetEnvIf Exemplo:

SetEnvIfNoCase User-Agent "^Wget" bad_bot
SetEnvIfNoCase User-Agent "^EmailSiphon" bad_bot
SetEnvIfNoCase User-Agent "^EmailWolf" bad_bot
<Directory "/var/www">
        Order Allow,Deny
        Allow from all
        Deny from env=bad_bot
</Directory>

Para bloqueá-los permanentemente, você precisa escrever um arquivo de log personalizado e usar o fail2ban, por exemplo, para bani-los com o iptables

Por exemplo, crie um LogFormat

LogFormat "%a %{User-agent}i" ipagent

Adicione log ao seu vhost / server-wide

CustomLog /var/log/apache2/useragent.log ipagent

/etc/fail2ban/filter.d/baduseragent.conf

[Definition]
failregex = ^<HOST> Mozilla/4\.0 \(compatible; MSIE 7\.0; Windows NT 5\.1; SV1; \.NET CLR 2\.0\.50727\) Havij$

/etc/fail2ban/jail.conf

[apache-bad-user-agent]

enabled  = true
port     = 80,443
protocol = tcp
filter   = baduseragent
maxretry = 1
bantime  = 86400
logpath  = /var/log/apache2/useragent.log
    
por 25.03.2011 / 22:30
6

Acho que entendi sua pergunta. Vou fornecer uma explicação mais detalhada, se isso é o que você está procurando. (isso funcionará como uma armadilha para outras coisas também)

  • Ativar o mecanismo mod_rewrite no apache2
  • Crie um trap.php, o visitante pode fazer o que quiser. Por exemplo, eu fiz isso adicionar todos os visitantes ip para uma lista negra que nega o acesso à minha web.
  • Crie um arquivo dos useragents de que você não gosta, um por linha como este
    bas_useragent [tab] black
    useragent_bad [tab} black
  • Agora, adicione seu mod_rewrite que combina com o mapa de useragents ruins, então reqrites para sua armadilha se houver um mapa. A regra pode ser assim:
    RewriteMap badlist txt:~/bad_useragent_list
    RewriteCond %{HTTP_USER_AGENT} .* [NC] e RewriteCond ${badlist:%1|white} ^black$ [NC] e RewriteRule (.*) "/trap.php" [L]
  • Isso basicamente coincide com o useragent para as chaves em seu arquivo, se ele não for encontrado, será considerado "branco" e a solicitação não será modificada. Se for encontrado e o valor associado for "preto", o pedido será reescrito para ir ao seu arquivo trap.php, que faz o que você quiser.
  • Algumas ideias possíveis. Tem outro script assistindo a um arquivo comum que trap.php escreve um IP para. Se esse arquivo comum for alterado, esse observador lê as novas informações, analisa os endereços IP e adiciona uma regra às tabelas de IP que bloqueiam todo o tráfego desse endereço. Eu espero que isso ajude! Novamente, se você quiser mais detalhes, apenas responda aqui.
por 28.10.2012 / 22:00