Warum werden einige Ports von nmap gefiltert und andere nicht?

38

Ich scanne einen Server, der eine ziemlich einfache Firewall haben sollte, mit iptables : Standardmäßig ist alles außer DROPped RELATEDund ESTABLISHEDPaketen. Die einzigen NEWzulässigen Pakettypen sind TCP-Pakete an Port 22 und 80 und das wars (kein HTTPS auf diesem Server).

Das Ergebnis von nmap auf den ersten 2048 Ports ergibt 22 und 80 so offen, wie ich es erwarte. Einige Ports werden jedoch als "gefiltert" angezeigt.

Meine Frage ist: warum erscheinen Port 21, 25 und 1863 als "gefiltert" und die 2043 anderen Ports nicht als gefiltert?

Ich habe erwartet, nur 22 und 80 als "offen" zu sehen.

Wenn es normal ist, 21,25 und 1863 als "gefiltert" anzuzeigen, warum werden dann nicht auch alle anderen Ports als "gefiltert" angezeigt?

Hier ist die Ausgabe von nmap :

# nmap -PN 94.xx.yy.zz -p1-2048

Starting Nmap 6.00 ( http://nmap.org ) at 2014-06-12 ...
Nmap scan report for ksXXXXXX.kimsufi.com (94.xx.yy.zz)
Host is up (0.0023s latency).
Not shown: 2043 closed ports
PORT     STATE    SERVICE
21/tcp   filtered ftp
22/tcp   open     ssh
25/tcp   filtered smtp
80/tcp   open     http
1863/tcp filtered msnp

Ich verstehe wirklich nicht, warum ich 2043 geschlossene Ports habe:

Not shown: 2043 closed ports

und nicht 2046 geschlossene Häfen.

Hier ist ein lsof auf dem Server gestartet:

# lsof -i -n
COMMAND   PID USER   FD   TYPE   DEVICE SIZE NODE NAME
named    3789 bind   20u  IPv4     7802       TCP 127.0.0.1:domain (LISTEN)
named    3789 bind   21u  IPv4     7803       TCP 127.0.0.1:953 (LISTEN)
named    3789 bind  512u  IPv4     7801       UDP 127.0.0.1:domain 
sshd     3804 root    3u  IPv4     7830       TCP *:ssh (LISTEN)
sshd     5408 root    3r  IPv4 96926113       TCP 94.xx.yy.zz:ssh->aa.bb.cc.dd:37516 (ESTABLISHED)
sshd     5411    b    3u  IPv4 96926113       TCP 94.xx.yy.zz:ssh->aa.bb.cc.dd:37516 (ESTABLISHED)
java    16589    t   42u  IPv4 88842753       TCP *:http-alt (LISTEN)
java    16589    t   50u  IPv4 88842759       TCP *:8009 (LISTEN)
java    16589    t   51u  IPv4 88842762       TCP 127.0.0.1:8005 (LISTEN)

(Beachten Sie, dass Java / Tomcat auf Port 8009 lauscht, dieser Port jedoch von der Firewall DROPpt wird.)

Cedric Martin
quelle
Erhalten Sie die gleichen Ergebnisse, wenn Sie andere Hosts scannen?
Creek
@ Creek: ah, habe es gerade auf slashdot.org versucht und habe 80 und 443 geöffnet, aber auch 25 / smtp gefiltert. Aber dann haben Sie mir die Idee gegeben, denselben Server nicht von meinem Heimcomputer, sondern von einem anderen Server, den ich besitze, zu nmappen: Ich erhalte nicht die 3 gefilterten Ports, aber dann erhalte ich 53 / domain / closed , 443 / https / closed und 953 / rndc / closed . (meine beiden dedizierten Server werden bei OVH / Frankreich gehostet).
Cedric Martin
1
Wenn Sie wirklich sehen möchten, was nmappassiert, sollten Sie mit root-Rechten scannen, indem Sie SYN scan ( -sS) und verwenden --packet-trace. Nehmen Sie sich auch ein paar Minuten Zeit und lesen Sie die Manpage. Sie werden überrascht sein, welche Edelsteine ​​sich dort befinden
Creek,
Ich würde diese Ports auch vorübergehend öffnen und prüfen, ob Pakete zu ihnen durchkommen.
Mark Hurd

Antworten:

25

Die Anweisung 'Gefilterter Port' von nmap unterscheidet sich je nach Scanmethode.

Der Standard-Scan (TCP-Scan bei nichtprivilegierten Benutzern oder Half-Open-Scan -sS bei Superuser) basiert auf dem TCP-Protokoll. (benannter 3-Wege-Hanshake)

  • Ein Client (Sie) gibt eine SYN aus, wenn der Server SYN / ACK antwortet: Dies bedeutet, dass der Port offen ist !

  • Sie geben ein SYN, wenn der Server RST antwortet: Es bedeutet , dass der Port schließen !

  • Sie geben eine SYN aus, wenn der Server nicht antwortet oder mit einem ICMP-Fehler antwortet: Dies bedeutet, dass der Port gefiltert wird . Wahrscheinlich blockiert eine IDS / Statefull Firewall Ihre Anfrage.)

Um den tatsächlichen Status des Ports zu ermitteln, haben Sie folgende Möglichkeiten:

Das ausgezeichnete Buch " Nmap Network Discovery ", geschrieben von seinem Schöpfer Fyodor, erklärt dies sehr gut. Ich zitiere

Gefiltert: Nmap kann nicht feststellen, ob der Port offen ist, da die Paketfilterung verhindert, dass die Tests den Port erreichen. Die Filterung kann von einem dedizierten Firewall-Gerät, von Router-Regeln oder von einer hostbasierten Firewall-Software stammen. Diese Ports frustrieren Angreifer, weil sie so wenig Informationen liefern. Manchmal antworten sie mit ICMP-Fehlermeldungen wie Typ 3 Code 13 (Ziel nicht erreichbar: Kommunikation administrativ verboten), aber Filter, die einfach Sonden löschen, ohne zu antworten, sind weitaus häufiger. Dies zwingt Nmap, es mehrmals zu wiederholen, nur für den Fall, dass der Test aufgrund einer Überlastung des Netzwerks nicht gefiltert wird. Diese Art der Filterung verlangsamt das Scannen erheblich.

offen | gefiltert: Nmap versetzt Ports in diesen Zustand, wenn nicht festgestellt werden kann, ob ein Port offen oder gefiltert ist. Dies tritt bei Scan-Typen auf, bei denen offene Ports keine Antwort geben. Das Fehlen einer Antwort kann auch bedeuten, dass ein Paketfilter den Test oder eine von ihm ausgelöste Antwort verworfen hat. Nmap weiß also nicht genau, ob der Port offen ist oder gefiltert wird. Die UDP-, IP-Protokoll-, FIN-, NULL- und Xmas-Scans klassifizieren Ports auf diese Weise.

geschlossen | gefiltert: Dieser Status wird verwendet, wenn Nmap nicht feststellen kann, ob ein Port geschlossen oder gefiltert ist. Es wird nur für den in Abschnitt 5.10, „TCP-Leerlauf-Scan (-sl)“ beschriebenen IP-ID-Leerlauf-Scan verwendet.

Florian Bidabe
quelle
Wie entferne ich den Filter von Port 22? Angenommen, ich verwende Google Domains ...
IgorGanapolsky
"Filter aufheben"? Nun, Sie fangen den Datenverkehr auf Ihrer Firewall bis 22 nicht ab, daher wird er nicht gefiltert ... Sie würden dann als Antwort auf die nmap-Sonde "Öffnen" oder "Schließen" erhalten
Florian Bidabe
Was scannen Sie?
Florian Bidabe
Ich benutze diesen Befehl: sudo nmap -oG - -T4 -A -p22 -v pi.eazyigz.com | grep ssh
IgorGanapolsky
1
"-T4" ist nicht erforderlich, bereits in "-A" angegeben ... in Bezug auf die Sonde impliziert sudo nmap, dass ein Syn-Scan verwendet wird (-sS). "-A" ist eine kürzere Version von "-T4" + "- sV" + "- O". Wenn die Diensterkennung (-sV) den SSH-Server nicht überprüft, ist der Port wahrscheinlich geschlossen (kein SSH-Empfang). Andernfalls MUSS zwischen Ihrem Client und dem Server etwas sein, das den Test abgefangen und die Pakete verworfen hat (eine Host-Firewall, ein IDS, oder falsch konfigurierte Netzwerkgeräte)
Florian Bidabe
10

Warum werden die Ports 21, 25 und 1863 als "gefiltert" und die 2043 anderen Ports nicht als "gefiltert" angezeigt?

Denn in Ihrem Internetdienstanbieter, Router, Ihrem Netzwerkadministrator, irgendetwas dazwischen oder Sie selbst filtern sie. Diese Ports haben einen ziemlich schlechten Verlauf. 1863 ist der Port, der vom Microsoft-Instant-Messaging-Protokoll (auch bekannt als MSN und Freunde) verwendet wird. Ich glaube, Sie haben möglicherweise eine bestimmte Regel festgelegt (oder auch nicht). Das SMTP scheint Ihr ISP der Schuldige zu sein und FTP hat mich total verblüfft, da ich keine Ahnung habe, was mit ihnen passieren könnte.

Braiam
quelle
1
Danke für die Erklärung! Also im Grunde „gefiltert“ bedeutet , dass es das Äquivalent eines iptables ‚s REJECT irgendwo (ISP, Router, etc.)? Und der ISP / Router oder was auch immer lehnt ab, anstatt zu fallen, weil es sauberer ist? In Bezug auf Port 25: Es wird für mich beispielsweise auch für slashdot.org gefiltert (wenn ich es von meiner Heimverbindung aus zuordnete, aber nicht, wenn ich es von meinem dedizierten Server aus zuordnete).
Cedric Martin
6
@CedricMartin, du hast es genau umgekehrt. "Gefiltert" bedeutet, dass das Paket verworfen wird (überhaupt keine Antwort), während "geschlossen" bedeutet, dass das Paket zurückgewiesen wird (eine ICMP-Antwort "Port nicht erreichbar" wird gesendet).
Mark
@ Mark: dann , wenn ich bekomme es nach hinten meiner ursprünglichen Frage steht: auf meinem Server, mit iptables , ich bin Fallenlassen alles außer Port 22 und 80. Wie kommt nur 3 Ports erscheinen als „gefiltert“ !?
Cedric Martin
@CedricMartin bearbeite deine Frage und füge deine iptables-Regeln hinzu.
Braiam
1

Standardmäßig durchsucht Nmap nur die am häufigsten verwendeten 1.000 Ports für jedes Protokoll (TCP, UDP). Wenn sich Ihr Port außerhalb dieses Bereichs befindet, wird er nicht gescannt und daher nicht gemeldet. Sie können jedoch mit der Option -p die Ports angeben, die gescannt werden sollen.

Angsuman Chakraborty
quelle