connlimit
permite-me limitar o número de conexões por cliente/serviço. Como eu combinaria essa regra com os conjuntos de IP disponíveis nas versões mais recentes do kernel Linux e do netfilter?
Responder1
Digamos que temos um ipset chamado MYTESTSET
e que esse ipset é do tipo hash:ip
. Ele armazenará apenas endereços IP.
Em seguida, compare com o seu IPset e depois com connlimit
a extensão de correspondência, com os parâmetros desejados.
iptables -A INPUT -p tcp -m set --match-set MYTESTSET src -m connlimit --connlimit-above 1 --connlimit-saddr --connlimit-mask 32 -j DROP
Isso fará o seguinte: para cada fonte dentro do conjunto de IPs, as conexões serão contadas e se houver mais de uma (--connlimit-above 1), ela será descartada, limitando assim o número de conexõespor fonte no ipsetpara 1. (Você também pode combinar de outra forma, usando --connlimit-upto xxx
e -j ACCEPT
em vez de DROP
)
Se quiser considerar todo o conjunto e permitir 1 conexãopara todas as fontes no ipsetem seguida, coloque a --connlimit-mask
chave em 0.