Como faço para listar os endereços IP bloqueados pelo iptables?

12

Para evitar ataques de força bruta contra o ssh, adicionei algumas regras do iptables (abaixo). A pergunta é: como posso listar os endereços IP bloqueados?

(1)
iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH
iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 8 --rttl --name SSH -j DROP
    
por Eddie 03.06.2009 / 18:00

6 respostas

14

Uma opção seria registrar qualquer um dos seus pacotes perdidos com uma regra como:

iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 8 --rttl -j LOG --log-prefix "FW_DROPPED: "

Insira isso imediatamente antes da regra DROP . Então, você pode grep o arquivo syslog para qualquer coisa com "FW_DROPPED" nele e a lista de IPs estará lá. As entradas no arquivo de log se parecem com isto:

Jun  3 08:05:57 some-machine kernel: [15852451.420557] FW_DROPPED: IN=eth0 OUT= MAC=00:50:ba:4a:d9:e3:00:12:17:3a:e3:64:08:00 SRC=228.23.45.189 DST=192.168.1.1 LEN=48 TOS=0x00 PREC=0x00 TTL=106 ID=10941 PROTO=TCP SPT=58212 DPT=22 WINDOW=65535 RES=0x00 SYN URGP=0

Então, excluindo o que segue, "SRC=" mostrará os IPs descartados. Classifique isso, eliminando duplicatas e você terá sua lista.

Eu encontrei o Iptables Tutorial como a documentação mais útil para o iptables / netfilter .

    
por 03.06.2009 / 18:12
5

Você pode encontrar detalhes em / proc / net / ipt_recent / SSH.

Este artigo tem mais informações.

    
por 03.06.2009 / 18:19
4

Olhe para

/proc/net/ipt_recent/YOURNAME

em que YOURNAME é o nome que você usou com a opção --name em sua regra do iptables.

    
por 03.06.2009 / 18:18
2

Aqui está um simples folheto:

$ iptables -L -n --line
    
por 12.12.2013 / 13:26
1

O que eu faço, por exemplo, para spoofing de endereço de entrada, é definir a cadeia SPOOF_REJECT :

iptables -N SPOOF_REJECT
iptables -A SPOOF_REJECT -j LOG --log-prefix "Input spoof detected: "
iptables -A SPOOF_REJECT -j REJECT

depois, para enviar pacotes para essa cadeia se eles forem falsificados:

iptables -A INPUT -i $EXT_DEV1 -s $INT_NET -j SPOOF_REJECT
iptables -A INPUT -i $EXT_DEV2 -s $INT_NET -j SPOOF_REJECT

Você poderia fazer algo assim para cada categoria de pacotes descartados ou descartados para obter uma linha no syslog para procurar, depois periodicamente grep, cut, sort, para obter apenas os endereços IP dessas linhas de log.

O benefício de usar cadeias individuais para cada categoria é que sua configuração fica mais direta e fica mais fácil ler a configuração iptables . À medida que você adiciona mais e mais regras, ficará satisfeito em usar cadeias individuais para ações específicas diferentes.

    
por 03.06.2009 / 20:49
1

"A questão é: como posso listar os endereços IP bloqueados?"

Crie uma cadeia BANNED:

iptables -N BANNED
iptables -F BANNED

Crie uma cadeia de registro:

iptables -N BANNEDLOG
iptables -F BANNEDLOG
iptables -A BANNEDLOG -j LOG --log-prefix "BANNED:" --log-level 6
iptables -A BANNEDLOG -j DROP

Adicione o salto à cadeia proibida na cadeia INPUT antes da maioria das outras regras

...
iptables -A INPUT -j BANNED
...

Agora adicione ipaddresses à cadeia banida:

flock -w 5 /var/lock/iptables -c 'iptables -A BANNED -s 140.130.20.202/32 -i eth0 -m comment --comment "2012-03-19 23:49:33 accesslog" -j BANNEDLOG'
etc...

Você também pode usá-lo como um banco de dados com as opções de comentário, para que você possa saber quando e por que etc. O flock é importante quando o iptables é freqüentemente atualizado por muitos processos - parece que o iptables não tem nenhum bloqueio embutido nele.

Para ver os endereços e regras proibidos na cadeia proibida:

iptables -S BANNED

Para visualizar endereços de IP exclusivos apenas classificados:

iptables -S BANNED | egrep -o '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+' | sort -u

Eu tenho um número de daemons em execução nos meus servidores checando os arquivos syslog e weblogs, então, se alguma coisa desagradável está sendo tentada por qualquer pessoa, o endereço deles é automaticamente banido por alguns dias, dependendo do tipo e gravidade e do número de ataques anteriores . A informação é registrada em um banco de dados mysql e expirada periodicamente. Os endereços também são distribuídos para todas as outras máquinas no cluster através da replicação do mysql, assim eles também são protegidos e mantidos em sincronia. Meu software também procura o proprietário da rede e envia uma reclamação ao ISP.

Após 10 anos de trabalho, espero disponibilizá-lo para que todos possam usar em breve. Atualmente tenho cerca de 1,5 milhão de históricos de endereços IP e centenas de milhares de e-mails e ataques ssh relatados, ajudando a limpar a rede. Se mais o usasse, espero que tenha mais impacto.

    
por 20.03.2012 / 07:46