GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Untersuchen mehrerer Ports beim Ausführen von NetCat (nc)

Ich verwende -w 1 unten, um Timeouts auf 1 Sekunde zu begrenzen. Ich verwende auch -v aus den in den Kommentaren genannten Gründen. Ich habe -n verwendet um Verzögerungen für Reverse-DNS-Lookups abzulehnen...

[[email protected] ~]$ for i in $(echo "172.16.1.1,172.16.1.5"|tr "," "\n"); do echo -e "22\n80\n443\n8080" | xargs -i nc -w 1 -zvn $i {}; done
(UNKNOWN) [172.16.1.1] 22 (ssh) open
(UNKNOWN) [172.16.1.1] 80 (www) : Connection timed out
(UNKNOWN) [172.16.1.1] 443 (https) open
(UNKNOWN) [172.16.1.1] 8080 (http-alt) : Connection timed out
(UNKNOWN) [172.16.1.5] 22 (ssh) open
(UNKNOWN) [172.16.1.5] 80 (www) open
(UNKNOWN) [172.16.1.5] 443 (https) open
(UNKNOWN) [172.16.1.5] 8080 (http-alt) : Connection refused
[[email protected] ~]$

Wenn Sie GNU Parallel genauso mögen wie ich, versuchen Sie Folgendes:

parallel nc -vz host ::: 22 80 443 8080

Beispielausgabe:

Connection to foo.example.com 22 port [tcp/ssh] succeeded!
nc: connect to foo.example.com port 80 (tcp) failed: Connection refused
nc: connect to foo.example.com port 443 (tcp) failed: Connection refused
nc: connect to foo.example.com port 8080 (tcp) failed: Connection refused

Diese Methode ist in einigen Fällen auch schneller, da sie die Verbindung zu Ports parallel und nicht seriell testet. Dies wäre insbesondere der Fall, in dem der entfernte Host (oder die eingreifende Firewall) Ihre Pakete verwirft, um getarnt zu bleiben (im Gegensatz zu einer erfolgreichen Verbindung oder einer erzwungenen Ablehnung).

Tipp: In den meisten Linux-Distributionen können Sie parallel installieren von Ihrem Paketmanager.

Aktualisierung: Mit parallel , lässt sich dies sehr gut verallgemeinern, um einen häufig benötigten Fall mehrerer Hosts x mehrerer Ports abzudecken. Das folgende Beispiel verwendet parallel um über das Kreuzprodukt zu iterieren, sodass Sie keine verschachtelten Schleifen schreiben müssen.

parallel nc -vz ::: host1 host2 host3 ::: 22 80 443 8080

Ausgabe:

Connection to host1 22 port [tcp/ssh] succeeded!
Connection to host1 80 port [tcp/http] succeeded!
Connection to host1 443 port [tcp/https] succeeded!
nc: connect to host1 port 8080 (tcp) failed: Connection refused
Connection to host2 22 port [tcp/ssh] succeeded!
nc: connect to host2 port 80 (tcp) failed: Connection refused
nc: connect to host2 port 443 (tcp) failed: Connection refused
nc: connect to host2 port 8080 (tcp) failed: Connection refused
Connection to host3 22 port [tcp/ssh] succeeded!
nc: connect to host3 port 80 (tcp) failed: Connection refused
nc: connect to host3 port 8080 (tcp) failed: Connection refused
nc: connect to host3 port 443 (tcp) failed: Connection refused

Wie im vorherigen Beispiel parallel führt die Verbindungstests parallel durch. Beachten Sie, dass die Standardparallelität darin besteht, wie viele Threads Ihr System hat, kann aber einfach mit -j überschrieben werden auf einen beliebigen Wert umschalten. Sie könnten leicht mit parallel -j 50 ... davonkommen oder sogar noch höher, da das Testen von Sockets keine CPU-intensive Aufgabe ist.


Linux
  1. .bash_profile nicht bezogen, wenn Su ausgeführt wird?

  2. Testen von Netzwerkdiensten mit Netcat

  3. Überprüfen Sie, welche Ports und Prozesse in Ubuntu ausgeführt werden

  4. Best Practices beim Ausführen von Node.js mit Port 80 (Ubuntu / Linode)

  5. Verbindung zu MongoDB Fehler Nr. 111 abgelehnt

So führen Sie einen Port-Scan unter Linux durch

So verwenden Sie Netcat zum Scannen offener Ports in Linux

Öffnen eines Ports unter Linux

Wie schließe ich die rmiregistry, die auf einem bestimmten Port ausgeführt wird?

Beenden Sie den Prozess, der auf Port 80 ausgeführt wird

Mehrere scp-Threads gleichzeitig ausführen