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

Effektive Linux-Port-Scans für den Netzwerkadministrator

Suchen Sie nach einer Möglichkeit, Ihre Netzwerksicherheit aufzupeppen? Warum lernen Sie nicht, wie man einen Linux-Port-Scan wie ein Profi durchführt?

In diesem Tutorial lernen Sie einige der beliebtesten Tools und Techniken kennen und sehen potenzielle Risiken und Vorteile im Zusammenhang mit Port-Scanning.

Hört sich gut an? Beginnen Sie noch heute mit dem Portscannen, um Ihr Netzwerk zu sichern!

Voraussetzungen

Dieses Tutorial wird eine praktische Demonstration sein. Wenn Sie mitmachen möchten, stellen Sie sicher, dass Sie ein Linux-System haben – Dieses Tutorial verwendet Ubuntu 20.04, aber jede moderne Linux-Distribution funktioniert.

Scannen nach geöffneten Ports mit Nmap

Es gibt verschiedene Möglichkeiten, Ports zu scannen, und Nmap ist ein hervorragendes Tool für die Netzwerkerkennung und Sicherheitsüberprüfung. Mit Nmap können Sie Hosts und Dienste in einem Computernetzwerk finden, indem Sie Pakete senden und die Antworten analysieren.

Nmap ist kostenlos erhältlich und mit Windows, Linux und OS X kompatibel.

Mit dem Port-Scanning können Sie einen Server oder Host auf offene Ports untersuchen, was aus verschiedenen Gründen praktisch ist:

  • Herausfinden, welche Dienste auf einem Host laufen.
  • Entdeckung von Sicherheitslücken
  • Auflisten eines Systems.

Aber bevor Sie Nmap nutzen können, müssen Sie Nmap zuerst auf Ihrem Rechner installieren:

1. Führen Sie den folgenden Befehl apt update aus, um den Systempaketindex zu aktualisieren.

apt update -y

2. Führen Sie als Nächstes den folgenden apt install-Befehl aus, um Nmap zu installieren.

apt install nmap -y

3. Führen Sie den folgenden Befehl nmap –version aus, um die auf Ihrem Computer installierte Version von Nmap zu überprüfen.

nmap --version

Unten ist die installierte Nmap-Version 7.80, die neueste Version seit diesem Schreiben.

4. Führen Sie nun den folgenden nmap-Befehl aus, um den Zielhostnamen oder die IP-Adresse (scanme.nmap.org) zu scannen. Sie benötigen nur ein Minimum an Optionen, um loszulegen.

nmap scanme.nmap.org

Unten ist die Aufschlüsselung der Ausgabe des Scans.:

  • Die IPv4-Adresse des Ziels – 45.33.32.156 .
  • Die IPv6-Adresse des Ziels (falls verfügbar) – 2600:3c01::f03c:91ff .
  • Umgekehrter DNS-Name (falls verfügbar).

Sie können auch jeden Port und seinen Status in der Ausgabe sehen:

  • geöffnet – Zeigt an, dass der Port offen ist und auf eingehende Verbindungen wartet.
  • geschlossen – Zeigt an, dass der Port geschlossen ist und nicht auf eingehende Verbindungen wartet.
  • gefiltert – Zeigt an, dass der Port gefiltert wird und Nmap nicht feststellen kann, ob der Port offen oder geschlossen ist. Nmap sendet Sonden an den Port, erhält aber keine Antwort.

Bestimmte Ports scannen

Nmap tut viele Dinge im Hintergrund, um zu versuchen, den Status jedes Ports zu bestimmen. Sie können Ihren Scan weiter anpassen, indem Sie CLI-Optionen für mehr Kontrolle hinzufügen, wie z. B. -p Möglichkeit. Mit dieser Option können Sie angeben, welche Ports gescannt werden sollen.

1. Führen Sie den folgenden Befehl aus, um Port 80 in Ihrem Ziel-Hostnamen (scanme.nmap.org) zu scannen. Dieser Befehl teilt Ihnen mit, ob Port 80 des Zielhosts offen oder geschlossen ist.

nmap -p 80 scanme.nmap.org

Unten sehen Sie, dass Port 80 offen ist. Dieser Status sagt Ihnen, dass der Webserver auf Port 80 läuft.

2. Führen Sie als Nächstes den folgenden Befehl aus, um die öffentlichen DNS-Server von Google (8.8.8.8 und 8.8.4.4) zum Scannen von Port 80 des Hostnamens (scanme.nmap.org) zu verwenden.

Mit der Option –dns-servers können Sie angeben, welche DNS-Server zum Scannen verwendet werden sollen. Diese Option ist nützlich, wenn Sie einen Host in einem anderen Netzwerk scannen möchten. Während das Flag -v Ihnen mehr Informationen über den Scan gibt.

nmap --dns-servers -p 80 8.8.8.8,8.8.4.4 -v scanme.nmap.org

Sie können unten sehen, dass Nmap die öffentlichen DNS-Server von Google verwendet, um den Hostnamen aufzulösen, und der Scan erfolgreich ist.

3. Führen Sie abschließend den folgenden Befehl aus, um Port 80 des Hostnamens (scanme.nmap.org) wie in Schritt eins zu scannen. Hängen Sie diesmal jedoch die Option -d an, um die Debugging-Stufe auf 3 zu erhöhen. Diese Option ist nützlich, um Probleme mit Nmap zu beheben.

Die Option -d akzeptiert eine ganze Zahl (zwischen 0 und 9) als Argument. Je höher die Zahl, desto mehr Debug-Ausgaben sehen Sie.

Level 9 ist für sehr ausführliche Ausgabe. Dies ist hilfreich für Entwickler, die an Nmap arbeiten.

nmap -d 3 -p 80 scanme.nmap.org

Ports scannen mit Netcat (Ncat)

Netcat (nc ) ist ein Befehlszeilentool für die Netzwerkerkundung, Sicherheitsüberwachung und Penetrationstests. Sie können Netcat verwenden, um einfache TCP- und UDP-Verbindungen und komplexere SOCKS- und HTTP-Proxys zu erstellen. Aber in diesem Tutorial verwenden Sie Netcat, um offene Ports auf Remote-Systemen zu scannen.

1. Führen Sie den folgenden nc-Befehl aus, um nach offenen Ports zu suchen, ohne Daten (-z) von den Ports 20 bis 1000 auf 159.89.176.25 zu senden. Die Option -v weist Netcat an, ausführlich zu sein, damit Sie sehen können, was während des Scans vor sich geht.

nc -z -v 159.89.176.25 20-1000

Die Anzahl der Ports kann je nach Bedarf erhöht oder verringert werden. Die Ports 20-1000 decken jedoch eine breite Palette häufig verwendeter Ports ab.

Die folgende Ausgabe zeigt Ihnen, welche Ports offen sind, und ihr Verbindungsstatus ist wie folgt:

  • Verbindung abgelehnt – Zeigt an, dass die Verbindung vom entsprechenden Port abgelehnt wurde, was wahrscheinlich darauf zurückzuführen ist, dass auf diesem Port kein Dienst ausgeführt wird – der Port ist geschlossen.
  • Erfolgreich! – Zeigt an, dass die Verbindung erfolgreich war – der Port ist offen.

Abgesehen von Port 22 (SSH), der auf dem Remote-System geöffnet ist, sehen Sie auch viele andere Nachrichten, die lästig sein können. Springen Sie also zum folgenden Schritt, um die Ausgabe zu filtern.

2. Führen Sie den grep-Befehl unten aus, um die Ports 20 bis 100 auf 159.89.176.25 zu scannen, und zeigen Sie nur die offenen Ports aus jedem Scan-Ergebnis an, in denen das Wort erfolgreich war.

Der Teil 2>&1 weist die Shell an, stderr (Dateideskriptor 2) nach stdout (Dateideskriptor 1) umzuleiten, sodass Sie die Fehlermeldung in der Ausgabe sehen, falls es eine gibt.

nc -z -v 159.89.176.25 20-100 2>&1 | grep succeeded

Wie Sie unten sehen können, ist nur Port 22 offen, der auch die Erfolgsmeldung enthält.

3. Führen Sie zuletzt denselben Befehl wie in Schritt zwei aus. Hängen Sie dieses Mal jedoch die Option -u an, um nach UDP-Ports zu suchen, wie unten gezeigt.

nc -z -v -u 159.89.176.25 20-100 2>&1 | grep succeeded

Beachten Sie, dass der Scan beim Scannen nach UDP-Ports viel länger dauert als nach TCP-Ports:

  • Ein TCP-Scan versucht, eine Verbindung mit dem Zielhost herzustellen, wobei alle 65.535 Ports gescannt werden, um festzustellen, welche offen sind.
  • Ein UDP-Scan versucht nicht, eine Verbindung herzustellen, sondern sendet ein UDP-Paket an jeden Port des Zielhosts, um zu sehen, welche offen sind. Ein UDP-Scan ist niedriger als ein TCP-Scan, da Sie ein Paket senden und die Fehlerbehandlung und den 3-Wege-Handshake abschließen.

Sie können unten sehen, dass die Ausgabe leer ist, da auf dem entfernten System keine UDP-Dienste ausgeführt werden.

Testen, ob ein Port mit einem Bash-Skript geöffnet ist

Bisher haben Sie gesehen, wie Sie mit Netcat und Nmap nach offenen Ports auf einem System suchen. Obwohl diese Tools nützlich sind, sind sie nicht zuverlässig, wenn es darum geht, die Aufgabe des Port-Scannens zu automatisieren.

Sie planen beispielsweise, auf 1000 Hosts nach offenen Ports zu suchen. In diesem Fall wird das manuelle Scannen von Ports mühsam und dauert lange. Aber wie automatisieren Sie Port-Scanning-Aufgaben unter Linux? Das Schreiben eines Bash-Skripts reicht aus.

So erstellen Sie ein Bash-Skript zum Automatisieren des Port-Scannens:

1. Öffnen Sie eine neue Datei in Ihrem bevorzugten Texteditor. Benennen Sie die Datei nach Belieben, aber für dieses Tutorial heißt die Datei ports.sh.

nano ports.sh

2. Fügen Sie den folgenden Code zu ports.sh hinzu aber stellen Sie sicher, dass Sie die SERVER- und PORT-Werte durch Ihre eigene IP-Adresse oder Ihren eigenen Hostnamen und Port zum Scannen ersetzen.

Nachdem Sie die Werte geändert haben, speichern Sie die Änderungen und schließen Sie den Editor.

# Defines the server you want to scan. 
SERVER=adamtheautomator.com
# Defines the port to scan.
PORT=443
# Runs the nmap command and assigns the output to the state variable. 
# The grep command filters and displays the output of the nmap command
# with the lines containing the "open" keyword.
state=`nmap -p $PORT $SERVER | grep "$PORT" | grep open`
# Checks if the state variable is blank (port is closed).
if [ -z "$state" ]; then
	# Displays a message if the connection fails.
  echo "Connection to $SERVER on port $PORT has failed"
else
	# Displays a message if the connection succeeded.
  echo "Connection to $SERVER on port $PORT was successful"
	# Exits the script with an exit code of 1 
	# to determine if the script was successful or not.
  exit 1
fi # Ends the if statement

3. Führen Sie schließlich den folgenden Bash-Befehl aus, um Ihr ports.sh-Skript auszuführen.

bash ports.sh

Wenn alles gut geht, sehen Sie die folgende Ausgabe, die besagt, dass Port 443 auf adamtheautomator.com. geöffnet ist

Schlussfolgerung

In diesem Tutorial haben Sie gelernt, auf einem System mit Netcat und Nmap nach offenen Ports zu suchen. Abgesehen von diesen Tools haben Sie ein Bash-Skript geschrieben, um das Scannen von Ports zu automatisieren, damit Sie andere Aufgaben auf Ihrer Platte erledigen können.

An diesem Punkt haben Sie bereits ein gutes Verständnis dafür, wie Sie diese Tools verwenden, um nach offenen Ports auf einem System zu suchen, damit Sie Ihr Netzwerk schützen können. Aber um Port-Scanning-Aufgaben weiter zu automatisieren, warum nicht Cron-Jobs erstellen, um die Ausführung Ihrer Bash-Skripte zu planen?


Linux
  1. Eine Anleitung zum Linux-Terminal für Anfänger

  2. 8 Tipps für die Linux-Kommandozeile

  3. 8 Linux-Befehle für effektives Prozessmanagement

  4. 10 Linux-Befehle für die Netzwerkdiagnose

  5. Nützliche Linux-Dig-Beispiele für den Netzwerkadministrator

GalliumOS:Die Linux-Distribution für Chromebooks

Die 50 nützlichen Linux-IP-Befehle für Netzwerkadministratoren

Top 10 der besten Linux-Port-Scanner für Netzwerkadministratoren

Praktische Linux- und Unix-Tee-Befehle für den Linux-Administrator

Nützliche tcpdump-Linux-Beispiele für den Netzwerkadministrator

Nmap-Befehle - 17 grundlegende Befehle für Linux-Netzwerke