ipset se comporta de maneira diferente ao adicionar endereço IP do iptables e do comando ipset

3

Eu tenho uma lista criada abaixo do comando

ipset create foo hash:ip maxelem 40000000 timeout 180

Isto é como o foo vazio parece

#ipset list foo
Name: foo
Type: hash:ip
Revision: 1
Header: family inet hashsize 1024 maxelem 40000000 timeout 180
Size in memory: 16504
References: 0
Members:

Em seguida, adicionei uma sub-rede / 16, o que significa 65535 endereços IP. Como podemos ver abaixo os comandos, o hashsize foi alterado dinamicamente e os endereços IP foram adicionados com sucesso.

#ipset add foo 192.168.0.0/16


#ipset list foo | head -10
Name: foo
Type: hash:ip
Revision: 1
Header: family inet hashsize 32768 maxelem 40000000 timeout 180
Size in memory: 2925208
References: 0
Members:
192.168.165.92 timeout 175
192.168.241.240 timeout 175
192.168.84.49 timeout 175

# ipset list foo | wc -l
65543

Agora estou destruindo este conjunto e criando novamente com o mesmo comando acima, para que eu equalize o hashsize para 1024 novamente. Então eu adicionei abaixo a regra para o iptables e enviando pacotes aleatórios com hping3

iptables -A PREROUTING -t raw -j SET --add-set foo src

hping3  --flood  --rand-source <server-ip>

Enquanto o ataque continua, parece que o iptables não pode adicionar mais endereços IP depois de algum ponto. E hashsize permanece mesmo

# ipset list foo |  wc -l
12295

# ipset list foo |  head -10
Name: foo
Type: hash:ip
Revision: 1
Header: family inet hashsize 1024 maxelem 40000000 timeout 180
Size in memory: 262264
References: 1
Members:
5.125.171.17 timeout 174
92.5.220.202 timeout 174
164.124.160.24 timeout 174

Se eu repetir este teste aumentando o hashsize manualmente, isso fará com que o iptables possa adicionar mais endereços IP.

Eu fiz este teste no CentOS 7 com versões abaixo

kernel 3.15.9
ipset 6.19
iptables 1.4.21

Minha pergunta é: qual é o motivo dessa cituação? Isso é uma precaução de segurança ou algo assim?

    
por ibrahim 28.06.2016 / 12:38

1 resposta

0

it looks like iptables can not add more IP addresses after some point

Esse é o comportamento esperado de uma hashtable ipset , conforme descrito no manual na Introdução:

... When entries added by the SET target of iptables/ip6tables, then the hash size is fixed and the set won't be duplicated, even if the new entry cannot be added to the set.

Nenhuma razão é dada, mas pode-se especular que impedir um firewall de potencialmente reivindicar uma quantidade ilimitada de memória é uma coisa boa TM ....

    
por 28.06.2016 / 15:05