Einführung
UFW (Uncomplicated Firewall) ist eine Benutzeroberfläche für iptables, die die Firewall-Konfiguration vereinfacht. Obwohl iptables ein leistungsstarkes und flexibles Tool ist, kann die korrekte Konfiguration einer Firewall für Anfänger schwierig sein. Wenn Sie Ihr Netzwerk absichern möchten und sich nicht sicher sind, welches Tool Sie verwenden sollen, ist UFW möglicherweise eine gute Wahl.
Voraussetzungen
Wenn Sie Ubuntu 16.04 oder eine ältere Version verwenden, empfehlen wir Ihnen ein Upgrade auf eine neuere Version, da Ubuntu diese Versionen nicht mehr unterstützt. Diese Anleitung hilft Ihnen beim Upgrade Ihrer Ubuntu-Version.
Schritt 1 – Sicherstellen, dass IPv6 aktiviert ist
In neueren Ubuntu-Versionen ist IPv6 standardmäßig aktiviert. Das bedeutet, dass die meisten Firewall-Regeln auf dem Server sowohl IPv4 als auch IPv6 enthalten, wobei IPv6 in der Ausgabe des UFW-Statusbefehls als v6 angezeigt wird. Um sicherzustellen, dass IPv6 aktiviert ist, können Sie die UFW-Konfigurationsdatei unter /etc/default/ufw überprüfen. Öffnen Sie diese Datei mit nano oder Ihrem bevorzugten Befehlszeileneditor.
sudo nano /etc/default/ufwStellen Sie anschließend sicher, dass der IPv6-Wert auf „Ja“ gesetzt ist. Es sollte etwa so aussehen:
IPV6=yesSpeichern und schließen Sie die Datei. Wenn Sie nano verwenden, können Sie dies mit Strg+X, dann Y und zur Bestätigung mit der Eingabetaste tun.
Wenn UFW im nächsten Schritt dieser Anleitung aktiviert wird, wird es so konfiguriert, dass es sowohl IPv4- als auch IPv6-Firewallregeln schreibt.
Schritt 2 – Standardrichtlinien festlegen
Wenn Sie UFW zum ersten Mal verwenden, sollten Sie zunächst die Standardrichtlinien Ihrer Firewall überprüfen. Diese Regeln steuern, wie Datenverkehr behandelt wird, der keiner anderen Regel explizit entspricht.
UFW ist standardmäßig so konfiguriert, dass alle eingehenden Verbindungen blockiert und alle ausgehenden Verbindungen zugelassen werden. Das bedeutet, dass niemand, der versucht, auf Ihren Server zuzugreifen, eine Verbindung herstellen kann, während Anwendungen innerhalb des Servers weiterhin nach außen kommunizieren können. Zusätzliche Regeln ermöglichen es, bestimmte Dienste und Ports als Ausnahmen von dieser allgemeinen Richtlinie zuzulassen.
Um sicherzustellen, dass Sie dem Rest dieses Tutorials folgen können, richten Sie nun Ihre Standard-UFW-Richtlinien für eingehenden und ausgehenden Datenverkehr ein.
Um die standardmäßige UFW-Eingangsrichtlinie auf „Verweigern“ zu setzen, führen Sie folgenden Befehl aus:
sudo ufw default deny incomingOutput
Default incoming policy changed to 'deny'
(be sure to update your rules accordingly)Um die standardmäßige UFW-Ausgangsrichtlinie auf „zulässig“ zu setzen, führen Sie folgenden Befehl aus:
Diese Befehle legen die Standardeinstellungen fest, um eingehende Verbindungen zu blockieren und ausgehende Verbindungen zuzulassen. Diese Firewall-Standardeinstellungen allein mögen für einen PC ausreichend sein, Server müssen jedoch häufig auf Anfragen externer Benutzer reagieren. Darauf gehen wir später ein.
Schritt 3 – SSH-Verbindungen zulassen
Wenn Sie Ihre UFW-Firewall jetzt aktivieren, werden alle eingehenden Verbindungen blockiert. Das bedeutet: Soll Ihr Server auf solche Anfragen reagieren, müssen Sie Regeln erstellen, die legitime eingehende Verbindungen – beispielsweise SSH- oder HTTP-Verbindungen – explizit zulassen. Bei einem Cloud-Server ist es ratsam, eingehende SSH-Verbindungen zu erlauben, um auf den Server zugreifen und ihn verwalten zu können.
OpenSSH UFW-Anwendungsprofil zulassen
Nach der Installation registrieren die meisten Anwendungen, die auf Netzwerkverbindungen angewiesen sind, ein Anwendungsprofil bei UFW. Dies ermöglicht es Benutzern, den externen Zugriff auf einen Dienst schnell zu erlauben oder zu verweigern. Mit dem folgenden Befehl können Sie überprüfen, welche Profile aktuell bei UFW registriert sind:
sudo ufw app listOutput
Available applications:
OpenSSHUm das OpenSSH-Anwendungsprofil zu aktivieren, führen Sie folgenden Befehl aus:
SSH basierend auf dem Dienstnamen zulassen
Eine weitere Möglichkeit, UFW so zu konfigurieren, dass eingehende SSH-Verbindungen zugelassen werden, besteht darin, auf seinen Dienstnamen zu verweisen:
SSH basierend auf der Portnummer aktivieren
Alternativ können Sie die entsprechende Regel auch schreiben, indem Sie den Port anstelle des Anwendungs- oder Dienstprofilnamens angeben. Beispielsweise funktioniert dieser Befehl wie die vorherigen Beispiele:
sudo ufw allow 22Output
Rule added
Rule added (v6)Wenn Sie Ihren SSH-Dienst für die Verwendung eines anderen Ports konfiguriert haben, müssen Sie den entsprechenden Port angeben. Wenn Ihr SSH-Server beispielsweise auf Port 2222 lauscht, können Sie mit diesem Befehl Verbindungen auf diesem Port zulassen:
sudo ufw allow 2222Output
Rule added
Rule added (v6)Nachdem Ihre Firewall nun so konfiguriert ist, dass eingehende SSH-Verbindungen zugelassen werden, können Sie diese aktivieren.
Schritt 4 – UFW aktivieren
Ihre Firewall sollte nun so konfiguriert sein, dass SSH-Verbindungen zugelassen werden. Um zu überprüfen, welche Regeln bisher hinzugefügt wurden, auch wenn die Firewall noch deaktiviert ist, können Sie den folgenden Befehl verwenden:
sudo ufw show added
Output
Added user rules (see 'ufw status' for running firewall):
ufw allow OpenSSHNachdem Sie überprüft haben, dass Sie eine Regel zum Zulassen eingehender SSH-Verbindungen eingerichtet haben, können Sie die Firewall mit folgendem Befehl aktivieren:
sudo ufw enable
OutputCommand may disrupt existing ssh connections. Proceed with operation (y|n)? y Firewall is active and enabled on system startup
Sie erhalten eine Warnung, dass dieser Befehl bestehende SSH-Verbindungen unterbrechen kann. Da Sie bereits eine Firewall-Regel eingerichtet haben, die SSH-Verbindungen zulässt, können Sie fortfahren. Bestätigen Sie die Eingabeaufforderung mit „y“ und drücken Sie die Eingabetaste.
Die Firewall ist nun aktiviert. Führen Sie den Befehl `sudo ufw status verbose` aus, um die eingerichteten Regeln anzuzeigen. Im weiteren Verlauf dieses Tutorials wird die Verwendung von UFW detaillierter beschrieben, beispielsweise das Zulassen oder Blockieren verschiedener Verbindungstypen.
Schritt 5 – Andere Verbindungen zulassen
An diesem Punkt sollten Sie alle weiteren Verbindungen zulassen, die Ihr Server verarbeiten muss. Welche Verbindungen Sie zulassen sollten, hängt von Ihren spezifischen Anforderungen ab. Sie wissen bereits, wie Sie Regeln erstellen, die Verbindungen basierend auf Anwendungsprofil, Dienstnamen oder Port zulassen. Dies haben Sie bereits für SSH auf Port 22 getan. Sie können dies auch für Folgendes tun:
- HTTP auf Port 80, dem gleichen Port, der von unverschlüsselten Webservern verwendet wird, mit sudo ufw allow http oder sudo ufw allow 80
- HTTPS auf Port 443, dem gleichen Port, den verschlüsselte Webserver verwenden, mit sudo ufw allow https oder sudo ufw allow 443
- Apache mit HTTP und HTTPS, unter Verwendung von sudo ufw allow 'Apache Full'‘
- Nginx mit HTTP und HTTPS, unter Verwendung von sudo ufw allow 'Nginx Full'‘
Vergessen Sie nicht, mit dem Befehl sudo ufw app list zu prüfen, welche Anwendungsprofile für Ihren Server verfügbar sind.
Neben der Angabe eines Ports oder eines bekannten Dienstnamens gibt es noch weitere Möglichkeiten, Verbindungen zu ermöglichen. Einige dieser Methoden werden wir im Folgenden erläutern.
Spezifische Portbereiche
Mit UFW können Sie einen Portbereich festlegen. Manche Anwendungen nutzen mehrere Ports anstelle von nur einem.
Um beispielsweise X11-Verbindungen über die Ports 6000-6007 zu ermöglichen, verwenden Sie diese Befehle:
sudo ufw allow 6000:6007/tcp
sudo ufw allow 6000:6007/udp
Bei der Angabe von Portbereichen mit UFW muss das Protokoll (TCP oder UDP) angegeben werden, für das die Regeln gelten sollen. Wir haben dies bisher nicht erwähnt, da die Nichtangabe eines Protokolls automatisch beide Protokolle zulässt, was in den meisten Fällen unproblematisch ist.
Bestimmte IP-Adressen
Bei der Arbeit mit UFW können Sie in Ihren Regeln auch IP-Adressen angeben. Wenn Sie beispielsweise Verbindungen von einer bestimmten IP-Adresse zulassen möchten, etwa von Ihrer Arbeits- oder Heim-IP-Adresse 203.0.113.4, verwenden Sie den Parameter „from“ und geben dann die gewünschte IP-Adresse ein:
sudo ufw allow from 203.0.113.4Output
Rule addedSie können auch den Port angeben, zu dem eine IP-Adresse eine Verbindung herstellen darf, indem Sie jedem Port die entsprechende Portnummer voranstellen. Um beispielsweise der IP-Adresse 203.0.113.4 die Verbindung zu Port 22 (SSH) zu erlauben, verwenden Sie folgenden Befehl:
sudo ufw allow from 203.0.113.4 to any port 22
OutputRule added
Subnetze
Um den Zugriff auf ein Subnetz von IP-Adressen zu erlauben, können Sie dies mithilfe der CIDR-Notation und der Angabe einer Netzwerkmaske tun. Wenn Sie beispielsweise den Zugriff auf alle IP-Adressen von 203.0.113.1 bis 203.0.113.254 erlauben möchten, können Sie folgenden Befehl verwenden:
sudo ufw allow from 203.0.113.0/24
Output
Rule addedEbenso können Sie den Zielport festlegen, zu dem das Subnetz 203.0.113.0/24 Verbindungen herstellen darf. Auch hier verwenden wir Port 22 (SSH) als Beispiel:
sudo ufw allow from 203.0.113.0/24 to any port 22Output
Rule addedVerbindung zu einer bestimmten Netzwerkschnittstelle
Wenn Sie eine Firewall-Regel erstellen möchten, die nur für eine bestimmte Netzwerkschnittstelle gilt, können Sie dies tun, indem Sie "Protokollierung zulassen" gefolgt vom Namen der Netzwerkschnittstelle angeben.
Bevor Sie fortfahren, können Sie nach Ihren Netzwerkschnittstellen suchen. Verwenden Sie dazu folgenden Befehl:
ip addrOutput Excerpt
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state
. . .
3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default
. . .Die hervorgehobene Ausgabe zeigt die Namen der Netzwerkschnittstellen. Sie tragen üblicherweise Namen wie eth0 oder enp3s2.
Wenn Ihr Server also über eine öffentliche Netzwerkschnittstelle namens eth0 verfügt, können Sie HTTP-Verkehr (Port 80) mit diesem Befehl zulassen:
sudo ufw allow in on eth0 to any port 80Output
Rule added
Rule added (v6)Dadurch kann Ihr Server HTTP-Anfragen aus dem öffentlichen Internet empfangen.
Oder wenn Sie beispielsweise möchten, dass Ihr MySQL-Datenbankserver (Port 3306) Verbindungen über die private Netzwerkschnittstelle eth1 entgegennimmt, können Sie diesen Befehl verwenden:
sudo ufw allow in on eth1 to any port 3306Output
Rule added
Rule added (v6)Dies ermöglicht es anderen Servern in Ihrem privaten Netzwerk, eine Verbindung zu Ihrer MySQL-Datenbank herzustellen.
Schritt 6 – Verbindungen trennen
Wenn Sie die Standardrichtlinie für eingehende Verbindungen nicht geändert haben, ist UFW so konfiguriert, dass alle eingehenden Verbindungen blockiert werden. Dies vereinfacht die Erstellung einer sicheren Firewall-Richtlinie, da Sie keine Regeln erstellen müssen, die explizit bestimmte Ports und IP-Adressen zulassen.
Manchmal möchten Sie jedoch bestimmte Verbindungen anhand der Quell-IP-Adresse oder des Subnetzes blockieren, beispielsweise weil Sie wissen, dass Ihr Server von dort angegriffen wird. Wenn Sie Ihre Standardrichtlinie für eingehende Verbindungen auf „Zulassen“ ändern möchten (was nicht empfohlen wird), müssen Sie außerdem für jeden Dienst oder jede IP-Adresse, von der Sie keine Verbindungen zulassen möchten, separate Blockierungsregeln erstellen.
Um Ablehnungsregeln zu schreiben, können Sie die zuvor beschriebenen Befehle verwenden und dabei allow durch deny ersetzen.
Um beispielsweise HTTP-Verbindungen abzulehnen, können Sie diesen Befehl verwenden:
sudo ufw deny httpOutput
Rule added (v6)Oder falls Sie alle Verbindungen von 203.0.113.4 blockieren möchten, können Sie diesen Befehl verwenden:
sudo ufw deny from 203.0.113.4Output
Rule addedIn manchen Fällen möchten Sie möglicherweise auch ausgehende Verbindungen vom Server blockieren. Um zu verhindern, dass alle Benutzer einen Port auf dem Server verwenden, z. B. Port 25 für SMTP-Verkehr, können Sie „deny out“ gefolgt von der Portnummer verwenden:
sudo ufw deny out 25Output
Rule added
Rule added (v6)Dadurch wird der gesamte ausgehende SMTP-Verkehr auf dem Server blockiert.
Schritt 7 – Regeln löschen
Das Löschen von Firewall-Regeln ist genauso wichtig wie das Erstellen von Regeln. Es gibt zwei Möglichkeiten, die zu löschenden Regeln anzugeben: über die Regelnummer oder über den lesbaren Namen (ähnlich wie bei der Erstellung von Regeln).
Eine UFW-Regel anhand der Nummer löschen
Um eine UFW-Regel anhand ihrer Nummer zu löschen, benötigen Sie zunächst eine nummerierte Liste aller Firewall-Regeln. Der UFW-Statusbefehl bietet eine Option zur Anzeige der Nummern neben jeder Regel, wie hier gezeigt:
sudo ufw status numberedNumbered Output:
Status: active
To Action From
-- ------ ----
[ 1] 22 ALLOW IN 15.15.15.0/24
[ 2] 80 ALLOW IN AnywhereWenn Sie Regel Nr. 2 entfernen möchten, die Verbindungen über Port 80 (HTTP) zulässt, können Sie dies im UFW-Entfernungsbefehl wie folgt angeben:
sudo ufw delete 2Output
Deleting:
allow 80
Proceed with operation (y|n)? y
Rule deletedSie werden um Bestätigung gebeten und anschließend Regel 2 gelöscht, die HTTP-Verbindungen ermöglicht. Beachten Sie, dass Sie, falls IPv6 aktiviert ist, auch die entsprechende IPv6-Regel löschen müssen.
Eine UFW-Regel anhand des Namens löschen
Anstatt Regelnummern zu verwenden, können Sie auch einen aussagekräftigen Namen verwenden, der sich aus dem Regeltyp (üblicherweise „Zulassen“ oder „Verweigern“) und dem Dienstnamen oder der Portnummer, auf die sich die Regel bezieht, oder dem Namen des Anwendungsprofils (falls vorhanden), ergibt. Um beispielsweise eine zuvor aktivierte Zulassungsregel für ein Anwendungsprofil namens „Apache Full“ zu entfernen, verwenden Sie folgenden Befehl:
sudo ufw delete allow "Apache Full"Output
Rule deleted
Rule deleted (v6)
Der Befehl „Löschen“ funktioniert analog für Regeln, die durch Referenzierung eines Dienstes über Namen oder Port erstellt wurden. Wenn Sie beispielsweise zuvor eine Regel erstellt haben, um HTTP-Verbindungen zuzulassen, sudo ufw allow http Sie können die Regel wie folgt löschen:
sudo ufw delete allow httpOutput
Rule deleted
Rule deleted (v6)Da Dienstnamen bei der Angabe von Regeln mit Portnummern austauschbar sind, können Sie auch dieselbe Regel allow 80 anstelle von allow http verwenden:
sudo ufw delete allow http
Output
Rule deleted Rule deleted (v6)Da Dienstnamen bei der Angabe von Regeln mit Portnummern austauschbar sind, können Sie auch dieselbe Regel allow 80 anstelle von allow http verwenden:
sudo ufw delete allow 80Output
Rule deleted
Rule deleted (v6)Beim Löschen von UFW-Regeln anhand ihres Namens werden sowohl IPv4- als auch IPv6-Regeln, sofern vorhanden, gelöscht.
Schritt 8 – UFW-Status und -Regeln prüfen
Sie können den Status von UFW jederzeit mit diesem Befehl überprüfen:
sudo ufw status verboseWenn UFW deaktiviert ist, was standardmäßig der Fall ist, sehen Sie etwa Folgendes:
Output
Status: inactiveWenn UFW aktiviert ist (was der Fall sein sollte, wenn Sie Schritt 3 befolgt haben), wird in der Ausgabe angezeigt, dass es aktiviert ist, und alle festgelegten Regeln werden aufgelistet. Wenn die Firewall beispielsweise so konfiguriert ist, dass SSH-Verbindungen (Port 22) von überall zugelassen werden, könnte die Ausgabe etwa so aussehen:
Output
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip
To Action From
-- ------ ----
22/tcp ALLOW IN Anywhereاگر میخواهید بررسی کنید که UFW چگونه فایروال را پیکربندی کرده است، از دستور status استفاده کنید.
مرحله ۹ – غیرفعال کردن یا تنظیم مجدد فایروال
اگر تصمیم دارید که از فایروال UFW استفاده نکنید، میتوانید آن را با این دستور غیرفعال کنید:
sudo ufw disableOutput
Firewall stopped and disabled on system startupAlle mit UFW erstellten Regeln sind nicht mehr aktiv. Falls Sie sie später wieder aktivieren müssen, können Sie dies jederzeit tun. sudo ufw enable Laufen.
Wenn Sie bereits UFW-Regeln konfiguriert haben, aber von vorne beginnen möchten, können Sie den Befehl „reset“ verwenden:
sudo ufw resetOutput
Resetting all rules to installed defaults. This may disrupt existing ssh
connections. Proceed with operation (y|n)? y
Backing up 'user.rules' to '/etc/ufw/user.rules.20210729_170353'
Backing up 'before.rules' to '/etc/ufw/before.rules.20210729_170353'
Backing up 'after.rules' to '/etc/ufw/after.rules.20210729_170353'
Backing up 'user6.rules' to '/etc/ufw/user6.rules.20210729_170353'
Backing up 'before6.rules' to '/etc/ufw/before6.rules.20210729_170353'
Backing up 'after6.rules' to '/etc/ufw/after6.rules.20210729_170353'Dadurch wird UFW deaktiviert und alle zuvor definierten Regeln werden entfernt. Sie erhalten somit einen Neustart mit UFW. Beachten Sie, dass Änderungen an den Standardrichtlinien nicht auf die ursprünglichen Einstellungen zurückgesetzt werden.
Abschluss
Ihre Firewall ist nun so konfiguriert, dass sie (mindestens) SSH-Verbindungen zulässt. Stellen Sie sicher, dass Sie alle weiteren eingehenden Verbindungen zulassen, die Ihr Server benötigt, und beschränken Sie unnötige Verbindungen, um die Funktionsfähigkeit und Sicherheit Ihres Servers zu gewährleisten.
Weitere Informationen zu gängigen UFW-Konfigurationen finden Sie im Tutorial.
UFW Essentials: Häufig verwendete Firewall-Regeln und Befehle für die Linux-Sicherheit
Hör zu.









