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

Öffnen Sie Ports und leiten Sie den Datenverkehr durch Ihre Firewall

Idealerweise sind die meisten lokalen Netzwerke vor der Außenwelt geschützt. Wenn Sie jemals versucht haben, einen Dienst wie einen Webserver oder eine Nextcloud-Instanz zu Hause zu installieren, dann wissen Sie wahrscheinlich aus erster Hand, dass der Dienst zwar einfach aus dem Netzwerk erreichbar, aber weltweit nicht erreichbar ist web.

Dafür gibt es sowohl technische als auch sicherheitstechnische Gründe, aber manchmal möchten Sie den Zugriff auf etwas innerhalb eines lokalen Netzwerks für die Außenwelt öffnen. Das bedeutet, dass Sie in der Lage sein müssen, Datenverkehr aus dem Internet korrekt und sicher in Ihr lokales Netzwerk zu leiten. In diesem Artikel erkläre ich, wie.

Lokale und öffentliche IP-Adressen

Als Erstes müssen Sie den Unterschied zwischen einer lokalen IP-Adresse (Internet Protocol) und einer öffentlichen IP-Adresse verstehen. Derzeit verwendet der größte Teil der Welt (noch) ein Adressierungssystem namens IPv4, das bekanntermaßen über einen begrenzten Pool von Nummern verfügt, die vernetzten elektronischen Geräten zugewiesen werden können. Tatsächlich gibt es weltweit mehr vernetzte Geräte als IPv4-Adressen, und dennoch funktioniert IPv4 weiterhin. Dies ist aufgrund lokaler Adressen möglich.

Alle lokalen Netzwerke der Welt verwenden dasselbe Adresspools. Beispielsweise lautet die lokale IP-Adresse meines Heimrouters 192.168.1.1. Eine davon ist wahrscheinlich dieselbe Nummer wie Ihr Heimrouter, aber wenn ich zu 192.168.1.1 navigiere, erreiche ich mein Anmeldebildschirm des Routers und nicht Ihrer Anmeldebildschirm des Routers. Das liegt daran, dass Ihr Heimrouter tatsächlich zwei Adressen hat:eine öffentliche und eine lokale, und die öffentliche schützt die lokale davor, vom Internet entdeckt zu werden, geschweige denn, dass sie mit der 192.168.1.1 eines anderen verwechselt wird.

Aus diesem Grund wird das Internet tatsächlich Internet genannt:Es ist ein „Netz“ aus miteinander verbundenen und ansonsten in sich geschlossenen Netzwerken. Jedes Netzwerk, sei es Ihr Arbeitsplatz oder Ihr Zuhause oder Ihre Schule oder ein großes Rechenzentrum oder die „Cloud“ selbst, ist eine Sammlung verbundener Hosts, die wiederum mit einem Gateway (normalerweise einem Router) kommunizieren, das den Datenverkehr von verwaltet Internet und ins lokale Netzwerk, sowie aus dem lokalen Netzwerk ins Internet.

Das bedeutet, wenn Sie versuchen, auf einen Computer in einem Netzwerk zuzugreifen, das nicht das Netzwerk ist, mit dem Sie gerade verbunden sind, dann bringt es Ihnen nichts, die lokale Adresse dieses Computers zu kennen. Sie müssen die Öffentlichkeit kennen Adresse des Gateways des entfernten Netzwerks. Und das ist nicht alles. Sie benötigen außerdem die Berechtigung, dieses Gateway in das Remote-Netzwerk zu passieren.

Firewalls

Weitere Linux-Ressourcen

  • Spickzettel für Linux-Befehle
  • Spickzettel für fortgeschrittene Linux-Befehle
  • Kostenloser Online-Kurs:RHEL Technical Overview
  • Spickzettel für Linux-Netzwerke
  • SELinux-Spickzettel
  • Spickzettel für allgemeine Linux-Befehle
  • Was sind Linux-Container?
  • Unsere neuesten Linux-Artikel

Im Idealfall sind Sie auch heute noch von Firewalls umgeben. Du siehst sie (hoffentlich) nicht, aber sie sind da. Aus technologischer Sicht haben Firewalls einen lustigen Namen, aber sie sind eigentlich ein wenig langweilig. Eine Firewall ist nur ein Computerdienst (auch „Daemon“ genannt), ein Subsystem, das im Hintergrund der meisten elektronischen Geräte läuft. Auf Ihrem Computer laufen viele Daemons, darunter der, der beispielsweise auf Maus- oder Trackpad-Bewegungen lauscht. Eine Firewall ist ein Daemon, der so programmiert ist, dass er bestimmte Arten von Netzwerkverkehr entweder akzeptiert oder ablehnt.

Firewalls sind relativ kleine Programme, daher sind sie in die meisten modernen Geräte eingebettet. Sie laufen auf Ihrem Mobiltelefon, Ihrem Router und Ihrem Computer. Firewalls werden auf der Grundlage von Netzwerkprotokollen entwickelt, und es ist Teil der Spezifikation für die Kommunikation mit anderen Computern, dass ein über ein Netzwerk gesendetes Datenpaket bestimmte Informationen über sich selbst ankündigen muss (oder ignoriert wird). Eine Sache, die Netzwerkdaten enthalten, ist ein Port Nummer, die eines der wichtigsten Dinge ist, die eine Firewall verwendet, wenn sie Datenverkehr annimmt oder ablehnt.

Websites werden beispielsweise auf Webservern gehostet. Wenn Sie eine Website anzeigen möchten, sendet Ihr Computer Netzwerkdaten, die sich als Datenverkehr identifizieren, der für Port 80 des Webhosts bestimmt ist. Die Firewall des Webservers ist so programmiert, dass sie eingehenden Datenverkehr für Port 80 akzeptiert, also akzeptiert sie Ihre Anfrage (und der Webserver sendet Ihnen wiederum die Webseite als Antwort). Würden Sie jedoch (aus Versehen oder absichtlich) Netzwerkdaten senden, die für Port 22 dieses Webservers bestimmt sind, würden Sie wahrscheinlich von der Firewall abgelehnt (und möglicherweise für einige Zeit gesperrt).

Dies kann ein seltsames Konzept sein, da Ports und Firewalls, wie IP-Adressen, in der physischen Welt nicht wirklich „existieren“. Dies sind in Software definierte Konzepte. Sie können Ihren Computer oder Ihren Router nicht öffnen, um Netzwerkports physisch zu inspizieren, und Sie können nicht auf eine auf einen Chip gedruckte Nummer schauen, um Ihre IP-Adresse zu finden, und Sie können Ihre Firewall nicht mit Wasser übergießen, um sie zu löschen. Aber jetzt, da Sie wissen, dass diese Konzepte existieren, kennen Sie die Hürden, die damit verbunden sind, von einem Computer in einem Netzwerk zu einem anderen in einem anderen Netzwerk zu gelangen.

Jetzt ist es an der Zeit, diese Blockaden zu umgehen.

Ihre IP-Adresse

Ich gehe davon aus, dass Sie die Kontrolle über Ihr eigenes Netzwerk haben und versuchen, Ihre eigenen Firewalls zu öffnen und Ihren eigenen Datenverkehr weiterzuleiten, um externen Datenverkehr in Ihr Netzwerk zuzulassen. Zunächst benötigen Sie Ihre lokale und öffentliche IP-Adresse.

Um Ihre lokale IP-Adresse zu finden, können Sie den ip verwenden Adressbefehl unter Linux:

$ ip addr show | grep "inet "
 inet 127.0.0.1/8 scope host lo
 inet 192.168.1.6/27 brd 10.1.1.31 scope [...]

In diesem Beispiel lautet meine lokale IP-Adresse 192.168.1.6. Die andere Adresse (127.0.0.1) ist eine spezielle "Loopback"-Adresse, die Ihr Computer verwendet, um von sich aus auf sich selbst zu verweisen.

Um Ihre lokale IP-Adresse unter macOS zu finden, können Sie ifconfig verwenden :

$ ifconfig | grep "inet "
 inet 127.0.0.1 netmask 0xff000000
 inet 192.168.1.6 netmask 0xffffffe0 [...]

Und unter Windows verwenden Sie ipconfig :

$ ipconfig

Holen Sie sich die öffentliche IP-Adresse Ihres Routers unter icanhazip.com. Unter Linux können Sie dies von einem Terminal mit dem Curl-Befehl abrufen:

$ curl http://icanhazip.com
93.184.216.34

Halten Sie diese Nummern für später bereit.

Verkehr durch einen Router leiten

Das erste Gerät, das angepasst werden muss, ist das Gateway-Gerät. Dies kann ein großer, physischer Server oder ein winziger Router sein. In jedem Fall führt das Gateway mit ziemlicher Sicherheit Network Address Translation (NAT) durch, bei dem es sich um den Prozess des Akzeptierens von Datenverkehr und des Änderns der Ziel-IP-Adresse handelt.

Wenn Sie Netzwerkdatenverkehr generieren, um eine externe Website anzuzeigen, muss Ihr Computer diesen Datenverkehr an das Gateway Ihres lokalen Netzwerks senden, da Ihr Computer im Wesentlichen keine Kenntnis von der Außenwelt hat. Soweit Ihr Computer weiß, ist das gesamte Internet nur Ihr Netzwerkrouter, 192.168.1.1 (oder was auch immer die Adresse Ihres Routers ist). Ihr Computer sendet also alles an Ihr Gateway. Es ist die Aufgabe des Gateways, sich den Datenverkehr anzusehen und festzustellen, wo er sich tatsächlich befindet geleitet, und leiten Sie diese Daten dann an das echte Internet weiter. Wenn das Gateway eine Antwort erhält, leitet es die eingehenden Daten an Ihren Computer zurück.

Wenn Ihr Gateway ein Router ist, müssen Sie, um Ihren Computer der Außenwelt zugänglich zu machen, einen Port in Ihrem Router festlegen, der Ihren Computer repräsentiert. Dadurch wird Ihr Router so konfiguriert, dass er Datenverkehr zu einem bestimmten Port akzeptiert und den gesamten Datenverkehr direkt zu Ihrem Computer leitet. Je nach Marke des verwendeten Routers hat dieser Vorgang verschiedene Namen, darunter Portweiterleitung oder virtueller Server oder manchmal sogar Firewall-Einstellungen.

Jedes Gerät ist anders, daher kann ich Ihnen nicht genau sagen, worauf Sie klicken müssen, um Ihre Einstellungen anzupassen. Im Allgemeinen greifen Sie über einen Webbrowser auf Ihren Heimrouter zu. Die Adresse Ihres Routers ist manchmal auf der Unterseite des Routers aufgedruckt und beginnt entweder mit 192.168 oder 10.

Navigieren Sie zur Adresse Ihres Routers und melden Sie sich mit den Anmeldeinformationen an, die Sie erhalten haben, als Sie Ihren Internetdienst erhalten haben. Es ist oft so einfach wie admin mit einem numerischen Passwort (manchmal ist dieses Passwort auch auf dem Router aufgedruckt). Wenn Sie das Login nicht kennen, rufen Sie Ihren Internetanbieter an und fragen Sie nach Einzelheiten.

Leiten Sie in der grafischen Benutzeroberfläche den eingehenden Datenverkehr für einen Port an einen Port (derselbe ist normalerweise am einfachsten) der lokalen IP-Adresse Ihres Computers um. In diesem Beispiel leite ich eingehenden Datenverkehr, der für Port 22 (für SSH-Verbindungen verwendet) meines Heimrouters bestimmt ist, auf meinen Desktop-PC um.

Sie können jeden gewünschten Port umleiten. Wenn Sie beispielsweise eine Website auf einem freien Computer hosten, können Sie den für Port 80 Ihres Routers bestimmten Datenverkehr an Port 80 Ihres Website-Hosts umleiten.

Leiten des Datenverkehrs durch einen Server

Wenn Ihr Gateway ein physischer Server ist, können Sie den Datenverkehr mit firewall-cmd leiten. Verwenden der Rich-Regel Option können Sie Ihren Server auf eine eingehende Anfrage an einer bestimmten Adresse (Ihrer öffentlichen IP) und einem bestimmten Port (in diesem Beispiel verwende ich 22, den für SSH verwendeten Port) warten lassen und diesen Datenverkehr dann an eine IP weiterleiten Adresse und Port im lokalen Netzwerk (lokale Adresse Ihres Computers).

$ firewall-cmd --permanent --zone=public \
--add-rich-rule 'rule family="ipv4" destination address="93.184.216.34" forward-port port=22 protocol=tcp to-port=22 to-addr=192.168.1.6'

Stellen Sie Ihre Firewall ein

Die meisten Geräte verfügen über Firewalls, sodass Sie möglicherweise feststellen, dass der Datenverkehr nicht zu Ihrem lokalen Computer durchdringen kann, selbst nachdem Sie Ports und Datenverkehr weitergeleitet haben. Es ist möglich, dass eine Firewall den Datenverkehr sogar innerhalb Ihres lokalen Netzwerks blockiert. Firewalls sollen Ihren Computer schützen, widerstehen Sie also dem Drang, Ihre Firewall vollständig zu deaktivieren (außer zur Fehlerbehebung). Stattdessen können Sie Datenverkehr selektiv zulassen.

Der Vorgang zum Ändern Ihrer persönlichen Firewall unterscheidet sich je nach Betriebssystem.

Unter Linux sind bereits viele Dienste definiert. Sehen Sie sich die verfügbaren an:

$ sudo firewall-cmd --get-services
amanda-client amanda-k5-client bacula bacula-client
bgp bitcoin bitcoin-rpc ceph cfengine condor-collector
ctdb dhcp dhcpv6 dhcpv6-client dns elasticsearch
freeipa-ldaps ftp [...] ssh steam-streaming svdrp [...]

Wenn der Dienst, den Sie zulassen möchten, aufgeführt ist, können Sie ihn zu Ihrer Firewall hinzufügen:

$ sudo firewall-cmd --add-service ssh --permanent

Wenn Ihr Dienst nicht aufgeführt ist, können Sie den Port, den Sie öffnen möchten, manuell hinzufügen:

$ sudo firewall-cmd --add-port 22/tcp --permanent

Das Öffnen eines Ports in Ihrer Firewall ist spezifisch für Ihre aktuelle Zone . Weitere Informationen zu Firewalls, Firewall-cmd und Ports finden Sie in meinem Artikel Linux mit Firewalls stärker machen , und laden Sie unser Firewall-Cheatsheet zum schnellen Nachschlagen herunter.

Bei diesem Schritt geht es nur darum, einen Port in Ihrem Computer zu öffnen, damit der für ihn bestimmte Datenverkehr an einem bestimmten Port akzeptiert wird. Sie müssen den Datenverkehr nicht umleiten, da Sie dies bereits an Ihrem Gateway getan haben.

Stellen Sie die Verbindung her

Sie haben Ihr Gateway und Ihr lokales Netzwerk eingerichtet, um den Datenverkehr für Sie weiterzuleiten. Wenn nun jemand außerhalb Ihres Netzwerks zu Ihrer öffentlichen IP-Adresse navigiert, die für einen bestimmten Port bestimmt ist, wird er an denselben Port auf Ihren Computer umgeleitet. Es liegt an Ihnen, Ihr Netzwerk zu überwachen und zu schützen, also gehen Sie mit Ihrem neuen Wissen vorsichtig um. Zu viele offene Ports können wie Einladungen für schlechte Schauspieler und Bots aussehen, also öffnen Sie nur das, was Sie verwenden möchten. Und vor allem viel Spaß!


Linux
  1. Open-Source-Tools und Tipps zur Verbesserung der Leistung Ihres Linux-PCs

  2. So öffnen Sie das Netzwerk- und Freigabecenter in Windows Server 2012

  3. So öffnen Sie das Netzwerk- und Freigabecenter in Windows Server 2008

  4. Öffnen Sie Ports in der Linux-Firewall, um auf POP- und IMAP-Mailserver zuzugreifen

  5. Leiten Sie nur bestimmten Datenverkehr durch VPN

Sichern Sie Ihr Linux-Netzwerk mit firewall-cmd

So finden und schließen Sie offene Ports in Linux

So installieren und verwalten Sie Evillimiter zur Steuerung Ihres Wi-Fi-Netzwerks unter Linux

So installieren und verwenden Sie den webbasierten Linux Network Traffic Analyzer von Darkstat

Wie lassen sich Ports in der WHM-Firewall und der CSF-Firewall über SSH zulassen?

So überprüfen Sie alle offenen Ports in Ihrem Linux-System