Tentativas de Autenticação com Falha na Lista Negra Automaticamente Via htaccess?

1

Ubuntu 9.10 Apache 2.2.12

Oi pessoal,

Estou usando uma configuração muito básica de htaccess para "proteger" uma parte do meu site (parte não crítica, mas algo que eu gostaria de exigir autenticação básica).

Existe uma maneira de proibir IPs que não fornecem as credenciais apropriadas muitas vezes? Gostaria de impedir que os usuários tenham a oportunidade de adivinhar combinações de nome de usuário / senha repetidamente ...

    
por Mike B 23.11.2009 / 01:01

3 respostas

2

Você tem acesso root ao servidor? Existem alguns programas que monitoram arquivos de log quanto a alterações, verificando tentativas de autenticação com falha. Depois de várias tentativas com falha (configuráveis pelo usuário), elas bloqueiam o endereço IP de origem (temporariamente, se desejado).

Os dois que eu consigo lembrar são:

  • Fail2ban : instale com sudo apt-get install fail2ban no Ubuntu, em seguida, altere o arquivo /etc/fail2ban/jail.local (se ele não existir, apenas sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local ). As opções em 'jail.local' são bem auto-explicativas, mas se você quiser mais informações, pode conferir a documentação em link

  • BlockHosts: (é um pouco mais antigo, não sei se ainda está atualizado) Para instalar, siga as instruções em link

  • provavelmente há muito mais ...

por 23.11.2009 / 01:44
2

Eu não acho que o Apache tenha algum recurso interno que permita que você faça isso. Aqui está algo que deve funcionar, mas é meio hacky:

  1. Escreva uma tarefa cron que analise o log de erros do Apache, procurando por entradas que contenham "falha de autenticação"
  2. Quando um determinado endereço IP tiver um número X de falhas de autenticação, negue-o.
  3. A negação do IP pode ser realizada por meio de um controle de acesso do Apache ou você pode para usar o arquivo /etc/hosts.deny .

Você deve conseguir automatizar tudo isso por meio de um único trabalho cron.

    
por 23.11.2009 / 01:29
2

Você pode pensar em uma função que adiciona entradas ao seu .htaccess, em php você pode fazer isso:


if(is_writable('.htaccess'))
{
       $h = fopen('.htaccess','a+');
       fwrite($h,"\nDeny from: ".$_SERVER['REMOTE_ADDR']);
       fclose($h);
}
    
por 23.11.2009 / 01:51