Bevor wir lernen, einen Port unter Linux zu öffnen, wollen wir verstehen, was Netzwerkports sind. Ein Hafen ist ein Kommunikationsendpunkt. Innerhalb eines Betriebssystems ermöglicht ein Port die Datenpakete bestimmten Prozessen oder Netzwerkdiensten.
Typischerweise identifizieren Ports einen ihnen zugewiesenen Netzwerkdienst. Dies kann geändert werden, indem der Dienst manuell so konfiguriert wird, dass er einen anderen Port verwendet, aber im Allgemeinen können die Standardeinstellungen verwendet werden.
Die erste 1024 Ports (Ports 0-1023 ) werden als bekannte Portnummern bezeichnet und sind für die am häufigsten verwendeten Dienste reserviert, darunter SSH (Port 22), HTTP und HTTPS (Port 80 und 443) usw. Portnummern über 1024 werden als ephemer bezeichnet Häfen .
Unter flüchtigen Ports, Portnummern 1024-49151 werden Registriert/Benutzer genannt Häfen. Die restlichen Ports:49152-65535 werden als Dynamisch/Privat bezeichnet Häfen.
In diesem Tutorial zeigen wir, wie wir einen kurzlebigen Port unter Linux öffnen können, da die gängigsten Dienste die bekannten Ports verwenden.
Alle offenen Ports auflisten
Bevor wir einen Port unter Linux öffnen, prüfen wir zunächst die Liste aller offenen Ports und wählen einen flüchtigen Port zum Öffnen aus dieser Liste aus.
Wir können die netstat verwenden Befehl, um alle offenen Ports aufzulisten, einschließlich der von TCP , UDP , das sind die gebräuchlichsten Protokolle für die Paketübertragung in der Vermittlungsschicht.
HINWEIS :Wenn Ihre Distribution nicht über netstat
verfügt , es ist kein Problem. Sie können den ss
verwenden Befehl zum Anzeigen offener Ports über lauschende Sockets.
netstat -lntu
Dadurch werden alle Zuhörer gedruckt Sockets (-l
) zusammen mit der Nummer des Ports (-n
), mit TCP Ports (-t
) und UDP Ports (-u
) ebenfalls in der Ausgabe aufgeführt.
Um sicherzustellen, dass wir konsistente Ausgaben erhalten, überprüfen wir dies mit dem ss
Befehl, um lauschende Sockets mit einem offenen Port aufzulisten.
ss -lntu
Dies gibt mehr oder weniger die gleichen offenen Ports wie netstat
, also können wir loslegen!
Öffnen eines Ports unter Linux, um TCP-Verbindungen zuzulassen
Lassen Sie uns einen geschlossenen Port öffnen und ihn auf TCP hören lassen Verbindungen, für dieses Beispiel.
Seit Port 4000 in meinem System nicht verwendet wird, entscheide ich mich, Port 4000 zu öffnen . Wenn dieser Port in Ihrem System nicht offen ist, können Sie gerne einen anderen geschlossenen Port wählen. Stellen Sie nur sicher, dass es größer als 1023 ist !
Um sicherzugehen, stellen wir erneut sicher, dass Port 4000 nicht verwendet wird, indem wir netstat
verwenden oder das ss
Befehl.
netstat -na | grep :4000
ss -na | grep :4000
Die Ausgabe muss leer bleiben, um zu bestätigen, dass sie derzeit nicht verwendet wird, damit wir die Portregeln manuell zur System-iptables-Firewall hinzufügen können .
Für Ubuntu-Benutzer und ufw-Firewall-basierte Systeme
Ubuntu hat eine Firewall namens ufw
, das sich um diese Regeln für Ports und Verbindungen kümmert, anstelle der alten iptables
Firewall. Wenn Sie ein Ubuntu-Benutzer sind, können Sie den Port direkt mit ufw
öffnen
sudo ufw allow 4000
Sie können die nächsten Schritte überspringen und Ihren neu geöffneten Port direkt testen!
Für CentOS- und Firewalld-basierte Systeme
Für diese Systemtypen, wenn Sie firewalld
haben Als primäre Firewall wird empfohlen, dass Sie firewall-cmd
verwenden um Ihre Firewall-Regeln zu aktualisieren, anstelle der alten iptables
Firewall.
firewall-cmd --add-port=4000/tcp
HINWEIS:Dadurch wird die firewalld
zurückgesetzt Regeln, die bei einem Neustart standardmäßig verwendet werden. Wenn Sie diese Einstellung also dauerhaft ändern möchten, fügen Sie --permanent
hinzu Flag zum Befehl.
firewall-cmd --add-port=4000/tcp --permanent
Sie können die nächsten Schritte überspringen und Ihren neu geöffneten Port direkt testen!
Für andere Linux-Distributionen
Fügen wir also diesen neuen Port zu unseren System-iptables-Regeln hinzu, indem wir iptables
verwenden Befehl.
Wenn dieser Befehl noch nicht installiert ist, holen Sie ihn sich über Ihren Paketmanager.
iptables -A INPUT -p tcp --dport 4000 -j ACCEPT
Dadurch wird die Firewall auf anhängen eingestellt (-A
) die neue Regel zum Akzeptieren von Eingangspaketen per Protokoll (-p
) TCP wo der Zielhafen ist (--dport
) ist 4000 , und gibt den Sprung als Ziel an (-j
) als AKZEPTIEREN .
Um die Firewall-Regeln zu aktualisieren, starten Sie iptables
neu Dienst.
sudo service iptables restart
ODER mit systemctl
wenn du es hast.
sudo systemctl restart iptables
Testen Sie den neu geöffneten Port für TCP-Verbindungen
Jetzt haben wir erfolgreich ein neues TCP geöffnet port (Port 4000 in meinem Fall), testen wir es.
Zuerst starten wir netcat (nc
) und lauschen auf Port 4000, während Sie die Ausgabe von ls
senden an jeden verbundenen Client. Nachdem also ein Client eine TCP-Verbindung auf Port 4000 geöffnet hat, erhält er die Ausgabe von ls
.
ls | nc -l -p 4000
Dadurch lauscht netcat auf Port 4000. Lassen Sie diese Sitzung vorerst in Ruhe.
Öffnen Sie eine weitere Terminalsitzung auf demselben Computer.
Da ich einen TCP-Port geöffnet habe, verwende ich telnet
um auf TCP-Konnektivität zu prüfen. Wenn der Befehl nicht vorhanden ist, installieren Sie ihn erneut mit Ihrem Paketmanager.
Format für Telnet :
telnet [hostname/IP address] [port number]
Geben Sie also Ihre Server-IP und die Portnummer ein, die 4000 lautet in meinem Fall, und führen Sie diesen Befehl aus.
telnet localhost 4000
Dies versucht, eine TCP-Verbindung auf localhost
zu öffnen auf Port 4000.
Sie erhalten eine ähnliche Ausgabe, die anzeigt, dass eine Verbindung mit dem lauschenden Programm (nc
).
Wie Sie sehen können, ist die Ausgabe von ls
(while.sh
in meinem Fall) wurde ebenfalls an den Client gesendet, was auf eine erfolgreiche TCP-Verbindung hinweist!
Um Ihnen zu zeigen, dass der Port tatsächlich offen ist, können wir nmap
verwenden um dies zu überprüfen.
nmap localhost -p 4000
Tatsächlich wurde unser Hafen geöffnet! Wir haben erfolgreich einen neuen Port auf unserem Linux-System geöffnet!
HINWEIS :nmap
listet nur geöffnete Ports auf, die eine aktuell lauschende Anwendung haben. Wenn Sie keine lauschende Anwendung wie netcat verwenden, wird der Port 4000 als geschlossen angezeigt, da derzeit keine Anwendung an diesem Port lauscht. Ebenso funktioniert Telnet auch nicht, da es auch eine lauschende Anwendung benötigt, an die es sich binden kann. Das ist der Grund, warum nc
ist so ein nützliches Werkzeug. Dies simuliert solche Umgebungen in einem einfachen Befehl.
Dies ist jedoch nur vorübergehend, da die Änderungen bei jedem Neustart des Systems zurückgesetzt werden.
Regeln müssen nach jedem Neustart aktualisiert werden
Der in diesem Artikel vorgestellte Ansatz aktualisiert die Firewall-Regeln nur vorübergehend, bis das System heruntergefahren/neu gestartet wird. Daher müssen ähnliche Schritte wiederholt werden, um denselben Port nach einem Neustart wieder zu öffnen.
Für ufw-Firewall
Der ufw
Regeln sind nicht wird beim Neustart zurückgesetzt, wenn Sie also ein Ubuntu-Benutzer sind, brauchen Sie sich um diesen Teil keine Gedanken zu machen!
Dies liegt daran, dass es in den Bootvorgang integriert ist und der Kernel die Firewall-Regeln mit ufw
speichert , über entsprechende Konfigurationsdateien.
Für Firewalld
Wie bereits erwähnt, firewalld
leidet ebenfalls unter dem gleichen Problem, aber dies kann vermieden werden, indem ein --permananent
angehängt wird Flag zum Anfangsbefehl, wenn ein Port geöffnet oder eine andere Regel gesetzt wird.
Beispielsweise können Sie den TCP-Port 4000 öffnen dauerhaft mit dem folgenden Befehl:
firewall-cmd --zone=public --add-port=400/tcp --permanent
Für iptables
Für die iptables
Firewall, obwohl sich diese Unannehmlichkeiten nicht vermeiden lassen, konnten wir den Aufwand minimieren.
Wir können die iptables
speichern Regeln in eine Konfigurationsdatei wie /etc/iptables.conf
.
sudo iptables-save | sudo tee -a /etc/iptables.conf
Wir können es dann nach dem Neustart aus der Konfigurationsdatei abrufen, indem wir den folgenden Befehl verwenden:
sudo iptables-restore < /etc/iptables.conf
Jetzt die iptables
Die Regeln sind jetzt aktualisiert und unsere Ports sind wieder geöffnet!
Schlussfolgerung
In diesem Tutorial haben wir Ihnen gezeigt, wie Sie unter Linux einen neuen Port öffnen und für eingehende Verbindungen einrichten können.