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:
OutputStatus: 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:
Sie sehen eine Ausgabe wie diese:
OutputFirewall 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:
OutputStatus: 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:
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:
OutputRule 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:
OutputStatus: 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:
OutputRule 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:
OutputRule 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:
OutputRule 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.
OutputStatus: 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:
OutputRule 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:
OutputStatus: 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:
OutputRule 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:
OutputStatus: 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:
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.
OutputDeleting:
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:
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:
OutputAvailable 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.
OutputRule 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
:
OutputStatus: 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:
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:
OutputRule 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:
OutputRule 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:
OutputRule added
Sie können auch eine Subnetzadresse als from
-Parameter verwenden, um eingehende SSH-Verbindungen von einem gesamten Netzwerk zuzulassen:
OutputRule 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:
OutputRule added
Um dem gesamten Subnetz 203.0.113.0/24
zu ermöglichen, auf Ihren Server zu rsync
, führen Sie Folgendes aus:
OutputRule 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:
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
):
OutputRule 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:
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
):
OutputRule 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:
OutputRule added
Rule added (v6)
Eine alternative Syntax besteht darin, die Portnummer des HTTP-Dienstes anzugeben:
OutputRule 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:
OutputRule added
Rule added (v6)
Eine alternative Syntax besteht darin, die Portnummer des HTTPS-Dienstes anzugeben:
OutputRule 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:
OutputRule 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:
OutputRule added
Um dem gesamten Subnetz 203.0.113.0/24
zu erlauben, sich mit Ihrem MySQL-Server zu verbinden, führen Sie aus:
OutputRule 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
:
OutputRule added
Um dem gesamten Subnetz 203.0.113.0/24
die Verbindung zu Ihrem PostgreSQL-Server zu ermöglichen, führen Sie aus:
OutputRule 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:
OutputRule 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:
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