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

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

Para evitar ataques de força bruta contra ssh, adicionei algunsregras de iptables(abaixo). A questão é: 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

Responder1

Uma opção seria registrar qualquer um dos seus pacotes descartados 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 DROPregra. Então, você pode procurar no arquivo syslog qualquer coisa que contenha "FW_DROPPED" e a lista de IPs estará lá. As entradas no arquivo de log são mais ou menos assim:

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

Portanto, cortar o que segue "SRC=" mostrará os IPs perdidos. Classifique isso, eliminando duplicatas, e você terá sua lista.

Eu encontrei oTutorial do Iptablesser a documentação mais útil para iptables/netfilter.

Responder2

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

Este artigotem mais informações.

Responder3

Olhe para

/proc/net/ipt_recent/YOURNAME

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

Responder4

O que faço, por exemplo, para falsificação 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

então, para enviar pacotes para esta 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 rejeitados para obter uma linha no syslog para procurar e, em seguida, periodicamente executar grep, cortar, classificar, 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 mais fácil de ler sua iptablesconfiguração. À medida que você adiciona mais e mais regras, você ficará feliz por ter usado cadeias individuais para ações específicas diferentes.

informação relacionada