Como bloquear TODAS as comunicações com um endereço IP usando o iptables?

1

Eu tenho um sistema FreeBSD atrás de um roteador baseado em Linux (usando firmware DD-WRT ). O sistema FreeBSD está rodando o sshd e é regularmente investigado por vários script-kiddies.

Atualmente, ele executa um script que, ao ver mais de três tentativas mal-sucedidas de fazer login a partir do mesmo endereço IP, bloqueia completamente o endereço. O bloco costumava ser local (usando o ipfw do FreeBSD), mas eu gostaria de cobrir o LAN inteira - pedindo ao roteador para fazer o bloqueio. O que me leva a usar o meio de firewall do Linux - o iptables.

Se eu usar:

iptables -I INPUT -s $IP -j DROP

o roteador rejeitará o IP tentando entrar em contato com o próprio roteador - mas ficará feliz em encaminhar a conexão à LAN.

Se eu usar

iptables -I FORWARD -s $IP -j DROP

ele impedirá que invasores alcancem minha LAN, mas manterá o roteador acessível a eles.

Existe alguma regra única - ou, pelo menos, comando único - posso fazer com que cada IP de ataque intercepte todo e qualquer tráfego para e a partir dele?

Obrigado!

    
por Mikhail T. 08.03.2014 / 00:36

4 respostas

2

Bem, não realmente. Você precisa das duas regras do iptables porque precisa bloquear dois fluxos diferentes. Mas, em vez de bloquear diretamente os endereços IP: configure um ipset blacklist

ipset create blacklist hash:ip hashsize 4096

Configure as regras do iptables para corresponder a essa lista negra, um esforço único:

 iptables -I INPUT  -m set --match-set blacklist src -j DROP 

iptables -I FORWARD  -m set --match-set blacklist src -j DROP 

E então você pode usar um único comando para adicionar cada um dos endereços IP que você precisa bloquear:

 ipset add blacklist 192.168.0.5 
 ipset add blacklist 192.168.0.100 

Etc.

    
por 15.03.2015 / 07:34
1

Não existe uma única regra que eu conheça, mas acho que se você bloquear uma, você deve ser bom. Você pode participar dos dois comandos com & & se você realmente precisa estar em uma linha. Veja como você bloqueia o tráfego de entrada:

iptables -I INPUT -p tcp -s $IP -j DROP

Se você quiser bloquear o teste de porta, poderá alterar o protocolo para icmp . O tráfego de saída pode ser bloqueado com -I OUTPUT e o tráfego de encaminhamento pode ser bloqueado com -I FORWARD .

    
por 08.03.2014 / 04:02
0

A cadeia de criação de relatórios na tabela mangle é verificada quanto a conexões com o host e a serem encaminhadas.

Eu não tenho um sistema para testar no momento, mas tente criar uma regra aqui.

    
por 08.03.2014 / 03:21
-1

Se tudo o que você deseja bloquear é conexões TCP, então você pode usar

iptables -I OUTPUT -d $IP -j DROP

Dessa forma, todas as respostas para todas as conexões de entrada para INPUT ou respostas de conexões FORWARDed não voltarão para $ IP. A única desvantagem é que as máquinas receberão SYN e tentarão enviar SYN / ACK por algum tempo antes de desistir. Isso deve ter um impacto insignificante no desempenho, já que isso já está otimizado o suficiente no sistema operacional moderno para proteger contra ataques de inundação por SYN.

    
por 08.03.2014 / 05:04