O bloqueio de todas as conexões fora dos EUA, além da porta 80, causará uma alta carga no servidor?

16

Como a maioria dos servidores (eu suponho), temos pessoas tentando forçar nossos serviços 24 horas por dia, 7 dias por semana. Eu tenho cpHulk lista negra de seus IP's, mas parece que seria melhor se eles não chegassem tão longe em primeiro lugar. Eu e meu host somos os únicos que se conectam ao servidor em portas diferentes de 80, então eu gostaria de bloquear conexões de todos os países fora dos EUA, com exceção da porta 80. Entrei em contato com meu host para configurar isso, mas eles estavam hesitantes porque disseram que isso criaria uma carga de servidor excepcionalmente alta. É um servidor dedicado Xeon 1230 com 32 GB de RAM rodando o CentOS 6.6 e o iptables.

Primeiro, algum motivo para não fazer isso? Em segundo lugar, o que meu anfitrião me disse está correto? Em terceiro lugar, existe alguma maneira de conseguir isso sem um impacto de alto desempenho?

    
por Big Iron 13.02.2015 / 16:52

6 respostas

33

A configuração de regras específicas para bloquear todos os intervalos de IPs (listando todos os intervalos) é a abordagem errada.

Defina as regras padrão no iptables para eliminar todo o tráfego para suas portas de gerenciamento. Em seguida, adicione regras para permitir apenas o acesso de seus IPs confiáveis (seu e seu host).

Bloquear tudo por padrão e permitir que somente o tráfego aprovado seja normalmente chamado de "explícito negar todos", e é considerado uma prática recomendada. Nesse caso, também ajuda a evitar o impacto no desempenho do seu host.

    
por 13.02.2015 / 17:26
9

Para fazer isso, você teria que adicionar dezenas de milhares de regras de firewall, uma para cada netblock, em que um país pode ter de um a vários milhares de netblocks associados a ele. / p>

Quando uma solicitação é enviada, ela deve ser verificada em todas as regras , o que leva muito pouco tempo para algumas dezenas ou até mesmo algumas centenas de regras, mas com tantas regras quanto você precisaria usar, (1) todas as solicitações serão reduzidas significativamente e (2) usará muita CPU.

A maneira de fazer isso sem um impacto significativo no desempenho é fazendo o que você já está fazendo: bloqueando apenas os endereços específicos que estão sendo problemáticos.

    
por 13.02.2015 / 17:03
5

O que você precisa é de uma ferramenta chamada ipsets

IP sets are a framework inside the Linux kernel, which can be administered by the ipset utility. Depending on the type, currently an IP set may store IP addresses, (TCP/UDP) port numbers or IP addresses with MAC addresses in a way, which ensures lightning speed when matching an entry against a set.

O importante a notar aqui é que é muito rápido! Isso porque um grande número de redes IP pode ser representado por um único hash em vez de centenas ou milhares de linhas de regras do iptables.

Para bloquear países, veja este exemplo :

    
por 13.02.2015 / 18:09
1

Ignorando o fato de fazer isso dessa maneira é uma boa idéia, você pode fazer o que solicitou com o Módulo GeoIP para iptables.

Após construir e instalar o módulo (e manter suas listas de IP atualizadas mensalmente), você pode fazer coisas assim para bloquear países individuais:

iptables -I INPUT -m geoip --src-cc CN -j DROP

Ou use --src-cc US -j ACCEPT e assim por diante, se você preferir especificar os países que deseja manter.

    
por 14.02.2015 / 00:19
1

Se quisesse manter a capacidade de se conectar de qualquer lugar sem manter uma lista negra / lista de permissões de geolocalização, você poderia implementar port-knocking . Isso interromperia a maioria das tentativas automatizadas, permitindo que você ainda se conecte a partir de qualquer endereço.

Nota: Não coloque a porta para bater adjacente à porta para abrir, caso contrário, uma varredura de porta sequencial ativará sua regra.

    
por 14.02.2015 / 13:32
0

Sobre a chance de ter um roteador habilitado para BGP ou dois em sua pilha E ter algum tipo de ideia, que diabos você está fazendo / trabalhar com alguém que sabe o que diabos eles estão fazendo , ou talvez esteja atrás de um provedor de prevenção contra DDoS legal o suficiente para ajudar na implementação disso, há um método relativamente novo para restringir o tráfego para regiões geográficas chamado blackholing seletivo que eu acho que vale a pena dar uma olhada.

link

link

link

Como esse método funciona na manipulação das rotas, ele ignora qualquer problema de carregamento do servidor.

    
por 15.02.2015 / 03:33

Tags