Por que o iptables aceita pacotes em uma determinada porta, quando está fechado?

2

Eu estou no Linux Mint.

Eu tenho um endereço público estático atribuído no meu roteador e encaminhei manualmente uma determinada porta para o torrent, então não via UPnP, que eu desativei tanto no roteador, quanto no aplicativo de transmissão de bits.

Funciona, em certo sentido, que a Transmissão mostra que a porta está aberta. Mas quando a transmissão está fechada, então deve ser a porta, como eu a entendo.

Mas há novos pacotes sendo aceitos em iptables , embora a Transmissão esteja encerrada.

Por quê? O que posso fazer?

Aqui está o iptables -L -v :

# iptables -L -v

Chain INPUT (policy DROP 7514 packets, 585K bytes)
 pkts bytes target     prot opt in     out     source               destination         
  251 10040 DROP       all  --  any    any     anywhere             anywhere             ctstate INVALID
 4330  371K DROP       icmp --  any    any     anywhere             anywhere            
    0     0 DROP       igmp --  any    any     anywhere             anywhere            
 4394  850K ACCEPT     all  --  lo     any     anywhere             anywhere            
1324K  462M ACCEPT     all  --  any    any     anywhere             anywhere             ctstate RELATED,ESTABLISHED
 6751  415K ACCEPT     tcp  --  any    any     anywhere             anywhere             tcp dpt:56874

Chain FORWARD (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 1484K packets, 2391M bytes)
 pkts bytes target     prot opt in     out     source               destination         

e o mesmo um minuto depois:

# iptables -L -v

Chain INPUT (policy DROP 7869 packets, 611K bytes)
 pkts bytes target     prot opt in     out     source               destination         
  251 10040 DROP       all  --  any    any     anywhere             anywhere             ctstate INVALID
 4330  371K DROP       icmp --  any    any     anywhere             anywhere            
    0     0 DROP       igmp --  any    any     anywhere             anywhere            
 4437  863K ACCEPT     all  --  lo     any     anywhere             anywhere            
1324K  462M ACCEPT     all  --  any    any     anywhere             anywhere             ctstate RELATED,ESTABLISHED
 6983  430K ACCEPT     tcp  --  any    any     anywhere             anywhere             tcp dpt:56874

Chain FORWARD (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 1485K packets, 2391M bytes)
 pkts bytes target     prot opt in     out     source               destination 

Quanto aos comentários:

netstat -nap | grep <my port number here>

O comando mostra um resultado vazio.

    
por Vlastimil 14.09.2015 / 18:23

1 resposta

12

Não é tarefa do iptables descartar um pacote quando a porta é fechada, esse é o trabalho da pilha de rede normal (como sem o iptables). (Para ser preciso: a pilha de rede não apenas descarta o pacote, mas também educadamente informa ao outro lado que não há nada escutando).

Só porque o iptables aceita um pacote não significa que há algo escutando.

Atualização: Como mencionado nos comentários, existe um risco. Mas isso não é de aceitar pacotes no porto fechado em si, mas da diferença no comportamento nesta porta comparado a todos os outros: Dropping vs. rejeitando. A solução é não descartar pacotes em todas as outras portas, mas rejeitá-los como a pilha de rede faria:

Se o pacote for TCP, use -j REJECT --reject-with tcp-reset , para UDP e outros protocolos baseados em porta, use -j REJECT --reject-with icmp-port-unreachable . Como cada simples DROP é agora dividido em duas regras, é melhor criar uma nova cadeia apenas para rejeitar e pular para essa cadeia onde quer que você queira descartar antes.

Use um portmapper como nmap para verificar os resultados.

    
por 14.09.2015 / 19:01