Ich habe eine AWS-Instanz im Standard-VPC erstellt und den gesamten UDP-Verkehr in den Netzwerk-ACLs blockiert. So sehen meine ausgehenden Regeln aus:
Regelnummer | Typ | Protokoll | Portbereich | Ziel | Zulassen/Ablehnen |
---|---|---|---|---|---|
99 | Alle UDP | UDP (17) | Alle | 0.0.0.0/0 | Leugnen |
100 | Alle TCP | TCP (6) | Alle | 0.0.0.0/0 | Erlauben |
* | Der gesamte Verkehr | Alle | Alle | 0.0.0.0/0 | Leugnen |
Wenn ich verwende traceroute
, erhalte ich wie erwartet nichts:
[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 * * *
...
Wenn ich jedoch verwende nc
,Tunbekomme eine unerwartete Antwort zurück:
[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.
Warum passiert das? Außerdem dauert es immer 2 Sekunden, bis man eine Antwort bekommt. Warum 2 Sekunden?
Antwort1
TL;DR – UDP wird durch die NACL-Regel blockiert. Die Antwort, die Sie erhalten, nc
ist irreführend und ich glaube, habe es aber nicht bestätigt, dass die Zeit von 2,01 Sekunden ein Timeout ist.
Netcat gibt an, dass es ein Paket gesendet hat, was es auch getan hat. Aber Ihr NACL fungiert als Firewall auf Schicht 3/4 für das Subnetz, an das Ihre EC2-Instanz angeschlossen ist. Das Paket wird vom Host gesendet, aber das NACL blockiert es (und verwirft es). Da Sie das -z
Flag verwenden, wird die Verbindung sofort unterbrochen und es ist ein Timeout von zwei Sekunden damit verbunden. Ich gehe davon aus, dass die zwei Sekunden das Timeout sind, da dies immer der Rückgabewert ist. (Ich habe keine Zeit, dies im Quellcode nachzuvollziehen.)
Ich habe Ihre NACL in einer VPC neu erstellt und das gleiche Ergebnis wie oben erhalten, einschließlich des genauen „empfangenen“ Wertes. Aber wenn ich versuche, diese Site zu durchsuchen, tritt eine dig
Zeitüberschreitung auf, wenn die Ablehnung aktiviert ist.
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
Wenn die Ablehnung nicht aktiviert ist, dig
funktioniert es wie erwartet. Der letzte Hinweis ist, dass Sie nmap
eine „offene|gefilterte“ Antwort erhalten, wenn Sie einen Scan auf diesem UDP-Port ausführen.
Leider ist auch bekannt, dass Firewalls und Filtergeräte Pakete ohne Antwort verwerfen. Wenn Nmap also nach mehreren Versuchen keine Antwort erhält, kann es nicht feststellen, ob der Port offen oder gefiltert ist.
Antwort2
Sie haben eine Regel mit niedrigerer Nummer, die vor Regel 99 verarbeitet wird, die UDP zulässt. Regeln werden in aufsteigender Reihenfolge ausgewertet.
„Regelnummer. Regeln werden beginnend mit der Regel mit der niedrigsten Nummer ausgewertet. Sobald eine Regel mit dem Datenverkehr übereinstimmt, wird sie angewendet, unabhängig von Regeln mit einer höheren Nummer, die ihr möglicherweise widersprechen.“
https://docs.aws.amazon.com/vpc/latest/userguide/vpc-network-acls.html#nacl-rules