iptables bloqueiam IP por x horas não funcionando?

2

No meu servidor Linux, eu quero proibir IPs que acessam certas portas por 24 horas usando IPtables. Para isso, eu uso as seguintes regras de IPtables:

# Check if IP is on banlist, if yes then drop
-A INPUT -m state --state NEW -j bancheck
-A bancheck -m recent --name blacklist   --rcheck --reap   --seconds 86400     -j LOG --log-prefix "IPT blacklist_ban: "
-A bancheck -m recent --name blacklist   --rcheck --reap   --seconds 86400     -j DROP

# PUT IPs on banlist
-A banlist -m recent --set --name blacklist -j LOG --log-prefix "IPT add_IP_to_blacklist: "
-A banlist -j DROP

# Ban access to these ports
-A INPUT -p tcp -m multiport --dports 23,25,445,1433,2323,3389,4899,5900   -j LOG --log-prefix "IPT syn_naughty_ports: "
-A INPUT -p tcp -m multiport --dports 23,25,445,1433,2323,3389,4899,5900   -j banlist

Nos registros, posso verificar se isso funciona:

Mar 13 02:12:23 kernel: [39534099.648488] IPT syn_naughty_ports: IN=eth0 OUT= MAC=... SRC=218.189.140.2 DST=... LEN=52 TOS=0x00 PREC=0x00 TTL=113 ID=29768 DF PROTO=TCP SPT=65315 DPT=25 WINDOW=8192 RES=0x00 SYN URGP=0 
Mar 13 02:12:23 kernel: [39534099.648519] IPT add_IP_to_blacklist: IN=eth0 OUT= MAC=... SRC=218.189.140.2 DST=...4 LEN=52 TOS=0x00 PREC=0x00 TTL=113 ID=29768 DF PROTO=TCP SPT=65315 DPT=25 WINDOW=8192 RES=0x00 SYN URGP=0 
Mar 13 02:12:26 kernel: [39534102.664136] IPT blacklist_ban: IN=eth0 OUT= MAC=... SRC=218.189.140.2 DST=... LEN=52 TOS=0x00 PREC=0x00 TTL=113 ID=4724 DF PROTO=TCP SPT=65315 DPT=25 WINDOW=8192 RES=0x00 SYN URGP=0 
Mar 13 02:12:32 kernel: [39534108.666602] IPT blacklist_ban: IN=eth0 OUT= MAC=... SRC=218.189.140.2 DST=... LEN=48 TOS=0x00 PREC=0x00 TTL=113 ID=20826 DF PROTO=TCP SPT=65315 DPT=25 WINDOW=8192 RES=0x00 SYN URGP=0 

Mas os logs também mostram que, pouco mais de duas horas depois, o mesmo IP acessa novamente o sistema. Em vez de ser bloqueado logo no início através da cadeia "bancheck", o IP pode acessar a porta, o que resulta em ser colocado na "banlist" novamente (a porta de destino em ambos os casos era a mesma porta 25).

Mar 13 04:35:59 kernel: [39542718.875859] IPT syn_naughty_ports: IN=eth0 OUT= MAC=... SRC=218.189.140.2 DST=... LEN=52 TOS=0x00 PREC=0x00 TTL=113 ID=4533 DF PROTO=TCP SPT=57719 DPT=25 WINDOW=8192 RES=0x00 SYN URGP=0 
Mar 13 04:35:59 kernel: [39542718.875890] IPT add_IP_to_blacklist: IN=eth0 OUT= MAC=... SRC=218.189.140.2 DST=... LEN=52 TOS=0x00 PREC=0x00 TTL=113 ID=4533 DF PROTO=TCP SPT=57719 DPT=25 WINDOW=8192 RES=0x00 SYN URGP=0 
Mar 13 04:36:02 kernel: [39542721.880524] IPT blacklist_ban: IN=eth0 OUT= MAC=... DST=... LEN=52 TOS=0x00 PREC=0x00 TTL=113 ID=12505 DF PROTO=TCP SPT=57719 DPT=25 WINDOW=8192 RES=0x00 SYN URGP=0 
Mar 13 04:36:08 kernel: [39542727.882973] IPT blacklist_ban: IN=eth0 OUT= MAC=... SRC=218.189.140.2 DST=... LEN=48 TOS=0x00 PREC=0x00 TTL=113 ID=29092 DF PROTO=TCP SPT=57719 DPT=25 WINDOW=8192 RES=0x00 SYN URGP=0 

Mas se eu entendi o direito de regras IPtables, ele deve ser bloqueado dentro das primeiras linhas, contanto que seja dentro das 24 horas, e não ser capaz de ir tão longe no conjunto de regras IPtables onde está novamente sendo encontrado para violar a regra de portos, e novamente colocar no "banlist".

Estou fazendo algo errado ou entendo mal o modo como as regras funcionam?

    
por azenz 13.03.2017 / 14:10

1 resposta

0

Eu nunca tentei usar o módulo recente, mas eu dei uma olhada na página de manual dele (iptables-extensions (8)), e existem alguns parâmetros adicionais com padrões a considerar ....

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.
   ip_list_hash_size=0
          Hash table size. 0 means to calculate it based on ip_list_tot, default: 512.

Portanto, a lista de endereços proibidos não é ilimitada (o que é bom).

Então ...

  • Você tem muitos IPs sendo adicionados à banlist (ou seja, acima de 100), ou foi apenas o único ator ruim?
  • Alguma outra coisa fez com que seus iptables fossem limpos e reconstruídos?
  • É possível que eles estejam executando o escaneamento de portas, fazendo com que um dos outros buffers nas opções perca os registros anteriores. (Eu acho que ele deveria estar armazenando apenas o IP de origem, mas não totalmente certo)
por 23.03.2018 / 01:09