deny de .htaccess com lista de IP proibida de stopforumspam.com não está funcionando?

1

estou tentando usar o .htaccess para banir uma lista grande (50.000) de endereços IP de spam suspeitos que recebi de este site .

a lista tem quase 1 milhão de tamanho quando eu adiciono a negação da diretiva para cada endereço na lista ... mas quando eu aplico o arquivo .htaccess carregado ao servidor, ele faz uma apresentação e nenhuma página é carregada com um erro 403.

minhas perguntas ...

  1. existe um limite para o tamanho de um arquivo .htaccess?
  2. há um limite para o número de deny from ip endereços que podem estar contidos no arquivo?
  3. existe uma maneira melhor de fazer o que estou tentando fazer no nível do servidor (eu entendo que eu poderia verificar a lista no webapp durante o envio, mas eu estou tentando aprender coisas)
por menriquez 16.06.2014 / 19:06

2 respostas

1

Não há limite quanto ao tamanho de um arquivo .htaccess além dos limites de tamanho de arquivo do sistema operacional (geralmente 2 GB ou mais). No entanto, existem importantes implicações de desempenho envolvidas no uso de arquivos .htaccess, devido à maneira como o Apache os processa recursivamente (percorrendo a árvore de diretórios) em cada carregamento de página . De fato, o Apache recomenda contra o uso do .htaccess a menos que seja absolutamente necessário, por exemplo, sem acesso a configuração de nível superior.

A maneira padrão de lidar com o bloqueio de IP é com iptables , o firewall interno do Linux. Você pode usar outros aplicativos para ajudar a gerenciar o iptables, como o Fail2ban . Veja esta postagem no blog para uma maneira de fazer isso com o Fail2ban em uma base permanente . Você também pode bloqueá-los adicionando uma rota: route add -host 192.168.0.123 reject . Lembre-se que você pode usar classes inteiras de endereços IP com tudo isso, de modo que ao invés de listar 192.168.0.1, 192.168.0.2, ... 192.168.0.254 você pode especificar a rede: 192.168.0.0/24.

Qualquer que seja o método usado, lembre-se de ter muito cuidado para não se bloquear , especialmente de serviços como o SSH.

    
por 16.06.2014 / 21:04
2

is there a better way to do what im trying to do at the server level

Eu não sei se é melhor, mas eu prefiro isso:

  1. crie para cada IP um novo arquivo, estruturado como deny/198/198.51.100.201
  2. use o seguinte código no seu .htaccess para bloquear o IP:

    RewriteCond %{REMOTE_ADDR} ^([0-9]{1,3})\.
    RewriteCond /usr/www/{your_path}/deny/%1/%{REMOTE_ADDR} -f
    RewriteRule . - [F]
    

Eu nunca fiz um benchmarking, mas me recuso a acreditar que é mais rápido comparar cada requisição com 50000 IPs ao invés de tirar proveito do cache de inode de um sistema de arquivos. Ou constrói o Apache um índice dos IPs listados?!

Finalmente, não foi interessante para mim saber disso porque Eu uso essa técnica para oferecer aos meus visitantes um captcha para desbloquear eles mesmos se eles foram bloqueados por acidente. Outros métodos ( allow, deny , iptables , ...) não ofereciam essa funcionalidade.

Observação: usei uma subpasta para o primeiro bloco de IPs para evitar mais de 32000 arquivos por pasta.

    
por 25.02.2017 / 00:34