Jeder hat von Firewalls gehört, und sei es nur als Handlungsinstrument in einem TV-Drama über Internetkriminalität. Viele Menschen wissen auch, dass auf ihrem Computer (wahrscheinlich) eine Firewall läuft, aber weniger Menschen wissen, wie sie bei Bedarf die Kontrolle über ihre Firewall übernehmen können.
Firewalls blockieren unerwünschten Netzwerkverkehr, aber verschiedene Netzwerke haben unterschiedliche Bedrohungsstufen. Wenn Sie beispielsweise zu Hause sind, vertrauen Sie den anderen Computern und Geräten in Ihrem Netzwerk wahrscheinlich viel mehr, als wenn Sie im öffentlichen WLAN im örtlichen Café unterwegs sind. Sie können hoffen, dass Ihr Computer zwischen einem vertrauenswürdigen und einem nicht vertrauenswürdigen Netzwerk unterscheidet, oder Sie können lernen, Ihre Sicherheitseinstellungen selbst zu verwalten oder zumindest zu überprüfen.
Wie Firewalls funktionieren
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
Die Kommunikation zwischen Geräten in einem Netzwerk erfolgt über Gateways, die als Ports bezeichnet werden . Port bedeutet in diesem Zusammenhang keine physische Verbindung wie ein USB-Port oder ein HDMI-Port. In der Netzwerksprache ist ein Port ein vollständig virtuelles Konzept, das Pfade für einen bestimmten Datentyp darstellt, um entweder an einem Computer anzukommen oder von einem Computer abzugehen. Dieses System hätte alles heißen können, wie "Verbindungen" oder "Türen", aber sie wurden mindestens schon 1981 als Häfen bezeichnet, und das ist der Name, der heute verwendet wird. Der Punkt ist, dass Ports nichts Besonderes sind; Sie sind nur eine Möglichkeit, eine Adresse anzugeben, an der Daten übertragen werden können.
Bereits 1972 wurde eine Liste von Portnummern (damals "Sockets" genannt) veröffentlicht, die sich seitdem zu einer Reihe bekannter Standard-Portnummern entwickelt hat, die bei der Verwaltung bestimmter Arten von Datenverkehr helfen. Sie greifen beispielsweise täglich auf die Ports 80 und 443 zu, wenn Sie eine Website besuchen, weil fast jeder im Internet implizit oder explizit zugestimmt hat, dass Daten von Webservern über diese Ports übertragen werden. Sie können diese Theorie testen, indem Sie einen Webbrowser öffnen und zu einer Website navigieren, an deren URL ein nicht standardmäßiger Port angehängt ist. Wenn Sie beispielsweise zu example.com:42 navigieren , Ihre Anfrage wird abgelehnt, da example.com keine Website an Port 42 bereitstellt.
Wenn Sie dieselbe Website an Port 80 erneut besuchen, erhalten Sie wie erwartet eine Website. Sie können Port 80 mit :80 angeben am Ende der URL, aber da Port 80 der Standardport für HTTP-Datenverkehr ist, nimmt Ihr Webbrowser standardmäßig Port 80 an.
Wenn ein Computer, wie ein Webserver, Datenverkehr an einem bestimmten Port erwartet, ist es akzeptabel (und notwendig), den Port für Datenverkehr geöffnet zu haben. Die Gefahr besteht darin, Ports offen zu lassen, auf denen kein Datenverkehr zu erwarten ist, und genau dafür ist eine Firewall da.
Firewalld installieren
Es gibt viele Schnittstellen für die Firewall-Konfiguration. Dieser Artikel behandelt firewalld , das in Network Manager auf dem Desktop und firewall-cmd integriert ist im Endgerät. Viele Linux-Distributionen werden mit diesen installierten Tools ausgeliefert. Wenn dies bei Ihnen nicht der Fall ist, können Sie diesen Artikel entweder als allgemeinen Ratschlag für die Firewall-Verwaltung betrachten und auf das anwenden, was Sie verwenden, oder Sie können firewalld installieren .
Unter Ubuntu müssen Sie beispielsweise das Universum aktivieren Repository, deaktivieren Sie das standardmäßige ufw Firewall und installieren Sie dann firewalld :
$ sudo systemctl disable ufw
$ sudo add-apt-repository universe
$ sudo apt install firewalld
Fedora, CentOS, RHEL, OpenSUSE und viele andere enthalten firewalld standardmäßig.
Unabhängig von Ihrer Distribution muss eine Firewall aktiv und so eingestellt sein, dass sie beim Booten geladen wird, damit sie wirksam ist. Je weniger Sie sich Gedanken über die Firewall-Wartung machen müssen, desto besser.
$ sudo systemctl enable --now firewalld
Wählen Sie Ihre Zone mit Network Manager aus
Sie verbinden sich wahrscheinlich jeden Tag mit vielen verschiedenen Netzwerken. Sie sind in einem Netzwerk bei der Arbeit, einem anderen im Café und noch einem zu Hause. Ihr Computer kann erkennen, welches Netzwerk Sie häufiger verwenden als andere, aber er weiß nicht, welchem Sie vertrauen.
Eine Firewall-Zone enthält Voreinstellungen, die entscheiden, welche Ports geöffnet und geschlossen werden sollen. Mithilfe von Zonen können Sie eine Richtlinie auswählen, die für das Netzwerk, in dem Sie sich gerade befinden, am sinnvollsten ist.
Um eine Liste der verfügbaren Zonen anzuzeigen, öffnen Sie den Network Manager-Verbindungseditor in Ihrem Anwendungsmenü oder mit dem nm-connection-editor & Befehl.
Doppelklicken Sie in der Liste der Netzwerkverbindungen auf Ihr aktuelles Netzwerk.
Klicken Sie im angezeigten Netzwerkkonfigurationsfenster auf die Registerkarte Allgemein.
Klicken Sie im Bereich „Allgemein“ auf das Dropdown-Menü neben „Firewall-Zone“, um eine Liste aller verfügbaren Zonen anzuzeigen.
Sie können dieselbe Liste mit diesem Terminalbefehl abrufen:
$ sudo firewall-cmd --get-zones
Die Zonentitel geben an, was ihre Designer bei der Erstellung im Sinn hatten, aber Sie können die Besonderheiten jeder Zone mit diesem Terminalbefehl abrufen:
$ sudo firewall-cmd --zone work --list-all
work
target: default
icmp-block-inversion: no
interfaces:
sources:
services: ssh dhcpv6-client
ports:
protocols:
[...]
In diesem Beispiel die Arbeit Die Zone ist so konfiguriert, dass sie eingehenden SSH- und DHCPv6-Client-Datenverkehr zulässt, aber jeden anderen eingehenden Datenverkehr, der nicht explizit vom Benutzer angefordert wurde, verwirft. (Mit anderen Worten, die Arbeit zone blockiert den HTTP-Antwortverkehr nicht, wenn Sie eine Website besuchen, aber tut es Verweigern Sie eine HTTP-Anfrage auf Ihrem Port 80.)
Sehen Sie sich jede Zone an, um sich mit dem jeweils zulässigen Datenverkehr vertraut zu machen. Die häufigsten sind:
- Arbeit: Verwenden Sie diesen, wenn Sie sich in einem Netzwerk befinden, dem Sie am meisten vertrauen. SSH, DHCPv6 und mDNS sind zulässig, und Sie können bei Bedarf weitere hinzufügen. Diese Zone soll ein Ausgangspunkt für eine individuelle Arbeitsumgebung sein, die auf Ihren täglichen Büroanforderungen basiert.
- Öffentlich: Für Netzwerke, denen Sie nicht vertrauen. Diese Zone ist die gleiche wie die Arbeitszone, aber vermutlich würden Sie nicht die gleichen Ausnahmen wie Ihre Arbeitszone hinzufügen.
- Ablegen: Alle eingehenden Verbindungen werden abgebrochen, ohne dass eine Antwort gegeben wird. Dies kommt einem Stealth-Modus so nahe wie möglich, ohne das Netzwerk vollständig abzuschalten, da nur ausgehende Netzwerkverbindungen möglich sind (selbst ein gelegentlicher Port-Scanner könnte Ihren Computer jedoch anhand des ausgehenden Datenverkehrs erkennen, verwechseln Sie diese Zone also nicht mit einer Tarnung Gerät). Dies ist wohl die sicherste Zone in öffentlichen WLANs und definitiv die beste, wenn Sie Grund zu der Annahme haben, dass ein Netzwerk feindlich ist.
- Blockieren: Alle eingehenden Verbindungen werden mit einer Meldung abgewiesen, dass der angeforderte Port verboten ist. Es sind nur von Ihnen initiierte Netzwerkverbindungen möglich. Dies ist eine "freundliche" Version der Drop-Zone, denn selbst wenn kein Port für eingehenden Datenverkehr geöffnet ist, lehnt ein Port eine nicht initiierte Verbindung wortreich ab.
- Startseite: Verwenden Sie dies, wenn Sie anderen Computern im Netzwerk vertrauen. Nur ausgewählte eingehende Verbindungen werden akzeptiert, und Sie können bei Bedarf weitere hinzufügen.
- Intern: Ähnlich wie die Arbeitszone ist diese für interne Netzwerke gedacht, in denen Sie den anderen Computern meistens vertrauen. Sie können nach Bedarf mehr Ports und Dienste öffnen, aber dennoch einen anderen Regelsatz als in Ihrer Arbeitszone beibehalten.
- Vertrauenswürdig: Alle Netzwerkverbindungen werden akzeptiert. Gut für die Fehlerbehebung oder in Netzwerken, denen Sie absolut vertrauen.
Zuweisen einer Zone zu einem Netzwerk
Sie können jeder Netzwerkverbindung, die Sie herstellen, eine Zone zuweisen. Darüber hinaus können Sie jeder Netzwerkschnittstelle (Ethernet-Kabel, WLAN usw.), die mit jedem Netzwerk verbunden ist, eine andere Zone zuweisen.
Wählen Sie die gewünschte Zone aus und klicken Sie auf die Schaltfläche Speichern, um die Änderung zu übernehmen.
Der einfachste Weg, sich das Zuweisen einer Zone zu einer Netzwerkschnittstelle anzugewöhnen, besteht darin, sich um die Netzwerke zu kümmern, die Sie am häufigsten verwenden. Weisen Sie die Heimzone Ihrem Heimnetzwerk, die Arbeitszone Ihrem Arbeitsnetzwerk und das öffentliche Netzwerk Ihrer Lieblingsbibliothek oder Ihrem bevorzugten Cafénetzwerk zu.
Sobald Sie all Ihren üblichen Netzwerken eine Zone zugewiesen haben, bemühen Sie sich, dem nächsten neuen Netzwerk, dem Sie beitreten, eine Zone zuzuweisen, egal ob es sich um ein neues Café oder das Heimnetzwerk Ihres Kumpels handelt. Das Zuweisen von Zonen ist der beste Weg, Ihr eigenes Bewusstsein dafür zu stärken, dass Netzwerke nicht alle gleich sind und dass Sie nicht sicherer sind als alle anderen, nur weil Sie Linux verwenden.
Standardzone
Anstatt Sie jedes Mal, wenn Sie einem neuen Netzwerk beitreten, nach einer Zone zu fragen, weist firewalld jedem unbekannten Netzwerk eine Standardzone zu. Öffnen Sie ein Terminal und geben Sie diesen Befehl ein, um Ihre Standardzone abzurufen:
$ sudo firewall-cmd --get-default
public
In diesem Beispiel ist die öffentliche Zone die Standardeinstellung. Es wird erwartet, dass Sie die öffentliche Zone sehr restriktiv halten, daher ist es eine ziemlich sichere Zone, unbekannten Netzwerken zuzuweisen. Sie können jedoch stattdessen Ihre eigene Standardeinstellung festlegen.
Wenn Sie zum Beispiel paranoider sind als die meisten anderen oder wenn Sie wissen, dass Sie häufig Netzwerke besuchen, denen Sie Grund zu misstrauen haben, können Sie standardmäßig eine stark restriktive Zone zuweisen:
$ sudo firewall-cmd --set-default-zone drop
success
$ sudo firewall-cmd --get-default
drop
Jetzt unterliegt jedes neue Netzwerk, dem Sie beitreten, den Drop-Zone-Regeln, es sei denn, Sie ändern sie manuell in etwas weniger Restriktives.
Anpassen von Zonen durch Öffnen von Ports und Diensten
Die Entwickler von Firewalld beabsichtigen nicht, dass ihre Zonendefinitionen den Anforderungen all der verschiedenen existierenden Netzwerke und Vertrauensebenen genügen. Sie sind nur Ausgangspunkte, die Sie verwenden und anpassen können.
Sie müssen nicht viel über Firewalls wissen, um Ports basierend auf den Netzwerkaktivitäten öffnen und schließen zu können, von denen Sie wissen, dass Sie sie erzeugen.
Vordefinierte Dienste
Die einfachste Möglichkeit, Ihrer Firewall Berechtigungen hinzuzufügen, besteht darin, einen vordefinierten Dienst hinzuzufügen. Genau genommen gibt es so etwas wie einen "Dienst" nicht, soweit Ihre Firewall weiß, weil Firewalls Portnummern und Protokolltypen verstehen. Firewalld stellt jedoch Sammlungen von Ports und Protokollen bereit, die auf Standards und Konventionen basieren.
Wenn Sie beispielsweise ein Webentwickler sind und Ihren Computer in Ihrem lokalen Netzwerk öffnen möchten, damit Ihre Kollegen die von Ihnen erstellte Website sehen können, würden Sie das http hinzufügen und https Dienstleistungen. Wenn du ein Spieler bist und den Open-Source-Murmur-Voice-Chat-Server für deine Gilde betreibst, dann würdest du murmur hinzufügen Service. Es sind viele andere Dienste verfügbar, die Sie mit diesem Befehl anzeigen können:
$ 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-ldap freeipa-ldaps ftp [...]
Wenn Sie einen Dienst sehen, den Sie benötigen, fügen Sie ihn Ihrer aktuellen Firewall-Konfiguration hinzu, zum Beispiel:
$ sudo firewall-cmd --add-service murmur
Dieser Befehl öffnet alle Ports und Protokolle, die für einen bestimmten Dienst innerhalb Ihrer Standardzone benötigt werden , aber nur bis Sie Ihren Computer neu starten oder Ihre Firewall neu starten. Um Ihre Änderungen dauerhaft zu machen, verwenden Sie --permanent Flagge:
$ sudo firewall-cmd --add-service murmur --permanent
Sie können den Befehl auch für eine andere Zone als Ihre Standardzone eingeben:
$ sudo firewall-cmd --add-service murmur --permanent --zone home
Anschlüsse
Manchmal möchten Sie Datenverkehr für etwas zulassen, das nicht von den Diensten von firewalld definiert wird. Vielleicht richten Sie einen nicht standardmäßigen Port für einen gemeinsamen Dienst ein oder Sie müssen einen beliebigen Port öffnen.
Vielleicht führen Sie zum Beispiel die virtuelle Open-Source-Tabletop-Software MapTool aus. Da Sie den MapTool-Server betreiben und es keinen Industriestandard gibt, der regelt, auf welchem Port MapTool läuft, können Sie entscheiden, welchen Port es verwendet, und dann ein Loch in Ihre Firewall bohren, um Datenverkehr auf diesem Port zuzulassen.
Der Ablauf ist grundsätzlich derselbe wie bei Diensten:
$ sudo firewall-cmd --add-port 51234/tcp
Dieser Befehl öffnet Port 51234 für eingehende TCP-Verbindungen in Ihrer Standardzone , aber nur bis Sie Ihren Computer neu starten oder Ihre Firewall neu starten. Um Ihre Änderungen dauerhaft zu machen, verwenden Sie --permanent Flagge:
$ sudo firewall-cmd --add-port 51234/tcp --permanent
Sie können den Befehl auch für eine andere Zone als Ihre Standardzone eingeben:
$ sudo firewall-cmd --add-port 51234/tcp --permanent --zone home
Das Zulassen von Datenverkehr durch Ihren Computer unterscheidet sich vom Zulassen von Datenverkehr durch die Firewall Ihres Routers. Ihr Router hat wahrscheinlich eine andere Schnittstelle für seine eigene eingebettete Firewall (obwohl das Prinzip dasselbe ist), was den Rahmen dieses Artikels sprengen würde.
Ports und Dienste entfernen
Wenn Sie entscheiden, dass ein Dienst oder ein Port nicht mehr benötigt wird, können Sie Ihre Firewall neu starten, um Ihre Änderungen zu löschen, es sei denn, Sie verwenden die Option --permanent Flagge.
Wenn Sie Ihre Änderungen dauerhaft vorgenommen haben, verwenden Sie den --remove-port oder --remove-service Flagge:
$ sudo firewall-cmd --remove-port 51234/tcp --permanent
Sie können Ports und Dienste aus einer anderen Zone als Ihrer Standardzone entfernen, indem Sie in Ihrem Befehl eine Zone angeben:
$ sudo firewall-cmd --remove-service murmur --permanent --zone home
Benutzerdefinierte Zonen
Sie können die von firewalld bereitgestellten Standardzonen verwenden und missbrauchen, aber Sie haben auch die Freiheit, Ihre eigenen zu erstellen. Wenn es zum Beispiel für Sie sinnvoll ist, eine spielspezifische Zone zu haben, dann können Sie eine erstellen und nur während des Spiels darauf umschalten.
Um eine neue, leere Zone zu erstellen, erstellen Sie eine neue Zone mit dem Namen Spiel und laden Sie die Firewall-Regeln neu, damit Ihre neue Zone aktiv wird:
$ sudo firewall-cmd --new-zone game --permanent
success
$ sudo firewall-cmd --reload
Sobald es erstellt und aktiv ist, können Sie es mit allen Diensten und Ports anpassen, die Sie für die Spielenacht offen haben müssen.
Sorgfalt
Denken Sie noch heute über Ihre Firewall-Strategie nach. Beginnen Sie langsam und bauen Sie einige vernünftige Standardeinstellungen auf, die für Sie sinnvoll sind. Es kann einige Zeit dauern, bis Sie es sich zur Gewohnheit machen, über Ihre Firewall nachzudenken und zu verstehen, welche Netzwerkdienste Sie verwenden, aber mit ein wenig Erkundung können Sie Ihre Linux-Workstation unabhängig von Ihrer Umgebung stärken.