So richten Sie eine Firewall mit UFW unter Linux ein
In dieser Anleitung wird erklärt, was UFW ist, wie man UFW unter Linux installiert und wie man eine Firewall mit UFW auf verschiedenen Linux-Betriebssystemen einrichtet.
Einführung
Sicherheit ist ein ernstes Geschäft. Unabhängig davon, ob Sie Ihr Linux-Betriebssystem in Rechenzentren oder auf Ihrem Desktop ausführen, sollten Sie Ihr Betriebssystem vor allen möglichen Bedrohungen schützen.
Tatsächlich sind Server, die in der Unternehmensumgebung laufen, gut geschützt. Die meisten Unternehmen investieren Millionen von Dollar, um ihre Infrastruktur zu sichern.
Es wird ein separates Netzwerkteam, ein Firewall-Team und ein Sicherheitsteam geben, um Ihre Umgebung und Linux-Server zu schützen. Dies ist nicht der Fall, wenn Sie Linux auf Ihren Desktops oder Servern ausführen.
Sie sollten wissen, wie Sie Ihre Linux-Rechner mit den richtigen Tools sichern. Ein solches Tool ist UFW.
Was ist UFW?
UFW steht für Uncomplicated Firewall und ist ein Firewall-Programm, das standardmäßig mit Ubuntu vorinstalliert ist -basierte Distributionen.
Warum UFW statt iptables? Sie fragen sich vielleicht.
Falls Sie es noch nicht wissen: Netfilter ist ein Paketfiltersystem, das mit einem Linux-Kernel geliefert wird und iptables verwendet wird, um Netzfilter mit einer Reihe von Befehlen zu manipulieren.
Sich mit iptables vertraut zu machen, kann einige Zeit dauern und eine entmutigende Aufgabe sein. Um die Firewall-Verwaltung zu vereinfachen, werden viele Frontends für iptables erstellt. UFW ist einer von ihnen.
UFW ist ein Befehlszeilen-Frontend zur Verwaltung von iptables. Es bietet ein Framework zum Verwalten und Bearbeiten der Netfilter-Firewall.
UFW ist standardmäßig in allen Ubuntu-Installationen nach der LTS-Version 8.04 verfügbar.
Es gibt auch ein grafisches Frontend für UFW namens Gufw. Wir werden darüber in einem separaten Leitfaden sprechen. In diesem Artikel konzentrieren wir uns auf die Verwendung von ufw über die Befehlszeile.
Lassen Sie uns ohne weitere Umschweife fortfahren und sehen, wie Sie die UFW-Firewall unter Linux installieren und einrichten.
1. Installieren Sie UFW unter Linux
UFW ist in den meisten Debian- und Arch-basierten Distributionen vorinstalliert. Um zu überprüfen, ob UFW installiert ist oder nicht, führen Sie den folgenden Befehl aus:
which ufw
/usr/sbin/ufwufw version
ufw 0.36
Copyright 2008-2015 Canonical Ltd.Wenn es in Ihrer Distribution nicht installiert ist, können Sie es mit dem Standardpaketmanager Ihrer Distribution installieren.
Um UFW unter Alpine Linux zu installieren, führen Sie Folgendes aus:
sudo apk add ufwInstallieren Sie UFW in Arch Linux und seinen Varianten wie EndeavourOS und Manjaro Linux:
sudo pacman -S ufwInstallieren Sie ufw in Debian, Ubuntu und seinen Derivaten:
sudo apt update
sudo apt install ufwInstallieren Sie UFW in Fedora:
sudo dnf install ufwUFW ist im [EPEL]-Repository für Enterprise Linux-Betriebssysteme wie RHEL, CentOS, AlmaLinux und Rocky Linux verfügbar.
Aktivieren Sie das [EPEL]-Repository und installieren Sie UFW in RHEL, CentOS, AlmaLinux, Rocky Linux wie folgt:
sudo dnf install epel-releasesudo dnf install ufwInstallieren Sie UFW in openSUSE:
sudo zypper install ufw1.1. Aktivieren, starten und stoppen Sie den UFW-Dienst
In Debian-basierten Systemen wird der UFW-Daemon automatisch gestartet und aktiviert.
Führen Sie den folgenden Befehl aus, um den Status des UFW-Dienstes zu überprüfen:
systemctl status ufwBeispielausgabe:
● ufw.service - Uncomplicated firewall
Loaded: loaded (/usr/lib/systemd/system/ufw.service; enabled; vendor prese>
Active: active (exited) since Mon 2021-07-05 20:08:01 IST; 44s ago
Docs: man:ufw(8)
man:ufw-framework(8)
file://usr/share/doc/ufw/README
Process: 21690 ExecStart=/usr/libexec/ufw/ufw-init start (code=exited, stat>
Main PID: 21690 (code=exited, status=0/SUCCESS)
CPU: 169ms
Jul 05 20:08:01 ostechnix systemd[1]: Starting Uncomplicated firewall...
Jul 05 20:08:01 ostechnix systemd[1]: Finished Uncomplicated firewall.
Die andere Möglichkeit, zu überprüfen, ob der UFW-Dienst aktiviert und aktiv ist:
systemctl is-enabled ufw
enabledsystemctl is-active ufw
activeWenn der UFW-Dienst nach der Installation nicht automatisch gestartet wird, führen Sie den folgenden Befehl aus, um den UFW-Dienst zu starten:
sudo systemctl start ufwUfw sollte auch so aktiviert sein, dass es zwischen Systemneustarts automatisch gestartet wird.
sudo systemctl enable ufwOder Sie können beide Befehle zu einem kombinieren, um den UFW-Dienst wie folgt auf einmal zu aktivieren und zu starten:
sudo systemctl enable --now ufwUm den UFW-Dienst zu stoppen, führen Sie einfach Folgendes aus:
sudo systemctl stop ufw3. Richten Sie eine Firewall mit UFW unter Linux ein
3.1. Hilfe bekommen
Wenn Sie UFW noch nicht kennen, sollten Sie nach der Installation zunächst den Hilfebereich und die Manpage von UFW durchsehen, um sich einen Überblick über die Verwendung von UFW zu verschaffen.
ufw --helpman ufwWenn Sie die Syntax vergessen haben oder eine Referenz für eine bestimmte Funktion von ufw benötigen, sind diese beiden Befehle sehr praktisch.
3.2. Legen Sie Standardregeln fest
Mit UFW können Sie Firewall-Regeln (oder Richtlinien) erstellen, um einen bestimmten Dienst zuzulassen oder zu verweigern. Durch diese Richtlinien weisen Sie die UFW an, welche Ports, Dienste, IP-Adressen und Schnittstellen zugelassen oder verweigert werden sollen.
Im Lieferumfang von ufw sind Standardrichtlinien enthalten. Die Standardrichtlinie verwirft alle eingehenden Verbindungen und lässt alle ausgehenden Verbindungen zu.
WICHTIG: Wenn Sie UFW auf einem Remote-Server einrichten, stellen Sie sicher, dass Sie dies zugelassen haben SSH-Port oder -Dienst, bevor Sie die UFW-Firewall aktivieren.
Die standardmäßige Eingangsrichtlinie verweigert alle eingehenden Verbindungen. Wenn Sie also die Regeln nicht so konfiguriert haben, dass SSH zugelassen wird, werden Sie vom Remote-System ausgeschlossen und können sich nicht beim System anmelden. Dies ist nicht der Fall, wenn Sie ufw auf Ihrem lokalen System ausführen.
Die Standardrichtlinien sind in der Datei /etc/default/ufw definiert. Hier ist der Inhalt der Datei:
Ufw-Standardrichtlinien
Von hier aus können wir Standardrichtlinien festlegen.
Alternativ können wir den Befehl ufwallow verwenden, um Standardrichtlinien für eingehende und ausgehende Befehle festzulegen:
sudo ufw default deny incomingsudo ufw default allow outgoing3.2.1. Überprüfen Sie den Status der UFW-Firewallregeln
Um zu überprüfen, ob Standardrichtlinien aktiv sind, führen Sie den folgenden Befehl aus:
sudo ufw statusBeispielausgabe:
Status: active
To Action From
-- ------ ----
SSH ALLOW Anywhere
224.0.0.251 mDNS ALLOW Anywhere
SSH (v6) ALLOW Anywhere (v6)
ff02::fb mDNS ALLOW Anywhere (v6) Und für ausführlichere Statusinformationen verwenden Sie diesen Befehl:
sudo ufw status verboseBeispielausgabe:
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), deny (routed)
New profiles: skip
To Action From
-- ------ ----
22/tcp (SSH) ALLOW IN Anywhere
224.0.0.251 5353/udp (mDNS) ALLOW IN Anywhere
22/tcp (SSH (v6)) ALLOW IN Anywhere (v6)
ff02::fb 5353/udp (mDNS) ALLOW IN Anywhere (v6) Um das Zahlenformat anzuzeigen, führen Sie Folgendes aus:
sudo ufw status numberedUFW-Status anzeigen
3.2.2. Regeln hinzufügen
Lassen Sie mich SSH als Beispiel nehmen, um zu zeigen, wie man Firewall-Regeln mit dem Befehl ufw hinzufügt. Schauen Sie sich die folgenden Befehle an:
sudo ufw allow sshsudo ufw allow 22sudo ufw allow 22/tcpsudo ufw allow 2222/tcpAlle Befehle dienen demselben Zweck.
[ 1 ] - Im ersten Befehl erlaube ich jeglichen Zugriff auf den ssh-Dienst. UFW weiß standardmäßig, dass ssh auf Port 22 lauscht. Wenn Sie also den Dienst „allow ssh“ verwenden, wird auch die Regel für Port 22 erzwungen.
[ 2 ] - Im zweiten Befehl fordere ich ausdrücklich auf, dies zuzulassen Eingehende Verbindungen für Port 22.
[ 3 ] - Der dritte Befehl ist derselbe wie der zweite Befehl. Es ermöglicht den gesamten Zugriff auf den tcp-Port 22. Es werden sowohl TCP- als auch UDP-Protokolle unterstützt.
[ 4 ] - Im vierten Befehl erlaube ich einem benutzerdefinierten SSH-Port (d. h. 2222), die eingehenden Verbindungen zu akzeptieren.
Sie können diese vier Befehle nicht nur für SSH, sondern für alle Dienste und Ports verwenden. Wenn Sie beispielsweise eine Verbindung zu PostgreSQL herstellen möchten, das am Port 5433 ausgeführt wird, sollte die Regel wie folgt hinzugefügt werden.
sudo ufw allow 5433Ebenso können wir den Befehl ufw deny verwenden, um eingehende Verbindungen abzulehnen:
sudo ufw deny 5433Dieser Befehl verweigert den Datenverkehr auf Port 5433.
3.2.3. Löschen Sie die UFW-Firewallregeln
Um eine Regel oder Richtlinie zu entfernen, können Sie den Befehl ufw delete verwenden.
Wenn Sie beispielsweise keinen HTTP-Verkehr mehr zulassen möchten, führen Sie einfach Folgendes aus:
sudo ufw delete allow 803.2.4. Aktivieren, deaktivieren und laden Sie die UFW-Firewallregeln neu
Dies unterscheidet sich vom Aktivieren und Starten des UFW-Daemons. Durch das Starten der ufw systemd-Einheit werden Ihre Firewall-Regeln nicht erzwungen. UFW verfügt über spezielle Befehle zum Aktivieren, Deaktivieren und Neuladen von Firewall-Regeln.
Um die Regeln wirksam zu machen, müssen Sie den folgenden Befehl ausführen:
sudo ufw enable
Firewall is active and enabled on system startupWie bereits erwähnt, verwenden Sie den folgenden Befehl, um den Status der UFW-Firewallregeln anzuzeigen:
sudo ufw statusBeispielausgabe:
Status: active
To Action From
-- ------ ----
SSH ALLOW Anywhere
224.0.0.251 mDNS ALLOW Anywhere
SSH (v6) ALLOW Anywhere (v6)
ff02::fb mDNS ALLOW Anywhere (v6) Um die Firewall-Regeln zu deaktivieren, führen Sie Folgendes aus:
sudo ufw disable
Firewall stopped and disabled on system startupBitte beachten Sie: Der obige Befehl deaktiviert nur die Firewall-Regeln. Der UFW-Daemon läuft weiterhin und ist bei Neustarts aktiviert.
Laden Sie nach dem Hinzufügen einer Richtlinie die UFW neu, damit die Richtlinie mit dem folgenden Befehl wirksam wird:
sudo ufw reload3.2.5. Richtlinie für Portbereiche hinzufügen
Sie können eine Richtlinie für eine Reihe von Ports hinzufügen, anstatt eine Richtlinie für einen einzelnen Port zu erstellen:
sudo ufw allow 8000:8080/tcpsudo ufw deny 8000:8080/tcp3.2.6. Hinzufügen von Richtlinien für bestimmte IP-Adressen, Subnetze und Ports
Mit ufw können Sie detailliertere Regeln erstellen. Nehmen wir an, wenn Sie möchten, dass Ihr Server nur über eine bestimmte IP-Adresse verbunden (ssh) wird, können Sie dies tun, indem Sie die folgende Regel hinzufügen.
sudo ufw allow from 192.168.156.2sudo ufw allow from 192.168.156.2 to any port 2222Der erste Befehl ermöglicht der angegebenen IP-Adresse die Verbindung basierend auf geöffneten Ports. Der zweite Befehl gibt an, dass der Benutzer nur von 192.168.156.2 aus eine Verbindung zum Port 2222 herstellen kann.
Um einer Gruppe von IPs aus demselben Subnetz die Verbindung mit ssh zu ermöglichen, können Sie das Subnetz verwenden und gleichzeitig eine Regel hinzufügen, die es allen IP-Teilen dieses Subnetzes ermöglicht, mit Port 2222 verbunden zu werden. .
sudo ufw allow from 192.168.156.1/24 to any port 22223.2.7. Hinzufügen einer Netzwerkschnittstellenrichtlinie
Sie können Richtlinien auch basierend auf Netzwerkschnittstellen erstellen. Der folgende Befehl erstellt eine Richtlinie zum Akzeptieren von Verbindungen für die Netzwerkschnittstelle en01 zum Port 2222.
sudo ufw allow in on en01 to any port 22223.2.8. Testen Sie Regeln, ohne sie mithilfe der Probelaufoption anzuwenden
UFW verfügt über die Option --dry-run, um Regeln zu testen, ohne sie tatsächlich anzuwenden. Folgendes würde beispielsweise angewendet, wenn der SSH-Port geöffnet würde:
sudo ufw --dry-run allow sshFühren Sie UFW-Befehle im Probelauf aus
Wie Sie in der obigen Ausgabe sehen können, gibt der Befehl ufw nur die resultierenden Regeln aus, wendet sie jedoch nicht an, wenn wir die Option --dry-run hinzufügen. Dies ist praktisch, wenn Sie Firewall-Richtlinien testen möchten.
3.2.9. Fügen Sie jeder Regel einen Kommentar hinzu
Möglicherweise haben Sie mehrere Regeln hinzugefügt. Nach einer bestimmten Anzahl von Regeln (z. B. 50) haben Sie keine Möglichkeit mehr, sich daran zu erinnern, worum es in der Regel geht.
In diesem Fall können Sie wie folgt zu jeder Regel einen Kommentar hinzufügen:
sudo ufw allow 22 comment 'open port 22 for ssh'Der obige Befehl lässt den gesamten Datenverkehr zu Port 22 zu und fügt einen Kommentar für die Regel hinzu. Auf diese Weise können Sie den Zweck einer bestimmten Regel leicht finden.
4. Welche Regel erhält Priorität?
Priorität ist wichtig, wenn Sie mehrere Regeln für denselben Dienst/dieselben Ports erstellen. Richtlinien erhalten ihre Priorität in der von ihnen erstellten Reihenfolge. Führen Sie den folgenden Befehl aus, der Ihnen die Richtlinie zusammen mit ihrer Priorität anzeigt.
sudo ufw status numberedBeispielausgabe:
Status: active
To Action From
-- ------ ----
[ 1] 22 ALLOW IN Anywhere
[ 2] 2222 ALLOW IN Anywhere
[ 3] 2222 ALLOW IN 192.168.156.2
[ 4] 2222 DENY IN 192.168.157.0/24
[ 5] 22 (v6) ALLOW IN Anywhere (v6)
[ 6] 2222 (v6) ALLOW IN Anywhere (v6) Schauen Sie sich [ 4 ] in der obigen Ausgabe an. Jede Verbindung zum Port 2222 vom Subnetz 192.168.157.0/24 sollte unterbrochen werden.
Wenn ich jedoch versuche, eine Verbindung von einem der Computer aus demselben Subnetz herzustellen, wird die Verbindung zugelassen, da [ 2 ] die hohe Priorität zugewiesen wurde.
Um dieses Verhalten außer Kraft zu setzen, müssen Sie Regeln mit Priorität erstellen. Sie können die vorhandene Regel löschen, eine neue Regel mit Priorität hinzufügen und den Dienst neu laden.
sudo ufw delete 4
Deleting:
deny from 192.168.157.0/24 to any port 2222
Proceed with operation (y|n)? y
Rule deletedsudo ufw insert 2 deny from 192.168.157.0/24 to any port 2222
Rule insertedsudo ufw reload
Firewall reloadedsudo ufw status numbered
Status: active
To Action From
-- ------ ----
[ 1] 22 ALLOW IN Anywhere
[ 2] 2222 DENY IN 192.168.157.0/24
[ 3] 2222 ALLOW IN Anywhere
[ 4] 2222 ALLOW IN 192.168.156.2
[ 5] 22 (v6) ALLOW IN Anywhere (v6)
[ 6] 2222 (v6) ALLOW IN Anywhere (v6)Schauen Sie sich die obige Ausgabe an. Die Priorität wird [2] neu zugewiesen. Wenn ich nun versuche, eine Verbindung zum Port 2222
von 192.168.157.0/24 herzustellen, wird meine Verbindung verweigert.
5. UFW-Protokollierung
Protokolle sind die beste Wahl, wenn etwas schief gelaufen ist.
Um die UFW-Protokollierung zu deaktivieren, führen Sie den folgenden Befehl aus:
sudo ufw logging off
Logging disabledFühren Sie Folgendes aus, um die UFW-Protokollierung zu aktivieren:
sudo ufw logging on
Logging enabledEs gibt vier Protokollierungsstufen: niedrig, mittel, hoch und voll. Abhängig von der von Ihnen gewählten Ebene werden die Protokolle in der Datei /var/log/ufw.log generiert. Standardmäßig ist die Protokollebene niedrig.
Mit dem folgenden Befehl können Sie die gewünschte Stufe einstellen:
sudo ufw logging [ high | medium | Full | Low ]Um den Protokollierungsstatus und die Protokollebene zu überprüfen, führen Sie den Befehl ufw status aus und suchen Sie nach dem Eintrag logging.
sudo ufw status verbose
Status: active
Logging: on (high)
Default: deny (incoming), allow (outgoing), deny (routed)
New profiles: skip6. Anwendungsprofile
Wenn Sie Pakete mithilfe Ihres Paketmanagers (z. B. apt oder pacman) installieren, wird in ufw ein Anwendungsprofil erstellt, das Regeln für dieses Paket definiert.
Wenn Sie beispielsweise einen OpenSSH-Server mit apt installieren, wird ein Profil für Port 22 erstellt. Alle Anwendungsprofile werden im Verzeichnis /etc/ufw/applications.d gespeichert.
Um die Liste der Anwendungsprofile abzurufen, führen Sie den folgenden Befehl aus:
sudo ufw app listBeispielausgabe:
Available applications:
CUPS
OpenSSHDies ist eine Testmaschine. Ich habe nur OpenSSH installiert. Sie sehen also nur zwei Profile.
Um detaillierte Informationen zu diesem Profil und der von ihm erzwungenen Richtlinie zu erhalten, führen Sie den folgenden Befehl aus:
sudo ufw app info 'OpenSSH'Beispielausgabe:
Profile: OpenSSH
Title: Secure shell server, an rshd replacement
Description: OpenSSH is a free implementation of the Secure Shell protocol.
Port:
22/tcp7. Setzen Sie die UFW-Firewall auf die Standardrichtlinie zurück
Wenn Sie alle von Ihnen erstellten Regeln bereinigen und auf die Standardeinstellungen zurücksetzen möchten, können Sie dies tun, indem Sie den Befehl ufw reset ausführen.
sudo ufw resetBeispielausgabe:
Resetting all rules to installed defaults. Proceed with operation (y|n)? y
Backing up 'user.rules' to '/etc/ufw/user.rules.20210705_131655'
Backing up 'before.rules' to '/etc/ufw/before.rules.20210705_131655'
Backing up 'after.rules' to '/etc/ufw/after.rules.20210705_131655'
Backing up 'user6.rules' to '/etc/ufw/user6.rules.20210705_131655'
Backing up 'before6.rules' to '/etc/ufw/before6.rules.20210705_131655'
Backing up 'after6.rules' to '/etc/ufw/after6.rules.20210705_131655'Wenn Sie diesen Befehl ausführen, werden Ihre aktuellen Regeln gesichert, bevor sie auf das Standardprofil zurückgesetzt werden.
Ufw verfügt auch über viele grafische Frontends. Einer von ihnen ist Gufw.
8. Gufw, ein grafisches Frontend für UFW
Einige von Ihnen sind möglicherweise mit dem Befehlszeilenmodus nicht vertraut. Glücklicherweise gibt es ein grafisches Frontend für UFW.
Gufw ist eine grafische Front-End-Anwendung zur Verwaltung der Uncomplicated Firewall (UFW) unter Linux. Gufw wurde hauptsächlich für die Installation und Konfiguration von Firewalls für Linux-Desktops entwickelt.
Lesen Sie die folgende Anleitung, um zu erfahren, wie Sie Gufw unter Linux installieren und konfigurieren:
- So richten Sie eine Firewall mit Gufw auf einem Linux-Desktop ein
Abschluss
In diesem Handbuch haben wir anhand von Beispielbefehlen erläutert, was UFW ist und wie die UFW-Firewall unter Linux installiert und eingerichtet wird.
Jetzt sind Sie an der Reihe, ufw auf Ihrem Computer zu testen. Ich empfehle, ufw in einer beliebigen virtuellen Maschine zu testen, bevor Sie es auf Ihrem Desktop oder Server implementieren.
Ressource:
- Ubuntu-Dokumentation
Verwandte Lektüre:
- So verbessern Sie die Sicherheit des Linux-Systems mit Firejail


