iptables: módulo recente

5

Estou usando o módulo "recente" para evitar a varredura de porta, como:

-A INPUT -i eth0 -m recent --name PORTSCAN --update --seconds 60 -j DROP
-A INPUT -i eth0 -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT         -m recent --name PORTSCAN --set -j DROP

A opção --update , ao contrário do nome (ou seja, atualiza o valor antigo com um novo), não atualiza a entrada com a última visualização, mas adiciona outra. Na minha configuração simples, estou interessado apenas na última entrada. Eu não preciso de todo o histórico de pacotes vistos (isto é, para estatísticas).

Existe uma maneira, eu só poderia manter o último pacote visto? Costumava haver uma opção --reap , mas o AFAIK foi removido.

Minha preocupação é que, em um servidor ocupado, a lista do PORTSCAN possa crescer rapidamente bastante. Eu não sei qual é o limite, mas tenho certeza que deve haver algum limite.

Alguém poderia, por favor, avisar?

    
por user1968963 18.05.2013 / 09:10

2 respostas

7

Se você der uma olhada na página man do iptables especificamente na seção recent modules, há alguns parâmetros que parecem dar a você o controle que você está procurando:

excerto da seção do módulo iptables recent

The module itself accepts parameters, defaults shown:

   ip_list_tot=100
          Number of addresses remembered per table.

   ip_pkt_list_tot=20
          Number of packets per address remembered.

Então, de acordo com esses dois parâmetros, você pode controlar o número de endereços IP e os pacotes numéricos que o módulo recent "lembrará".

Lembre-se que este é um módulo do kernel, portanto, para aplicar essas configurações, você precisa defini-las no tempo de carregamento do módulo, da seguinte forma:

/sbin/modprobe ipt_recent ip_list_tot=2000 ip_pkt_list_tot=255

No meu sistema Fedora 14, o módulo é chamado de xt_recent , você pode ver que tipos de parâmetros ele pode usar usando modinfo :

$ modinfo xt_recent
filename:       /lib/modules/2.6.35.14-106.fc14.x86_64/kernel/net/netfilter/xt_recent.ko
alias:          ip6t_recent
alias:          ipt_recent
license:        GPL
description:    Xtables: "recently-seen" host matching
author:         Jan Engelhardt <[email protected]>
author:         Patrick McHardy <[email protected]>
srcversion:     00B9A3AB999488BFEB4FA6A
depends:        
vermagic:       2.6.35.14-106.fc14.x86_64 SMP mod_unload 
parm:           ip_list_tot:number of IPs to remember per list (uint)
parm:           ip_pkt_list_tot:number of packets per IP address to remember (max. 255) (uint)
parm:           ip_list_hash_size:size of hash table used to look up IPs (uint)
parm:           ip_list_perms:permissions on /proc/net/xt_recent/* files (uint)
parm:           ip_list_uid:default owner of /proc/net/xt_recent/* files (uint)
parm:           ip_list_gid:default owning group of /proc/net/xt_recent/* files (uint)

Verificando as configurações xt_recent

Todas as configurações deste módulo são mantidas em /sys/module/xt_recent . Especificamente, os parâmetros que você passa para ele são mantidos aqui:

$ ls -1 /sys/module/xt_recent/parameters/
ip_list_gid
ip_list_hash_size
ip_list_perms
ip_list_tot
ip_list_uid
ip_pkt_list_tot

Qualquer um dos parâmetros pode ser verificado simplesmente digitando os arquivos nesse diretório, por exemplo:

cat /sys/module/xt_recent/parameters/ip_pkt_list_tot

Isso nos diz que o valor padrão de para o parâmetro ip_pkt_list_tot é 20.

    
por 18.05.2013 / 12:48
1

Além da resposta dada acima, sugiro que você coloque uma tabela de MADUJOS adicionais antes da sua armadilha do PORTSCAN, e use-a para evitar o derramamento da última.

Então, quando o PORTSCAN for acionado, adicione um registro à tabela BADGUYS.

Algo parecido com isto:

-A INPUT --name PORTSCAN --rcheck --seconds 60 --reap --hits 20 -j set_bad
-A INPUT --name BADGUYS --rcheck --seconds 3600 --reap -j noway
-A INPUT <trap case> --name PORTSCAN --set
-A set_bad --name BADGUYS --set
-A noway -p tcp -j REJECT --reject-with tcp-reset
-A noway -j DROP
    
por 07.02.2018 / 18:23

Tags