So richten Sie eine Firewall mit UFW auf Ubuntu ein
Ubuntu ist ein auf Debian basierendes Linux-Betriebssystem und eignet sich sowohl für den Desktop- als auch für den Servereinsatz. Es wird in stabilen und regelmäßigen Release-Zyklen ausgeliefert, mit einer neuen Version alle sechs Monate. Langzeit-Support (LTS)-Versionen von Ubuntu werden fünf Jahre lang unterstützt und alle zwei Jahre veröffentlicht.
Ubuntu zeigt hervorragendes Engagement für Cybersicherheit. Die Standardkonfiguration findet ein Gleichgewicht zwischen Sicherheit, Leistung und Benutzerfreundlichkeit. Andererseits kann es weiter gehärtet werden, um die Angriffsfläche zu verringern. Darüber hinaus wurden Ubuntu-Versionen nach den Common Criteria zertifiziert, was eine Drittanbieter-Zulassung der Sicherheitsmechanismen des Betriebssystems bietet. Es ist auch für HITECH, FISMA und FedRAMP zertifiziert.
Ubuntu verfügt über ein integriertes L4-Paketfiltersystem namens Netfilter
zur Zugriffskontrolle und eine Schnittstelle namens iptables
zur Konfiguration von Netfilter
. Wenn ein Paket den Server erreicht, wird es an das Netfilter-Subsystem weitergeleitet, das es basierend auf den von der Benutzerebene über iptables bereitgestellten Regeln akzeptiert, manipuliert oder ablehnt.
iptables
ist eine hochgradig konfigurierbare und flexible Firewall-Lösung. Das Erlernen der iptables-Prinzipien und das Werden eines iptables-Gurus kann jedoch einige Zeit in Anspruch nehmen. Da es eine herausfordernde Aufgabe ist, die iptables-Firewall für Anfänger zu konfigurieren, wurden viele Frontends für iptables entwickelt.
Die Uncomplicated Firewall (ufw) ist eine der iptables-Frontend-Anwendungen, die ein Framework zur Verwaltung von netfilter
sowie eine Befehlszeilenschnittstelle (CLI) zur Interaktion mit der Firewall umfasst. Es ist besonders gut für hostbasierte Firewalls geeignet. ufw bietet nicht nur eine benutzerfreundliche Schnittstelle für diejenigen, die neu in der Firewall-Thematik sind, sondern vereinfacht auch komplexe iptables-Anweisungen, um einem erfahrenen Administrator zu helfen.
ufw wurde erstmals in Ubuntu 8.04 LTS eingeführt. Es ist jetzt standardmäßig in allen Ubuntu-Linux-Installationen nach diesem Zeitpunkt enthalten.
Es ist weit verbreitet, die ufw als hostbasierte Firewall zu konfigurieren, um die Ubuntu-Server vor Cyberangriffen zu schützen. Mit Hilfe von ufw kann der Ubuntu-Server als Firewall- und Routing-Plattform zum Schutz der Netzwerke, insbesondere von kleinen Unternehmen (SMB) und Heimnetzwerken, verwendet werden.
In diesem Artikel zeigen wir Ihnen, wie Sie die Uncomplicated Firewall (ufw) auf einem Ubuntu 20.04 TLS Server einrichten und Funktionen der nächsten Generation für Firewalls oder L7-Filterung wie Inhalts- und Anwendungsfilterung mit Zenarmor® aktivieren.
Abbildung 1. Einrichten einer Firewall mit UFW auf Ubuntu
Was sind die Voraussetzungen für die Installation einer Firewall auf Ubuntu mit UFW?
Um diesem Tutorial zur Konfiguration der Uncomplicated Firewall (ufw) zu folgen, benötigen Sie:
-
Ein
Ubuntu 20.04 TLS Focal Fossa
Server und -
Privilegierter Zugriff auf Ihr Ubuntu-System als
root
oder über densudo
-Befehl. Die beste Praxis ist es, administrative Befehle alssudo
-Benutzer auszuführen.
Alle gegebenen Befehle sind mit root
-Rechten entweder direkt als Root-Benutzer oder durch Verwendung des sudo
-Befehls auszuführen.
Was sind die Schritte zur Einrichtung einer Firewall auf Ubuntu mit UFW?
Sie können eine hostbasierte Firewall ganz einfach einrichten, indem Sie die UFW auf Ihrem Ubuntu 20.04 TLS-Server konfigurieren. Die Schritte zur Installation und Konfiguration von UFW sind unten aufgeführt:
1. UFW-Installation
UFW ist vorinstallierte Software auf Ubuntu-Server-Distributionen. Daher sollten Sie das ufw
-Paket nicht auf Ihrem Server installieren müssen. Wenn ufw
noch nicht auf Ihrem System installiert ist, können Sie es manuell installieren, indem Sie die folgenden Schritte ausführen:
-
Aktualisieren Sie Ihr lokales Paket-Index, indem Sie den folgenden Befehl ausführen:
sudo apt update && sudo apt upgrade -y
-
Installieren Sie das ufw-Softwarepaket, indem Sie den folgenden Befehl ausführen:
sudo apt-get install ufw -y
Sie sollten eine Ausgabe ähnlich dieser sehen:
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages were automatically installed and are no longer required:
linux-headers-5.4.0-88 linux-headers-5.4.0-88-generic linux-image-5.4.0-88-generic linux-modules-5.4.0-88-generic linux-modules-extra-5.4.0-88-generic
Use 'sudo apt autoremove' to remove them.
The following NEW packages will be installed:
ufw
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 147 kB of archives.
After this operation, 849 kB of additional disk space will be used.
Get:1 http://tr.archive.ubuntu.com/ubuntu focal-updates/main amd64 ufw all 0.36-6ubuntu1 [147 kB]
Fetched 147 kB in 0s (521 kB/s)
Preconfiguring packages ...
Selecting previously unselected package ufw.
(Reading database ... 180990 files and directories currently installed.)
Preparing to unpack .../ufw_0.36-6ubuntu1_all.deb ...
Unpacking ufw (0.36-6ubuntu1) ...
Setting up ufw (0.36-6ubuntu1) ...
Creating config file /etc/ufw/before.rules with new version
Creating config file /etc/ufw/before6.rules with new version
Creating config file /etc/ufw/after.rules with new version
Creating config file /etc/ufw/after6.rules with new version
Created symlink /etc/systemd/system/multi-user.target.wants/ufw.service ? /lib/systemd/system/ufw.service.
Processing triggers for man-db (2.9.1-1) ...
Processing triggers for rsyslog (8.2001.0-1ubuntu1.1) ...
Processing triggers for systemd (245.4-4ubuntu3.13) ...
2. UFW-Deinstallation
Sie können das ufw-Paket von Ihrem Ubuntu 20.04-Server deinstallieren, indem Sie den folgenden Befehl ausführen:
sudo apt autoremove ufw --purge -y
Sie sollten eine Ausgabe sehen, die dieser ähnlich ist:
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages will be REMOVED:
ufw*
0 upgraded, 0 newly installed, 1 to remove and 56 not upgraded.
After this operation, 846 kB disk space will be freed.
Do you want to continue? [Y/n] Y
(Reading database ... 144553 files and directories currently installed.)
Removing ufw (0.36-6) ...
Processing triggers for man-db (2.9.1-1) ...
(Reading database ... 144462 files and directories currently installed.)
Purging configuration files for ufw (0.36-6) ...
Processing triggers for systemd (245.4-4ubuntu3.11) ...
Processing triggers for rsyslog (8.2001.0-1ubuntu1.1) ...
Es wird nicht empfohlen, die UFW von einem Server zu entfernen, der über das Internet zugänglich ist, wenn Sie nicht wissen, wie man iptables verwendet oder eine vernünftige Alternative haben.
3. UFW aktivieren
Standardmäßig ist ufw auf dem Ubuntu 20.04-Server deaktiviert. In diesem Abschnitt werden wir erklären, wie man ufw in Ubuntu aktiviert.
ufw
ermöglicht es Ihnen, Regeln hinzuzufügen, bevor Sie die Firewall aktivieren. Daher sollten Sie, wenn Sie über ssh remote mit Ihrem Server verbunden sind, Folgendes ausführen:
ufw allow proto tcp from any to any port 22
Sie sollten eine Ausgabe sehen, die dieser ähnlich ist:
Rule added
Rule added (v6)
Der SSH-Port wird nach Aktivierung der Firewall geöffnet sein.
Um die ufw zu aktivieren, führen Sie den folgenden Befehl aus:
sudo ufw enable
Nach Ausführung des obigen Befehls wird die Firewall aktiviert und beim Systemstart aktiviert. Standardmäßig wird der gesamte eingehende Datenverkehr automatisch blockiert und der gesamte ausgehende Datenverkehr erlaubt, sobald die Firewall betriebsbereit ist. Die Firewall schützt Ihr System sofort, indem sie verhindert, dass sich jemand aus der Ferne damit verbindet.
Bitte beachten Sie, dass Sie eingehende SSH-Verbindungen explizit zulassen müssen, bevor Sie die UFW-Firewall aktivieren, um sich auf Ihrem Server anmelden zu können.
Sie können den Status von UFW überprüfen, um sicherzustellen, dass es ohne Fehler aktiv ist, indem Sie den folgenden Befehl ausführen:
sudo systemctl status ufw
Dies wird eine Ausgabe ähnlich der unten angegebenen anzeigen:
. ufw.service - Uncomplicated firewall
Loaded: loaded (/lib/systemd/system/ufw.service; enabled; vendor preset: enabled)
Active: active (exited) since Tue 2021-11-16 09:18:40 UTC; 8min ago
Docs: man:ufw(8)
Main PID: 344 (code=exited, status=0/SUCCESS)
Tasks: 0 (limit: 10387)
Memory: 0B
CGroup: /system.slice/ufw.service
4. Überprüfen des Status und der Regeln der UFW
Um den Status der Firewall und der von UFW verwalteten Regeln zu überprüfen, können Sie den folgenden Befehl ausführen:
sudo ufw status verbose
Wenn Sie eine ufw-Regel löschen müssen, müssen Sie die zugehörige Regelnr. kennen. Um die ufw-Regeln mit ihren Sequenznummern anzuzeigen, können Sie den folgenden Befehl ausführen:
sudo ufw status numbered
Dies wird eine Ausgabe ähnlich der unten angegebenen anzeigen:
Status: active
To Action From
-- ------ ----
[ 1] 22/tcp ALLOW IN Anywhere
[ 2] 22/tcp (v6) ALLOW IN Anywhere (v6)
5. Konfigurieren der Standardrichtlinien von UFW
Die UFW-Firewall ist so konfiguriert, dass sie standardmäßig automatisch alle eingehenden Netzwerkpakete blockiert und alle ausgehenden Pakete zulässt. Daher kann sich niemand mit Ihrem Server verbinden, es sei denn, Sie öffnen explizit einen Dienstport, während alle auf Ihrem Server laufenden Anwendungen mit der Außenwelt kommunizieren können.
Die Datei /etc/default/ufw
wird verwendet, um die Standardrichtlinien von UFW zu speichern. Sie können die Standardrichtlinien ändern, indem Sie den folgenden Befehl ausführen:
sudo ufw default allow|deny|reject [incoming|outgoing|routed]
Als bewährte Praxis sollten alle ausgehenden Verbindungen ebenfalls blockiert werden, und nur genehmigte ausgehende Verbindungen sollten erlaubt sein. Um dies zu erreichen, können Sie den folgenden Befehl ausführen:
sudo ufw default deny outgoing
In solchen Fällen müssen Sie alle erlaubten ausgehenden Verbindungen aufrechterhalten, indem Sie die entsprechenden allow
-Regeln definieren.
6. Verwaltung von UFW-Anwendungsprofilen
Bei der Installation eines Anwendungs-Pakets mit dem apt
-Befehl werden das Anwendungsprofil, das die Beschreibung des Dienstes und die UFW-Einstellungen enthält, im Verzeichnis /etc/ufw/applications.d erstellt.
Die Syntax für Anwendungsprofile ist im einfachen .INI-Datei
-Format:
[`name`]
title=`title`
description=`description`
ports=`ports`
Das Feld ports
kann verwendet werden, um eine durch '|' getrennte Liste von Ports/Protokollen anzugeben, wobei das Protokoll optional ist. Mehrere Ports können auch mit einer durch Kommas getrennten Liste oder einem Bereich (angegeben mit start:end
) angegeben werden, wobei in diesem Fall das Protokoll erforderlich ist.
Um alle auf Ihrem Server verfügbaren Anwendungsprofile aufzulisten, führen Sie den folgenden Befehl aus:
sudo ufw app list
Je nach den auf Ihrem System installierten Anwendungen wird die Ausgabe ungefähr so aussehen:
Available applications:
Apache
Apache Full
Apache Secure
Nginx Full
Nginx HTTP
Nginx HTTPS
OpenSSH
Postfix
Postfix SMTPS
Postfix Submission
Um die Details des Firewall-Profils für eine bestimmte Anwendung anzuzeigen, führen Sie den folgenden Befehl aus:
sudo ufw app info `<name>`
wobei <name>
eine der von dem Befehl zur Auflistung der Apps aufgeführten Apps ist.
Zum Beispiel können Sie die Details des Firewall-Profils für Nginx Full anzeigen, indem Sie den folgenden Befehl ausführen:
sudo ufw app info 'Nginx Full'
Und, das Ergebnis könnte ähnlich wie folgt aussehen:
Profile: Nginx Full
Title: Web Server (Nginx, HTTP + HTTPS)
Description: Small, but very powerful and efficient web server
Ports:
80,443/tcp
Sie können auch Profile für alle bekannten Anwendungen mit dem folgenden Befehl anzeigen:
sudo ufw app info all
Dies ist eine nützliche Funktion, wenn Sie sich offene Ports auf Ihrem Server ansehen und nicht sicher sind, zu welchen Anwendungen sie gehören oder was die Anwendung macht.
Wenn der Standardport einer Anwendung geändert wird, können Sie die Anwendungsprofil-Datei bearbeiten. Nachdem Sie ein Anwendungsprofil bearbeitet haben, müssen Sie den folgenden Befehl ausführen, um die Firewall mit den neuesten Profilinformationen zu aktualisieren:
ufw app update `<name>`
Wenn Sie 'alle' für den Namen eingeben, werden alle Profile aktualisiert.
7. Aktivierung von IPv6
UFW unterstützt sowohl IPv4- als auch IPv6-Adressen. Standardmäßig sind IPv4/v6-Adressen aktiviert. Wenn Sie ein Ubuntu-System mit aktiviertem IPv6 haben, um zu überprüfen, ob die Unterstützung von IPv6-Adressen in Ihrer UFW aktiviert ist, können Sie die folgenden Schritte ausführen:
-
Bearbeiten Sie die Datei
/etc/default/ufw
mit Ihrem bevorzugten Programm wie vi oder nano. -
Finden und setzen Sie die entsprechende Zeile auf
IPv6=yes
. -
Speichern Sie die Datei und schließen Sie sie.
-
Um IPv6 zu aktivieren, indem Sie die Änderungen in der Datei
/etc/default/ufw
aktivieren, führen Sie den folgenden Befehl aus:
sudo ufw reload
8. SSH-Verbindungen zulassen
Um Ihre UFW-Firewall so zu konfigurieren, dass eingehende SSH-Verbindungen erlaubt sind, können Sie einen der folgenden Befehle ausführen:
sudo ufw allow ssh
oder
sudo ufw allow 22
Wenn Sie einen benutzerdefinierten Listening-Port für SSH-Verbindungen anstelle des Standardports 22 konfiguriert haben, müssen Sie den folgenden Befehl ausführen, um SSH zuzulassen:
sudo ufw allow `<port-number>`
Zum Beispiel, wenn Ihr SSH-Dienst auf Port 2222
läuft, können Sie den folgenden Befehl ausführen, um Verbindungen auf diesem Port zuzulassen:
sudo ufw allow 2222
Jetzt ist Ihre Firewall so konfiguriert, dass eingehende SSH-Verbindungen erlaubt sind. Sie können sie aktivieren, indem Sie Folgendes ausführen:
sudo ufw enable
Es wird darauf hingewiesen, dass das Aktivieren der Firewall bestehende SSH-Verbindungen stören kann. Geben Sie einfach y
ein und drücken Sie Enter
.
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup
Begrenzung von SSH-Verbindungen
Die Begrenzung der Verbindungsrate wird von ufw unterstützt, was nützlich ist, um Brute-Force-Login-Angriffe zu verhindern. Wenn Sie die limit
-Funktion für SSH aktivieren, erlaubt ufw normalerweise die SSH-Verbindungen, verweigert sie jedoch, wenn eine IP-Adresse versucht, innerhalb von 30 Sekunden 6 oder mehr Verbindungen herzustellen. Um die SSH-Verbindungen zur Verhinderung von Brute-Force-Angriffen zu begrenzen, geben Sie den folgenden Befehl ein:
sudo ufw limit ssh/tcp
9. Zusätzliche Verbindungen zulassen
Sie können UFW so konfigurieren, dass bestimmte Ports geöffnet werden, um bestimmte Dienste auf Ihrem Server von außen zugänglich zu machen. UFW-Regeln können entweder mit einer einfachen Syntax oder
-
eine einfache Syntax oder
-
eine vollständige Syntax.
Die einfache Syntax gibt nur den Port des Hosts und optional das Protokoll an, das erlaubt oder verweigert werden soll. Die allgemeine einfache Syntax für eine Erlauben-Regel ist unten angegeben:
sudo ufw allow `<port-number>`
Die vollständige Syntax, die vollständiger ist, gibt die Quell- und Zieladressen sowie die Ports an. Die allgemeine vollständige Syntax für eine Erlauben-Regel ist unten angegeben:
sudo ufw allow `<port-number>/<protocol>`
oder
ufw allow [proto PROTOCOL] [from ADDRESS [port PORT | app APPNAME ]] [to ADDRESS [port PORT | app APPNAME ]] [comment COMMENT]
Sie können auch den comment
-Parameter verwenden, um Kommentare zu Ihren Firewall-Regeln hinzuzufügen, um Ihren Eintrag zu erklären.
In diesem Abschnitt werden wir mit einfachen Syntaxbeispielen beginnen, um Verbindungen zu den häufigsten Diensten wie DNS und HTTP zuzulassen.(S). Dann werden wir die vollständige Syntaxnutzung von UFW für erfahrene Administratoren durchgehen.
HTTP-Dienstport öffnen (80)
Dieser Abschnitt erklärt, wie man den Port 80 (HTTP) auf Ubuntu mit der ufw-Firewall öffnet. HTTP-Verbindungen können mit einem der folgenden Befehle erlaubt werden.
-
Um nach Portnummer zu erlauben, führen Sie den folgenden Befehl aus (vollständige Syntax):
sudo ufw allow 80/tcp
-
Um nach Dienstnamen zuzulassen, führen Sie den folgenden Befehl aus:
sudo ufw allow http
-
Um nach Anwendungsprofil zuzulassen, können Sie den folgenden Befehl für NGINX ausführen:
sudo ufw allow 'Nginx HTTP'
Open HTTPS Service Port (443)
Um Port 443 in Ubuntu zu öffnen und HTTPS-Verbindungen zuzulassen, können Sie einen der folgenden Befehle ausführen:
-
Um nach Portnummer zu erlauben, führen Sie den folgenden Befehl aus (vollständige Syntax):
sudo ufw allow 443/tcp
-
Um nach Dienstnamen zuzulassen, führen Sie den folgenden Befehl aus:
sudo ufw allow https
-
Um nach Anwendungsprofil zuzulassen, können Sie den folgenden Befehl für NGINX ausführen:
sudo ufw allow 'Nginx HTTPS'
Sie können sowohl die NGINX HTTP- als auch die HTTPS-Dienste aktivieren, indem Sie den folgenden Befehl ausführen:
sudo ufw allow 'Nginx Full'
Öffnen Sie den FTP-Dienstport (20:21/TCP)
Um eingehende FTP-Verbindungen zuzulassen, müssen Sie Port 21 und Port 20 freigeben, indem Sie die folgenden Befehle ausführen:
sudo ufw allow 21/tcp
sudo ufw allow 20/tcp
Öffnen Sie den MySQL-Dienstport (3306/TCP)
Um den MySQL-Port und eingehende MySQL-Verbindungen in Ubuntu zuzulassen, führen Sie einen der folgenden Befehle aus.
-
Um nach Portnummer zuzulassen, führen Sie den folgenden Befehl aus (vollständige Syntax):
sudo ufw allow 3306/tcp
-
Um nach Dienstname zuzulassen, führen Sie den folgenden Befehl aus:
sudo ufw allow mysql
Öffnen Sie den OpenVPN-Dienstport (1194/UDP)
Um VPN-Clientverbindungen zu Ihrem OpenVPN Server zuzulassen, führen Sie den folgenden Befehl aus:
sudo ufw allow 1194/udp comment 'OpenVPN server'
Öffnen Sie den WireGuard-Dienstport (51820/UDP)
Um VPN-Clientverbindungen zu Ihrem WireGuard-Server zuzulassen, führen Sie den folgenden Befehl aus:
sudo ufw allow 51820/udp comment 'WireGuard VPN server'