So öffnen Sie einen Port unter Linux

Einführung

A port is a communication endpoint. Within an operating system, a port is opened or closed to data packets for specific processes or network services.

Üblicherweise identifizieren Ports einen spezifischen Netzwerkdienst, der ihnen zugewiesen ist. Dies kann durch manuelle Konfiguration des Dienstes geändert werden, um einen anderen Port zu verwenden, aber im Allgemeinen können die Standardwerte verwendet werden.

Die ersten 1024 Ports (Portnummern 0 bis 1023) werden als wohlbekannte Portnummern bezeichnet und sind für die am häufigsten genutzten Dienste reserviert. Dazu gehören SSH (Port 22), HTTP (Port 80), HTTPS (Port 443).

Portnummern über 1024 werden als ephemere Ports bezeichnet.

  • Portnummern 1024 bis 49151 werden als registrierte/Benutzerports bezeichnet.
  • Portnummern 49152 bis 65535 werden als dynamische/private Ports bezeichnet.

In diesem Tutorial werden Sie einen ephemeren Port unter Linux öffnen, da die am häufigsten genutzten Dienste die wohlbekannten Ports verwenden.

Bereitstellen Ihrer Anwendungen von GitHub mit DigitalOcean App Platform. Lassen Sie DigitalOcean sich um das Skalieren Ihrer App kümmern.

Voraussetzungen

Um dieses Tutorial zu vervollständigen, benötigen Sie:

  • Vertrautheit mit der Verwendung des Terminals.

Alle offenen Ports auflisten

Bevor Sie einen Port auf Linux öffnen, müssen Sie die Liste aller offenen Ports überprüfen und einen ephemeren Port auswählen, der nicht in dieser Liste enthalten ist.

Verwenden Sie den Befehl netstat, um alle offenen Ports aufzulisten, einschließlich TCP und UDP, die die häufigsten Protokolle für die Paketübertragung in der Netzwerkschicht sind.

  1. netstat -lntu

Dies wird ausgedruckt:

  • alle lauschen Sockets (-l)
  • die Port Nummer (-n)
  • TCP Ports (-t)
  • UDP Ports (-u)
Output
Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:27017 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:6379 0.0.0.0:* LISTEN tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN tcp6 0 0 ::1:5432 :::* LISTEN tcp6 0 0 ::1:6379 :::* LISTEN tcp6 0 0 :::22 :::* LISTEN udp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN

Hinweis: Wenn Ihre Distribution kein netstat hat, können Sie den Befehl ss verwenden, um offene Ports anhand der überwachten Sockets anzuzeigen.

Überprüfen Sie, ob Sie konsistente Ausgaben erhalten, indem Sie den Befehl ss verwenden, um die lauschenden Sockets mit einem offenen Port aufzulisten:

  1. ss -lntu

Dies wird ausgedruckt:

Output
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port udp UNCONN 0 0 127.0.0.53%lo:53 0.0.0.0:* tcp LISTEN 0 128 127.0.0.1:5432 0.0.0.0:* tcp LISTEN 0 128 127.0.0.1:27017 0.0.0.0:* tcp LISTEN 0 128 127.0.0.1:6379 0.0.0.0:* tcp LISTEN 0 128 127.0.0.53%lo:53 0.0.0.0:* tcp LISTEN 0 128 0.0.0.0:22 0.0.0.0:* tcp LISTEN 0 128 [::1]:5432 0.0.0.0:* tcp LISTEN 0 128 [::1]:6379 0.0.0.0:* tcp LISTEN 0 128 [::]:22 0.0.0.0:*

Dies gibt mehr oder weniger dieselben offenen Ports wie netstat aus.

Öffnen Sie einen Port auf Linux, um TCP-Verbindungen zu ermöglichen

Öffnen Sie jetzt einen geschlossenen Port und lassen Sie ihn auf TCP-Verbindungen warten.

Zu Demonstrationszwecken öffnen Sie den Port 4000. Wenn dieser Port in Ihrem System nicht geöffnet ist, wählen Sie bitte einen anderen geschlossenen Port aus. Stellen Sie sicher, dass er größer als 1023 ist.

Überprüfen Sie, ob der Port 4000 nicht verwendet wird, indem Sie den Befehl netstat verwenden:

  1. netstat -na | grep :4000

Oder den Befehl ss:

  1. ss -na | grep :4000

Die Ausgabe sollte leer bleiben, um zu bestätigen, dass der Port derzeit nicht verwendet wird. Sie können dann die Portregeln manuell zur iptables-Firewall des Systems hinzufügen.

Für Ubuntu-Benutzer und Systeme, die auf ufw basieren

Verwenden Sie ufw – den Befehlszeilenclient für die UncomplicatedFirewall.

Ihre Befehle sehen etwa so aus:

  1. sudo ufw allow 4000

Siehe Wie man eine ufw-Firewall einrichtet für Ihre Distribution.

Hinweis:

  • Ubuntu 14.04: „Bestimmte Portbereiche zulassen“
  • Ubuntu 16.0.4/18.0.4/20.0.4/22.0.4: „Zulassen anderer Verbindungen / bestimmter Portbereiche“
  • Debian 9/10/11: „Zulassen anderer Verbindungen / bestimmter Portbereiche“

Für CentOS und Systeme, die auf firewalld basieren

Verwenden Sie firewall-cmd – den Befehlszeilenclient für den firewalld Daemon.

Ihre Befehle sehen wie folgt aus:

  1. firewall-cmd --add-port=4000/tcp

Beachten Sie „Wie man firewalld einrichtet“ für Ihre Distribution.

Hinweis:

  • CentOS 7/8: „Regeln für Ihre Anwendungen festlegen / Öffnen eines Ports für Ihre Zonen“
  • Rocky Linux 8/9: „Regeln für Ihre Anwendungen festlegen / Öffnen eines Ports für Ihre Zonen“

Für andere Linux-Distributionen

Verwenden Sie iptables, um die IPv4-Paketfilterregeln des Systems zu ändern.

  1. iptables -A INPUT -p tcp --dport 4000 -j ACCEPT

Beachten Sie „Wie man eine Firewall mit iptables einrichtet“ für Ihre Distribution.

Hinweis:

  • Ubuntu 12.04: „Eine grundlegende Firewall“
  • Ubuntu 14.04: „Andere erforderliche Verbindungen akzeptieren“

Testen Sie den neu geöffneten Port für TCP-Verbindungen

Jetzt, da Sie erfolgreich einen neuen TCP-Port geöffnet haben, ist es Zeit, ihn zu testen.

Zuerst starten Sie netcat (nc) und hören (-l) auf Port (-p) 4000, während Sie die Ausgabe von ls an jeden verbundenen Client senden:

  1. ls | nc -l -p 4000

Nachdem ein Client eine TCP-Verbindung auf Port 4000 geöffnet hat, erhält er die Ausgabe von ls. Lassen Sie diese Sitzung vorerst offen.

Öffnen Sie eine weitere Terminal-Sitzung auf demselben Computer.

Da Sie einen TCP-Port geöffnet haben, verwenden Sie telnet, um die TCP-Konnektivität zu überprüfen. Wenn der Befehl nicht existiert, installieren Sie ihn über Ihren Paketmanager.

Geben Sie Ihre Server-IP und die Portnummer (4000 in diesem Beispiel) ein und führen Sie diesen Befehl aus:

  1. telnet localhost 4000

Dieser Befehl versucht, eine TCP-Verbindung auf localhost auf Port 4000 herzustellen.

Sie erhalten eine ähnliche Ausgabe wie diese, die anzeigt, dass eine Verbindung zum lauschenden Programm (nc) hergestellt wurde:

Output
Trying ::1... Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. while.sh

Die Ausgabe von ls (while.sh in diesem Beispiel) wurde ebenfalls an den Client gesendet, was auf eine erfolgreiche TCP-Verbindung hinweist.

Verwenden Sie nmap, um zu überprüfen, ob der Port (-p) geöffnet ist:

  1. nmap localhost -p 4000

Dieser Befehl überprüft den geöffneten Port:

Output
Starting Nmap 7.60 ( https://nmap.org ) at 2020-01-18 21:51 UTC Nmap scan report for localhost (127.0.0.1) Host is up (0.00010s latency). Other addresses for localhost (not scanned): ::1 PORT STATE SERVICE 4000/tcp open remoteanything Nmap done: 1 IP address (1 host up) scanned in 0.25 seconds

Der Port wurde geöffnet. Sie haben erfolgreich einen neuen Port auf Ihrem Linux-System geöffnet.

Hinweis: nmap listet nur geöffnete Ports auf, die eine aktuell lauschende Anwendung haben. Wenn Sie keine lauschende Anwendung verwenden, wie zum Beispiel netcat, wird der Port 4000 als geschlossen angezeigt, da auf diesem Port derzeit keine Anwendung lauscht. Ähnlich funktioniert auch telnet nicht, da es ebenfalls eine lauschende Anwendung benötigt, um sich zu binden. Das ist der Grund, warum nc ein so nützliches Werkzeug ist. Es simuliert solche Umgebungen mit einem einfachen Befehl.

Aber dies ist nur vorübergehend, da die Änderungen bei jedem Neustart des Systems zurückgesetzt werden.

Regeln beibehalten

Der in diesem Artikel vorgestellte Ansatz aktualisiert die Firewall-Regeln nur vorübergehend, bis das System heruntergefahren oder neu gestartet wird. Daher müssen ähnliche Schritte wiederholt werden, um denselben Port nach einem Neustart erneut zu öffnen.

Für die ufw-Firewall

ufw Regeln werden beim Neustart nicht zurückgesetzt. Dies liegt daran, dass es in den Bootprozess integriert ist und der Kernel die Firewall-Regeln mit ufw durch Anwendung entsprechender Konfigurationsdateien speichert.

Für firewalld

Sie müssen das Flag --permanent anwenden.

Beachten Sie Wie man firewalld einrichtet für Ihre Distribution.

Hinweis:

  • CentOS 7/8: „Regeln für Ihre Anwendungen festlegen“
  • Rocky Linux 8/9: „Regeln für Ihre Anwendungen festlegen“

Für iptables

Sie müssen die Konfigurationsregeln speichern. Diese Tutorials empfehlen iptables-persistent.

Sehen Sie sich Wie man eine Firewall mit iptables einrichtet für Ihre Distribution an.

Hinweis:

  • Ubuntu 12.04: „Speichern von Iptables-Regeln“
  • Ubuntu 14.04: „Speichern Ihrer Iptables-Konfiguration“

Schlussfolgerung

In diesem Tutorial haben Sie gelernt, wie Sie einen neuen Port unter Linux öffnen und für eingehende Verbindungen einrichten. Sie haben auch netstat, ss, telnet, nc und nmap verwendet.

Weiterführende Lernmöglichkeiten umfassen Wie die Iptables-Firewall funktioniert, Eine eingehende Analyse der Iptables- und Netfilter-Architektur, Verständnis von Sockets und So verwenden Sie Top, Netstat, Du & Andere Tools zur Überwachung von Serverressourcen.

Source:
https://www.digitalocean.com/community/tutorials/opening-a-port-on-linux