O Netcat envia pacotes UDP com sucesso, apesar de todo o tráfego UDP estar bloqueado via Network ACL

O Netcat envia pacotes UDP com sucesso, apesar de todo o tráfego UDP estar bloqueado via Network ACL

Criei uma instância AWS na VPC padrão e bloqueei todo o tráfego UDP nas Network ACLs. Esta é a aparência das minhas regras de saída:

Número da regra Tipo Protocolo Faixa de portas Destino Permitem negar
99 Tudo UDP UDP (17) Todos 0.0.0.0/0 Negar
100 Todos TCP TCP (6) Todos 0.0.0.0/0 Permitir
* Todo o tráfego Todos Todos 0.0.0.0/0 Negar

Se eu usar traceroute, não recebo nada, como esperado:

[ec2-user@ip-172-31-32-169 ~]$ traceroute 1.1.1.1
traceroute to 1.1.1.1 (1.1.1.1), 30 hops max, 60 byte packets
 1  * * *
 2  * * *
 3  * * *
 4  * * *
 5  * * *
 6  * * *
 ...

No entanto, se eu usar nc, eufazerreceba uma resposta, o que é inesperado:

[ec2-user@ip-172-31-32-169 ~]$ nc -vzu 1.1.1.1 53
Ncat: Version 7.50 ( https://nmap.org/ncat )
Ncat: Connected to 1.1.1.1:53.
Ncat: UDP packet sent successfully
Ncat: 1 bytes sent, 0 bytes received in 2.01 seconds.

Por que isso acontece? Além disso, sempre leva 2 segundos para obter uma resposta. Por que 2 segundos?

Responder1

TL;DR - UDP está sendo bloqueado pela regra NACL. A resposta que você recebe ncé enganosa e acredito, mas não confirmei, que o tempo 2.01 é um tempo limite.

O Netcat está afirmando que enviou um pacote, o que foi feito. Mas o seu NACL está agindo como um firewall na camada 3/4 para a sub-rede à qual sua instância do EC2 está anexada. O pacote está sendo enviado do host, mas o NACL o está bloqueando (e descartando-o). Como você está usando o -zsinalizador, ele interrompe imediatamente a conexão e há um tempo limite de dois segundos associado a ele. Presumo que os dois segundos sejam o tempo limite porque é sempre o valor de retorno. (Não tenho tempo para analisar isso no código-fonte)

Recriei seu NACL em um VPC e obtive o mesmo resultado acima, incluindo o valor "recebido" exato. Mas quando tento fazer uma pesquisa nesse site, digele expira quando o Deny está em vigor.

Ncat: Version 7.50 ( https://nmap.org/ncat )
Ncat: Connected to 1.1.1.1:53.
Ncat: UDP packet sent successfully
Ncat: 1 bytes sent, 0 bytes received in 2.01 seconds.

[root@ip-10-99-0-198 centos]# dig +short @1.1.1.1 www.google.com
;; connection timed out; no servers could be reached

Quando a Negação não está em vigor, as digobras funcionam conforme o esperado. A última dica é que se você executar uma nmapvarredura nessa porta UDP, receberá uma resposta "aberta | filtrada".

Infelizmente, firewalls e dispositivos de filtragem também são conhecidos por descartar pacotes sem responder. Portanto, quando o Nmap não recebe resposta após várias tentativas, ele não consegue determinar se a porta está aberta ou filtrada.

Referências
ACLs de rede AWS VPC
Página de manual do ncat
Varredura UDP nmap

Responder2

Você tem uma regra de número inferior processada antes da regra 99 que permite UDP. As regras são avaliadas em ordem crescente.

"Número da regra. As regras são avaliadas começando com a regra de número mais baixo. Assim que uma regra corresponde ao tráfego, ela é aplicada independentemente de qualquer regra de número mais alto que possa contradizê-la."

https://docs.aws.amazon.com/vpc/latest/userguide/vpc-network-acls.html#nacl-rules

informação relacionada