Eu tenho um mapa ipset simples para rastrear ips suspeitos.
Esses meus comandos:
ipset flush
ipset -q destroy banlists
ipset create banlists hash:ip comment family inet hashsize 2048 maxelem 1048576 timeout 300
E eu digo ao iptables para cair se corresponder no ipset:
iptables -I INPUT 1 -m set -j DROP --match-set banlists src
iptables -I FORWARD 1 -m set -j DROP --match-set banlists src
Funciona mas eu quero
- toda a porta deve ser descartada
- excluir a porta 80 e 443
- limite de taxa compatível com ipset para evitar ddos, mas acessível
Se você quiser permitir as portas 80 e 443, você pode adicionar mais uma regra para
INPUT
chain:e mais uma regra para
FORWARD
chain:As regras anteriores permitirão acesso às portas 80 e 443 para todos os IPs. Para aplicar limite de taxa no ipset de banlists, você pode usar:
Uma maneira mais fácil (IMO) é usar
-A
switch em vez de-I
. Obviamente, você precisa revisar o conjunto de regras completo para garantir que ele esteja configurado conforme necessário (as regras são inspecionadas em ordem). Dessa forma, as regras aparecem na sequência normal conforme são escritas:As mesmas regras precisam ser aplicadas à
FORWARD
cadeia. Você pode personalizar osrecent
parâmetros do módulo conforme necessário, ou seja,hitcount
eseconds
.