UFW Essentials: Übliche Firewall-Regeln und Befehle

Einführung

UFW (unkomplizierte Firewall) ist ein Firewall-Konfigurationstool, das auf iptables aufsetzt und standardmäßig in Ubuntu-Distributionen enthalten ist. Es bietet eine vereinfachte Oberfläche zur Konfiguration gängiger Firewall-Anwendungsfälle über die Befehlszeile.

Dieses Spickzettel-ähnliche Handbuch bietet eine schnelle Referenz für gängige UFW-Anwendungsfälle und Befehle, einschließlich Beispielen zur Erlaubnis und Blockierung von Diensten nach Port, Netzwerkschnittstelle und Quell-IP-Adresse.

So verwenden Sie dieses Handbuch

  • Dieses Handbuch ist im Format eines Spickzettels mit eigenständigen Befehlszeilen-Schnipseln.
  • Springen Sie zu dem Abschnitt, der für die Aufgabe relevant ist, die Sie abschließen möchten.
  • Wenn Sie im Text dieses Handbuchs hervorgehobenen Text in den Befehlen sehen, beachten Sie, dass sich dieser Text auf IP-Adressen aus Ihrem eigenen Netzwerk beziehen sollte.

Vergessen Sie nicht, dass Sie Ihre aktuellen UFW-Regeln mit sudo ufw status oder sudo ufw status verbose überprüfen können.

Bereitstellen Sie Ihre Frontend-Anwendungen von GitHub aus mit der DigitalOcean App-Plattform. Lassen Sie DigitalOcean sich um die Skalierung Ihrer App kümmern.

UFW-Status überprüfen

Um zu überprüfen, ob ufw aktiviert ist, führen Sie Folgendes aus:

  1. sudo ufw status
Output
Status: inactive

Die Ausgabe zeigt an, ob Ihre Firewall aktiv ist oder nicht.

Aktivieren Sie UFW

Wenn Sie beim Ausführen von ufw status eine Nachricht Status: inaktiv erhalten, bedeutet dies, dass die Firewall auf dem System noch nicht aktiviert ist. Sie müssen einen Befehl ausführen, um sie zu aktivieren.

Standardmäßig blockiert UFW bei Aktivierung den externen Zugriff auf alle Ports auf einem Server. In der Praxis bedeutet dies, dass Sie, wenn Sie über SSH mit einem Server verbunden sind und ufw aktivieren, bevor Sie den Zugriff über den SSH-Port zulassen, getrennt werden. Stellen Sie sicher, dass Sie den Abschnitt zur Aktivierung des SSH-Zugriffs dieses Leitfadens befolgen, bevor Sie die Firewall aktivieren, wenn dies der Fall ist.

Um UFW auf Ihrem System zu aktivieren, führen Sie Folgendes aus:

  1. sudo ufw enable

Sie sehen eine Ausgabe wie diese:

Output
Firewall is active and enabled on system startup

Um zu sehen, was derzeit blockiert oder erlaubt ist, können Sie den Parameter verbose verwenden, wenn Sie ufw status ausführen, wie folgt:

  1. sudo ufw status
Output
Status: active Logging: on (low) Default: deny (incoming), allow (outgoing), deny (routed) New profiles: skip

Deaktivieren Sie UFW

Wenn Sie aus irgendeinem Grund UFW deaktivieren müssen, können Sie dies mit dem folgenden Befehl tun:

  1. sudo ufw disable

Beachten Sie, dass dieser Befehl den Firewall-Dienst auf Ihrem System vollständig deaktiviert.

Blockieren Sie eine IP-Adresse

Um alle Netzwerkverbindungen zu blockieren, die von einer bestimmten IP-Adresse ausgehen, führen Sie den folgenden Befehl aus und ersetzen Sie die hervorgehobene IP-Adresse durch die IP-Adresse, die Sie blockieren möchten:

  1. sudo ufw deny from 203.0.113.100
Output
Rule added

In diesem Beispiel gibt von 203.0.113.100 die Quell-IP-Adresse „203.0.113.100“ an.

Wenn Sie jetzt sudo ufw status ausführen, sehen Sie die angegebene IP-Adresse als verweigert aufgelistet:

Output
Status: active To Action From -- ------ ---- Anywhere DENY 203.0.113.100

Alle Verbindungen, die hereinkommen oder ausgehen, sind für die angegebene IP-Adresse blockiert.

Blockieren Sie ein Subnetz

Wenn Sie ein vollständiges Subnetz blockieren müssen, können Sie die Subnetzadresse als von-Parameter beim ufw deny-Befehl verwenden. Dies würde alle IP-Adressen im Beispiel-Subnetz 203.0.113.0/24 blockieren:

  1. sudo ufw deny from 203.0.113.0/24
Output
Rule added

Blockieren Sie eingehende Verbindungen zu einer Netzwerkschnittstelle

Um eingehende Verbindungen von einer bestimmten IP-Adresse zu einem bestimmten Netzwerkinterface zu blockieren, führen Sie den folgenden Befehl aus und ersetzen Sie die hervorgehobene IP-Adresse durch die IP-Adresse, die Sie blockieren möchten:

  1. sudo ufw deny in on eth0 from 203.0.113.100
Output
Rule added

Der in-Parameter gibt ufw an, die Regel nur für eingehende Verbindungen anzuwenden, und der on eth0-Parameter gibt an, dass die Regel nur für das eth0-Interface gilt. Dies kann nützlich sein, wenn Sie ein System mit mehreren Netzwerkinterfaces (einschließlich virtueller) haben und den externen Zugriff auf einige dieser Interfaces, aber nicht alle, blockieren müssen.

Eine IP-Adresse zulassen

Um alle Netzwerkverbindungen zu erlauben, die von einer bestimmten IP-Adresse stammen, führen Sie den folgenden Befehl aus und ersetzen Sie die hervorgehobene IP-Adresse durch die IP-Adresse, von der aus Sie den Zugriff erlauben möchten:

  1. sudo ufw allow from 203.0.113.101
Output
Rule added

Wenn Sie jetzt sudo ufw status ausführen, sehen Sie eine Ausgabe ähnlich dieser, die das Wort ALLOW neben der gerade hinzugefügten IP-Adresse zeigt.

Output
Status: active To Action From -- ------ ---- ... Anywhere ALLOW 203.0.113.101

Sie können auch Verbindungen von einem ganzen Subnetz zulassen, indem Sie die entsprechende Subnetzmaske für einen Host angeben, z. B. 203.0.113.0/24.

Eingehende Verbindungen zu einem Netzwerkinterface zulassen

Um eingehende Verbindungen von einer bestimmten IP-Adresse auf eine bestimmte Netzwerkschnittstelle zuzulassen, führen Sie den folgenden Befehl aus und ersetzen Sie die hervorgehobene IP-Adresse durch die IP-Adresse, die Sie zulassen möchten:

  1. sudo ufw allow in on eth0 from 203.0.113.102
Output
Rule added

Der in-Parameter gibt ufw an, die Regel nur für eingehende Verbindungen anzuwenden, und der Parameter on eth0 gibt an, dass die Regel nur für die Schnittstelle eth0 gilt.

Wenn Sie jetzt sudo ufw status ausführen, sehen Sie eine ähnliche Ausgabe wie diese:

Output
Status: active To Action From -- ------ ---- ... Anywhere on eth0 ALLOW 203.0.113.102

UFW-Regel löschen

Um eine zuvor in UFW eingerichtete Regel zu löschen, verwenden Sie ufw delete, gefolgt von der Regel (allow oder deny) und der Zielspezifikation. Das folgende Beispiel würde eine zuvor eingerichtete Regel löschen, die alle Verbindungen von der IP-Adresse 203.0.113.101 zugelassen hat:

  1. sudo ufw delete allow from 203.0.113.101
Output
Rule deleted

Eine andere Möglichkeit, anzugeben, welche Regel Sie löschen möchten, besteht darin, die Regel-ID anzugeben. Diese Informationen können mit dem folgenden Befehl abgerufen werden:

  1. sudo ufw status numbered
Output
Status: active To Action From -- ------ ---- [ 1] Anywhere DENY IN 203.0.113.100 [ 2] Anywhere on eth0 ALLOW IN 203.0.113.102

Aus der Ausgabe geht hervor, dass es zwei aktive Regeln gibt. Die erste Regel mit hervorgehobenen Werten lehnt alle Verbindungen von der IP-Adresse 203.0.113.100 ab. Die zweite Regel erlaubt Verbindungen auf der Schnittstelle eth0 von der IP-Adresse 203.0.113.102.

Da UFW standardmäßig bereits alle externen Zugriffe blockiert, es sei denn, sie werden explizit zugelassen, ist die erste Regel überflüssig und kann entfernt werden. Um eine Regel anhand ihrer ID zu löschen, führen Sie folgenden Befehl aus:

  1. sudo ufw delete 1

Sie werden aufgefordert, die Operation zu bestätigen und sicherzustellen, dass die von Ihnen bereitgestellte ID sich auf die richtige zu löschende Regel bezieht.

Output
Deleting: deny from 203.0.113.100 Proceed with operation (y|n)? y Rule deleted

Wenn Sie Ihre Regeln erneut mit sudo ufw status auflisten, werden Sie feststellen, dass die Regel entfernt wurde.

Auflisten verfügbarer Anwendungsprofile

Nach der Installation richten Anwendungen, die auf Netzwerkkommunikation angewiesen sind, typischerweise ein UFW-Profil ein, das Sie verwenden können, um Verbindungen von externen Adressen zuzulassen. Dies entspricht oft dem Ausführen von ufw allow from, mit dem Vorteil, dass eine Abkürzung bereitgestellt wird, die die spezifischen Portnummern, die ein Dienst verwendet, abstrahiert, und eine benutzerfreundliche Benennung für referenzierte Dienste bietet.

Um anzuzeigen, welche Profile derzeit verfügbar sind, führen Sie folgendes aus:

  1. sudo ufw app list

Wenn Sie einen Dienst wie einen Webserver oder andere netzwerkabhängige Software installiert haben und kein Profil in UFW verfügbar gemacht wurde, stellen Sie zunächst sicher, dass der Dienst aktiviert ist. Für entfernte Server haben Sie in der Regel bereits OpenSSH zur Verfügung:

Output
Available applications: OpenSSH

Aktivieren des Anwendungsprofils

Um ein UFW-Anwendungsprofil zu aktivieren, führen Sie ufw allow aus, gefolgt vom Namen des Anwendungsprofils, das Sie aktivieren möchten. Diesen Namen können Sie mit dem Befehl sudo ufw app list erhalten. Im folgenden Beispiel aktivieren wir das OpenSSH-Profil, das alle eingehenden SSH-Verbindungen auf dem Standard-SSH-Port zulässt.

  1. sudo ufw allow “OpenSSH”
Output
Rule added Rule added (v6)

Vergessen Sie nicht, Profilnamen in Anführungszeichen zu setzen, die aus mehreren Wörtern bestehen, wie z.B. Nginx HTTPS.

Deaktivieren des Anwendungsprofils

Um ein Anwendungsprofil zu deaktivieren, das Sie zuvor in UFW eingerichtet haben, müssen Sie die entsprechende Regel entfernen. Betrachten Sie beispielsweise die folgende Ausgabe von sudo ufw status:

  1. sudo ufw status
Output
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere Nginx Full ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) Nginx Full (v6) ALLOW Anywhere (v6)

Diese Ausgabe zeigt an, dass das Anwendungsprofil Nginx Full derzeit aktiviert ist und alle Verbindungen zum Webserver sowohl über HTTP als auch über HTTPS zulässt. Wenn Sie nur HTTPS-Anfragen von und an Ihren Webserver zulassen möchten, müssen Sie zuerst die restriktivste Regel aktivieren, was in diesem Fall Nginx HTTPS wäre, und dann die derzeit aktive Nginx Full-Regel deaktivieren:

  1. sudo ufw allow "Nginx HTTPS"
  2. sudo ufw delete allow "Nginx Full"

Denken Sie daran, dass Sie alle verfügbaren Anwendungsprofile mit sudo ufw app list auflisten können.

Erlaube SSH

Wenn Sie mit entfernten Servern arbeiten, möchten Sie sicherstellen, dass der SSH-Port für Verbindungen geöffnet ist, damit Sie sich remote bei Ihrem Server anmelden können.

Der folgende Befehl aktiviert das OpenSSH UFW-Anwendungsprofil und erlaubt alle Verbindungen zum Standard-SSH-Port auf dem Server:

  1. sudo ufw allow OpenSSH
Output
Rule added Rule added (v6)

Obwohl weniger benutzerfreundlich, ist eine alternative Syntax, den genauen Port der SSH-Dienstes anzugeben, der standardmäßig normalerweise auf 22 eingestellt ist:

  1. sudo ufw allow 22
Output
Rule added Rule added (v6)

Erlaube eingehende SSH-Verbindungen von einer bestimmten IP-Adresse oder Subnetz

Um eingehende Verbindungen von einer bestimmten IP-Adresse oder einem Subnetz zu erlauben, fügen Sie eine from-Direktive hinzu, um die Quelle der Verbindung zu definieren. Dazu müssen Sie auch die Zieladresse mit einem to-Parameter angeben. Um diese Regel auf SSH zu beschränken, begrenzen Sie das proto (Protokoll) auf tcp und verwenden dann den port-Parameter und setzen ihn auf 22, den Standardport von SSH.

Der folgende Befehl wird nur SSH-Verbindungen von der IP-Adresse 203.0.113.103 zulassen:

  1. sudo ufw allow from 203.0.113.103 proto tcp to any port 22
Output
Rule added

Sie können auch eine Subnetzadresse als from-Parameter verwenden, um eingehende SSH-Verbindungen von einem gesamten Netzwerk zuzulassen:

  1. sudo ufw allow from 203.0.113.0/24 proto tcp to any port 22
Output
Rule added

Erlauben Sie eingehende Rsync-Verbindungen von einer bestimmten IP-Adresse oder einem Subnetz

Das Programm Rsync, das auf Port 873 läuft, kann verwendet werden, um Dateien von einem Computer auf einen anderen zu übertragen.

Um eingehende rsync-Verbindungen von einer bestimmten IP-Adresse oder einem Subnetz zuzulassen, verwenden Sie den from-Parameter, um die Quell-IP-Adresse anzugeben, und den port-Parameter, um den Zielport 873 festzulegen.
Der folgende Befehl wird nur Rsync-Verbindungen von der IP-Adresse 203.0.113.103 zulassen:

  1. sudo ufw allow from 203.0.113.103 to any port 873
Output
Rule added

Um dem gesamten Subnetz 203.0.113.0/24 zu ermöglichen, auf Ihren Server zu rsync, führen Sie Folgendes aus:

  1. sudo ufw allow from 203.0.113.0/24 to any port 873
Output
Rule added

Erlauben Sie Nginx HTTP / HTTPS

Nach der Installation richtet der Nginx-Webserver einige verschiedene UFW-Profile im Server ein. Wenn Sie Nginx installiert und als Dienst aktiviert haben, führen Sie den folgenden Befehl aus, um zu identifizieren, welche Profile verfügbar sind:

  1. sudo ufw app list | grep Nginx
Output
Nginx Full Nginx HTTP Nginx HTTPS

Um sowohl HTTP- als auch HTTPS-Verkehr zu ermöglichen, wählen Sie Nginx Full. Andernfalls wählen Sie entweder Nginx HTTP, um nur HTTP zuzulassen, oder Nginx HTTPS, um nur HTTPS zuzulassen.

Der folgende Befehl ermöglicht sowohl HTTP- als auch HTTPS-Verkehr auf dem Server (Ports 80 und 443):

  1. sudo ufw allow "Nginx Full"
Output
Rule added Rule added (v6)

Erlaube Apache HTTP / HTTPS

Nach der Installation richtet der Apache-Webserver einige verschiedene UFW-Profile im Server ein. Wenn Sie Apache installiert und als Dienst aktiviert haben, führen Sie den folgenden Befehl aus, um zu identifizieren, welche Profile verfügbar sind:

  1. sudo ufw app list | grep Apache
Output
Apache Apache Full Apache Secure

Um sowohl HTTP- als auch HTTPS-Verkehr zu ermöglichen, wählen Sie Apache Full. Andernfalls wählen Sie entweder Apache für HTTP oder Apache Secure für HTTPS.

Der folgende Befehl ermöglicht sowohl HTTP- als auch HTTPS-Verkehr auf dem Server (Ports 80 und 443):

  1. sudo ufw allow "Nginx Full"
Output
Rule added Rule added (v6)

Erlaube alle eingehenden HTTP (Port 80)

Webserver wie Apache und Nginx hören typischerweise auf HTTP-Anfragen am Port 80. Wenn Ihre Standardrichtlinie für eingehenden Traffic auf Ablehnen oder Verweigern eingestellt ist, müssen Sie eine UFW-Regel erstellen, um externen Zugriff auf Port 80 zu ermöglichen. Sie können entweder die Portnummer oder den Dienstnamen (http) als Parameter für diesen Befehl verwenden.

Um alle eingehenden HTTP (Port 80) Verbindungen zuzulassen, führen Sie aus:

  1. sudo ufw allow http
Output
Rule added Rule added (v6)

Eine alternative Syntax besteht darin, die Portnummer des HTTP-Dienstes anzugeben:

  1. sudo ufw allow 80
Output
Rule added Rule added (v6)

Zulassen aller eingehenden HTTPS (Port 443)

HTTPS läuft typischerweise auf Port 443. Wenn Ihre Standardrichtlinie für eingehenden Traffic auf Ablehnen oder Verweigern eingestellt ist, müssen Sie eine UFW-Regel erstellen, um externen Zugriff auf Port 443 zu ermöglichen. Sie können entweder die Portnummer oder den Dienstnamen (https) als Parameter für diesen Befehl verwenden.

Um alle eingehenden HTTPS (Port 443) Verbindungen zuzulassen, führen Sie aus:

  1. sudo ufw allow https
Output
Rule added Rule added (v6)

Eine alternative Syntax besteht darin, die Portnummer des HTTPS-Dienstes anzugeben:

  1. sudo ufw allow 443
Output
Rule added Rule added (v6)

Zulassen aller eingehenden HTTP und HTTPS

Wenn Sie sowohl den HTTP- als auch den HTTPS-Verkehr zulassen möchten, können Sie eine einzelne Regel erstellen, die beide Ports zulässt. Diese Verwendung erfordert auch, dass Sie das Protokoll mit dem proto-Parameter definieren, der in diesem Fall auf tcp gesetzt sein sollte.

Um alle eingehenden HTTP- und HTTPS-Verbindungen (Ports 80 und 443) zuzulassen, führen Sie folgendes aus:

  1. sudo ufw allow proto tcp from any to any port 80,443
Output
Rule added Rule added (v6)

Erlauben Sie eine MySQL-Verbindung von einer bestimmten IP-Adresse oder Subnetz

MySQL hört auf Client-Verbindungen am Port 3306. Wenn Ihr MySQL-Datenbankserver von einem Client auf einem entfernten Server verwendet wird, müssen Sie eine UFW-Regel erstellen, um diesen Zugriff zu ermöglichen.

Um eingehende MySQL-Verbindungen von einer bestimmten IP-Adresse oder einem Subnetz zuzulassen, verwenden Sie den from-Parameter, um die Quell-IP-Adresse und den port-Parameter festzulegen, um den Zielport 3306 einzustellen.

Der folgende Befehl erlaubt es der IP-Adresse 203.0.113.103, sich mit dem MySQL-Port des Servers zu verbinden:

  1. sudo ufw allow from 203.0.113.103 to any port 3306
Output
Rule added

Um dem gesamten Subnetz 203.0.113.0/24 zu erlauben, sich mit Ihrem MySQL-Server zu verbinden, führen Sie aus:

  1. sudo ufw allow from 203.0.113.0/24 to any port 3306
Output
Rule added

Erlauben Sie PostgreSQL-Verbindungen von einer bestimmten IP-Adresse oder einem Subnetz

PostgreSQL lauscht auf Clientverbindungen auf Port 5432. Wenn Ihr PostgreSQL-Datenbankserver von einem Client auf einem entfernten Server verwendet wird, müssen Sie sicherstellen, dass dieser Verkehr zugelassen ist.

Um eingehende PostgreSQL-Verbindungen von einer bestimmten IP-Adresse oder einem Subnetz zuzulassen, geben Sie die Quelle mit dem Parameter from an und setzen den Port auf 5432:

  1. sudo ufw allow from 203.0.113.103 to any port 5432
Output
Rule added

Um dem gesamten Subnetz 203.0.113.0/24 die Verbindung zu Ihrem PostgreSQL-Server zu ermöglichen, führen Sie aus:

  1. sudo ufw allow from 203.0.113.0/24 to any port 5432
Output
Rule added

Ausgehenden SMTP-Mailverkehr blockieren

Mailserver wie Sendmail und Postfix verwenden typischerweise Port 25 für SMTP-Verkehr. Wenn Ihr Server keine ausgehende E-Mail senden soll, möchten Sie möglicherweise diesen Verkehr blockieren. Um ausgehende SMTP-Verbindungen zu blockieren, führen Sie aus:

  1. sudo ufw deny out 25
Output
Rule added Rule added (v6)

Dies konfiguriert Ihre Firewall so, dass sie den gesamten ausgehenden Datenverkehr auf Port 25 verwirft. Wenn Sie ausgehende Verbindungen auf einem anderen Port ablehnen müssen, können Sie diesen Befehl wiederholen und 25 durch die gewünschte Portnummer ersetzen.

Abschluss

UFW ist ein leistungsfähiges Werkzeug, das die Sicherheit Ihrer Server erheblich verbessern kann, wenn es ordnungsgemäß konfiguriert ist. Dieses Referenzhandbuch behandelt einige gängige UFW-Regeln, die häufig verwendet werden, um eine Firewall unter Ubuntu zu konfigurieren.

Die meisten Befehle in diesem Handbuch können an verschiedene Anwendungsfälle und Szenarien angepasst werden, indem Parameter wie die Quell-IP-Adresse und/oder der Zielport geändert werden. Für weitere detaillierte Informationen zu jedem Befehlsparameter und verfügbaren Modifikatoren können Sie das man-Dienstprogramm verwenden, um das Handbuch von UFW zu überprüfen:

  1. man ufw

Die offizielle UFW-Seite in der Ubuntu-Dokumentation ist eine weitere Ressource, die Sie als Referenz für fortgeschrittenere Anwendungsfälle und Beispiele verwenden können.

Source:
https://www.digitalocean.com/community/tutorials/ufw-essentials-common-firewall-rules-and-commands