Blacklisting: IP's ou domínios?

2

Estou implementando um sistema de listas negras em meu site que monitora os formulários de contato para uso suspeito (conteúdo de spam e frequência excessiva).

Quando eu encontrar alguém / robô que atenda aos meus critérios para a lista negra, quero enviá-los para meu banco de dados como uma entidade na lista negra.

A minha pergunta é, devo colocá-los na lista negra como um IP ou como um domínio?

Até onde eu vejo, a inclusão de um IP na lista negra será muito mais eficaz, pois permito que as pessoas insiram o endereço de e-mail no formulário e podem facilmente alterar seu domínio regularmente.

No entanto, a desvantagem é que, se eu fizer uma lista negra de um IP, posso colocar na lista negra um grande grupo de pessoas que compartilham um IP quando apenas uma pessoa é ruim (por exemplo, campi universitários, lanchonetes, etc.).

Existe uma solução que está faltando?

    
por johnnietheblack 18.11.2009 / 19:20

5 respostas

7

A abordagem mais fácil seria limitar o tempo da lista negra.
A primeira vez que um IP é colocado no banco de dados, defina o tempo limite por 3 dias ou algo assim. Em envios subseqüentes desse IP:

  • O segundo lixo de tempo vem de um IP que define o tempo limite por duas semanas.
  • O terceiro lixo vem do mesmo IP que o tempo limite para Permanente (0)

  • Ou algo semelhante a isso, o SMTP Greylisting funciona assim, e é bastante eficaz.     
    por 18.11.2009 / 19:30
    2

    Hmmm ... depende de que tipo de backend é usado no site, por exemplo, há um plugin Bad Behavior que é usado em instalações do Wordpress que faz o trabalho de blacklisting. Tem uma flexibilidade em que você pode fazer uma lista negra por ip, domínio ou cadeia de agente do usuário. Além disso, estou imaginando e supondo que você tenha captcha no lugar?

        
    por 18.11.2009 / 19:31
    2

    Eu percebo que estou adicionando a esta discussão um pouco tarde, mas eu levei essa idéia um passo adiante e pensei que minha técnica poderia ser útil para os outros. Eu automaticamente bloqueio os malfeitores, mas permita que eles se desbloqueiem. Dessa forma, se um IP compartilhado (ou NAT) for bloqueado, não será permanente. Veja como:

    Eu configurei uma página padrão (com script) em um ou mais subdiretórios (pastas) bloqueados no robots.txt. Essa página, se carregada por um robô mal-comportado - ou por um humano intrometido - adiciona seu endereço IP a uma lista bloqueada. Mas eu tenho um manipulador de erro 403 ("não autorizado") que redireciona esses IPs bloqueados para uma página explicando o que está acontecendo e contendo um captcha que um ser humano pode usar para desbloquear o IP. Dessa forma, se um IP for bloqueado porque uma pessoa o usou uma vez para uma finalidade ruim, a próxima pessoa a obter esse IP não será permanentemente bloqueada - apenas incomodou um pouco. É claro que, se um IP em particular continuar ficando muito bloqueado por RE, posso tomar outras medidas manualmente para resolver isso.

    Aqui está a lógica:

    1. Se o IP não estiver bloqueado, permita o acesso normalmente.
    2. Se o visitante navegar para a área proibida, bloqueie seu IP.
    3. Se o IP estiver bloqueado, redirecione todo o acesso ao formulário de "desbloqueio" que contém o captcha.
    4. Se o usuário inserir manualmente um captcha adequado, remova o IP da lista de bloqueios (e registre esse fato).
    5. Enxágüe, esfregue, REPETE as etapas acima para acessos futuros.

    É isso! Um arquivo de script para manipular o aviso de bloqueio e desbloquear o envio do captcha. Uma entrada (no mínimo) no arquivo robots.txt. Um redirecionamento 403 no arquivo htaccess.

    Espero que isso ajude ... alguém. Funciona muito bem para mim. Estou usando em vários sites.

        
    por 11.03.2010 / 04:57
    1

    Proiba definitivamente um IP. Isso não resolve o problema 100%, mas pode haver vários IPs por domínio e, certamente, alguns domínios que você não deseja proibir (comcast, etc).

    Você é muito mais seguro para fazer isso com base em IP, e você tem a mesma aparência de uma sub-rede:

    192.168.1.10
    192.168.1.25
    192.168.1.30
    

    Então você quer proibir por intervalo:

    192.168.1.x
    

    Eu não me preocuparia muito em bloquear muitas pessoas, geralmente é bastante difundido, e você encontrará a maioria de seus spammers vindo de um ou dois países da Europa Oriental de qualquer maneira.

        
    por 18.11.2009 / 19:32
    1

    Bem, eu acho que por domínio você quer dizer a lista negra do endereço de e-mail? como colocar um domínio inteiro na lista negra poderia manter muito mais usuários do que colocar um ip na lista negra.

    Acho que vou com o ip, apesar de achar que você está lidando com isso do ponto errado.

    Para evitar que robôs / spambots postem, use um captcha, por exemplo recaptcha é muito bom (e você ajuda a digitalizar livros antigos usando isso.

    Para manter os usuários ruins fora, bem, um IP pode ser facilmente alterado, já que a maioria das pessoas não tem um ip fixo (um ip fixo geralmente custa extra), então eles apenas se reconectam e são bons eles de novo. É realmente muito difícil manter os usuários "malvados", embora o truque pareça ser não permitir que o usuário banido saiba que eles foram banidos, então o formulário de contato deve se comportar como se eles não estivessem, dessa forma mais tempo para descobrir e alterar seu email / ip. Mas sim, por que ou / ou se você poderia banir seu ip, bem como o seu endereço de e-mail?

        
    por 18.11.2009 / 19:33