Bloqueio de um país (intervalos de iP de massa), melhor prática para o bloco real

6

Esta pergunta foi obviamente feita muitas vezes em muitas formas diferentes, mas não consigo encontrar uma resposta real para o plano específico que tenho. Administramos um popular site de ofertas comerciais na Europa e estamos obtendo uma grande quantidade de registros / tráfego de entrada de países que não podem sequer participar das transações que oferecemos (e muitos dos varejistas nem são conhecidos fora da Europa Ocidental).

Eu identifiquei a área do problema para bloquear muito esse tráfego, mas (como esperado) há milhares de intervalos de IP necessários.

Minha pergunta agora (finalmente!). Em um servidor de teste, eu criei um script para bloquear cada intervalo dentro do iptables, mas a quantidade de tempo que levou para adicionar as regras era grande, e então o iptables não respondia depois disso (especialmente quando tentava um iptables -L). >

Qual é a maneira mais eficiente de bloquear grandes números de intervalos de IP:

  • iptables? Ou um plugin onde eu posso pré-carregá-los eficientemente?
  • hosts.deny?
  • .htaccess (desagradável como eu estaria correndo no apache em toda a web de carga balanceada servidor)?
por kwiksand 05.03.2011 / 15:07

5 respostas

3

até onde eu entendi, a questão não é onde obter a lista de endereços IP que precisam ser bloqueados, mas sim como bloqueá-los com iptables eficientemente. Um script que execute uma série de comandos "iptables -A" levará muito tempo para carregar regras e, durante esse tempo, o firewall será executado com uma política inconsistente. Isso também tem impacto significativo em seu desempenho.

Sugiro que você tente o módulo ipset ( link ). Ele permite que você manipule tabelas de blocos de endereço diretamente, você só precisa de uma regra iptables para combinar com o conjunto inteiro. Você precisará experimentar diferentes tipos de conjuntos para encontrar o que pode acomodar o número de blocos de endereços IP que você precisa bloquear e fornecer o desempenho necessário. Em qualquer caso, é muito melhor em combinar longas listas de blocos de endereços e permite recarregá-lo usando a ferramenta de linha de comando sem tocar nas regras.

Note que nem todas as distribuições do Linux incluem ipsets em sua configuração padrão, então você pode precisar recompilar módulos do kernel e iptables.

Os blocos de endereços de países mudam de tempos em tempos, portanto, você precisa atualizar seu conjunto de endereços periodicamente. Para recarregar o conjunto que já está sendo usado, você pode usar a ferramenta de linha de comando "ipset" e é fácil envolvê-lo em um script de shell para automatizar o processo. Ou você poderia usar o fwbuilder para gerar sua política de iptables e usar o script que ela gera para gerenciar o ipset também ( link , veja" 5.2.13.1. Utilizando Tabelas de Endereços Objetos com conjuntos de IPs iptables "neste capítulo)

    
por 05.03.2011 / 18:27
4

O que achamos melhor é usar o banco de dados MaxMinds no momento da inscrição. A versão gratuita é bloqueada para o país e você pode pagar por mais granularidade.

A vantagem de fazer isso apenas no momento da inscrição é que você não tornará a vida difícil para os clientes que já se inscreveram e que estão viajando.

    
por 05.03.2011 / 15:17
1

Linux iptables é aceitável para firewalls básicos, miserável para todo o resto.

O firewall pf (usado pela maioria dos BSD Unices) tornará sua vida muito mais fácil. O recurso tabelas no firewall pf é análogo ao módulo ipset do netfilter.

OpenBSD, FreeBSD, NetBSD, pfSense e OPNSense usam pf. Eu amo o OpenBSD como uma distro de firewall, mas se você precisar de uma GUI para seu firewall, o pfSense e o OPNSense farão o trabalho.

Quanto ao que colocar nas tabelas pf, mantenho um tarball atualizado de blocos do CIDR por país aqui .

    
por 16.11.2015 / 12:51
0

Eu uso o link . Eu gosto que é grátis (sem necessidade de inscrição) e suporta muitos formatos diferentes para roteadores, servidores web, etc.

    
por 05.03.2011 / 16:01
0

Lista de blocos IP por país em um formato que pode ser facilmente usado por muitos firewalls (estou usando tabelas PF no FreeBSD que podem ser carregadas de um arquivo): link

    
por 10.01.2016 / 10:21