estou usando Debian 8 linux
.
Estou tentando bloquear o acesso de entrada a algumas portas para a maioria dos endereços IP, exceto por uma pequena lista selecionada de endereços IP. Estou fazendo o seguinte, mas não parece funcionar:
% sudo /sbin/iptables -v -A INPUT -p tcp -m set '!' --match-set allow-list src -m multiport --dports 110,143,993,995 -j DROP
Sempre que houver uma tentativa de acesso a qualquer uma dessas portas de um endereço IP que não esteja em allow-list
, essa tentativa ainda será bem-sucedida.
Estas são as primeiras linhas de allow-list
:
% sudo /sbin/ipset list allow-list
Name: allow-list
Type: hash:net
Revision: 6
Header: family inet hashsize 16384 maxelem 262144
Size in memory: 687888
References: 2
Members:
125.8.0.0/13
160.94.0.0/15
104.37.68.0/22
205.233.22.0/23
[ ... more CIDR entries ... ]
E esta é a configuração atual do iptables:
% sudo /sbin/iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
DROP tcp -- anywhere anywhere ! match-set allow-list src multiport dports pop3,imap2,imaps,pop3s
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
O que estou fazendo de errado?
Muito obrigado antecipadamente.
Agora eu percebo o que eu estava fazendo incorretamente. A seguinte correção funciona para mim:
Em outras palavras, primeiro permita que os IPs
allow-list
acessem pela lista de portas e, em seguida, elimine todos os outros IPs que tentarem acessar por meio dessa lista de portas.Além disso, originalmente deixei de fora a
-p tcp
opção, que é necessária ao lidar com portas TCP.UPDATE : Originalmente, usei incorretamente
-A INPUT
acima. Já alterei para o correto-I INPUT
.ATUALIZAÇÃO ADICIONAL : ... e com
-I
, eu tive que mudar o das regras:DROP
precisa ser definido antesALLOW
neste caso.