Diese Anleitung 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 werden 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, Firewallteam, 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 U nkompliziert F irew all, ist ein Firewall-Programm, das standardmäßig bei Ubuntu-basierten Distributionen vorinstalliert ist.
Warum UFW statt iptables? Sie fragen sich vielleicht.
Falls Sie es noch nicht wissen, Netfilter ist ein Paketfiltersystem, das mit einem Linux-Kernel ausgeliefert wird, und iptables werden verwendet, 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 das Firewall-Management einfach zu machen, werden viele Frontends für iptables erstellt. UFW ist einer von ihnen.
UFW ist ein Kommandozeilen-Frontend zur Verwaltung von iptables. Es bietet einen Rahmen zum Verwalten und Manipulieren der Netfilter-Firewall.
UFW ist standardmäßig in allen Ubuntu-Installationen nach Version 8.04 LTS 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 die UFW-Firewall unter Linux installiert und eingerichtet wird.
1. Installieren Sie UFW unter Linux
UFW ist bei den meisten Debian- und Arch-basierten Distributionen vorinstalliert. Führen Sie den folgenden Befehl aus, um zu überprüfen, ob UFW installiert ist oder nicht:
$ welche ufw
/usr/sbin/ufw
$ ufw-Version
ufw 0,36
Copyright 2008-2015 Canonical Ltd.
Wenn es nicht in Ihrer Distribution installiert ist, können Sie es mit dem Standard-Paketmanager Ihrer Distribution installieren.
Um UFW unter Alpine Linux zu installieren, führen Sie Folgendes aus:
$ sudo apk füge ufw hinzu
Installieren Sie UFW in Arch Linux und seinen Varianten wie EndeavourOS und Manjaro Linux:
$ sudo pacman -S ufw
Installieren Sie ufw in Debian, Ubuntu und seinen Derivaten:
$ sudo apt-Aktualisierung
$ sudo apt install ufw
Installieren Sie UFW in Fedora:
$ sudo dnf install ufw
UFW ist in [EPEL]
verfügbar Repository für Enterprise-Linux-Betriebssysteme wie RHEL, CentOS, AlmaLinux und Rocky Linux.
Aktivieren Sie [EPEL]
Repository und installieren Sie UFW in RHEL, CentOS, AlmaLinux, Rocky Linux wie unten:
$ sudo dnf install epel-release
$ sudo dnf install ufw
Installieren Sie UFW in openSUSE:
$ sudo zypper install ufw
1.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 ufw
Beispielausgabe:
● ufw.service - Unkomplizierte Firewall Geladen:geladen (/usr/lib/systemd/system/ufw.service; aktiviert; Herstellervorgabe> Aktiv:aktiv (beendet) seit Mo 2021-07-05 20:08:01 IST; vor 44 Sekunden Dokumentation:man:ufw(8) man:ufw-framework(8) file://usr/share/doc/ufw/README Prozess:21690 ExecStart=/usr/libexec/ufw/ufw-init start ( code=exited, stat> Main PID:21690 (code=exited, status=0/SUCCESS) CPU:169ms 05.07 systemd[1]:Fertige unkomplizierte Firewall.
Der andere Weg, um zu überprüfen, ob der UFW-Dienst aktiviert und aktiv ist:
$ systemctl ist ufw aktiviert
aktiviert
$ systemctl is-active ufw
aktiv
Wenn 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 ufw
Ufw sollte auch aktiviert werden, um zwischen Systemneustarts automatisch gestartet zu werden.
$ sudo systemctl enable ufw
Oder 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 ufw
Um den UFW-Dienst zu stoppen, führen Sie einfach Folgendes aus:
$ sudo systemctl stop ufw
3. Firewall mit UFW unter Linux einrichten
3.1. Hilfe bekommen
Wenn Sie neu bei UFW sind, sollten Sie nach der Installation zunächst den Hilfeabschnitt und die Manpage von UFW konsultieren, um sich einen Überblick über die Verwendung von UFW zu verschaffen.
$ ufw --help
$ man ufw
Wenn 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. Standardregeln festlegen
Mit UFW können Sie Firewall-Regeln (oder Richtlinien) erstellen, um einen bestimmten Dienst zuzulassen oder abzulehnen. Durch diese Richtlinien weisen Sie die UFW an, welche Ports, Dienste, IP-Adressen und Schnittstellen zugelassen oder verweigert werden sollen.
Es gibt Standardrichtlinien, die mit ufw geliefert werden. Die Standardrichtlinie verwirft alle eingehenden Verbindungen und lässt alle ausgehenden Verbindungen zu.
WICHTIG: Wenn Sie ufw auf einem Remote-Server einrichten, vergewissern Sie sich, dass Sie den ssh-Port oder -Dienst zugelassen haben, bevor Sie die ufw-Firewall aktivieren.
Die Standardrichtlinie für eingehende Verbindungen 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 am System anmelden. Dies ist nicht der Fall, wenn Sie ufw auf Ihrem lokalen System ausführen.
Die Standardrichtlinien sind in /etc/default/ufw
definiert Datei. Hier ist der Inhalt der Datei:
Von hier aus können wir Standardrichtlinien festlegen.
Alternativ können wir den ufw allow
verwenden Befehl zum Festlegen von Standardrichtlinien für eingehende und ausgehende Befehle:
$ sudo ufw default verweigert eingehenden
$ sudo ufw standardmäßig ausgehend zulassen
3.2.1. Überprüfen Sie den Status der UFW-Firewallregeln
Führen Sie den folgenden Befehl aus, um zu überprüfen, ob Standardrichtlinien aktiv sind:
$ sudo ufw-Status
Beispielausgabe:
Status:activeTo Aktion 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 ausführlichBeispielausgabe:
Status:activeLogging:on (low)Default:deny (eingehend), allow (ausgehend), deny (routed) Neue Profile:skipTo Action From-- ------ ----22/tcp (SSH) ERLAUBT IN Anywhere 224.0.0.251 5353/udp (mDNS) ERLAUBT IN Anywhere 22/tcp (SSH (v6)) ERLAUBT IN Überall (v6) ff02::fb 5353/udp (mDNS) ERLAUBEN IN Überall (v6)Um das nummerierte Format anzuzeigen, führen Sie Folgendes aus:
$ sudo ufw status nummeriert3.2.2. Regeln hinzufügen
Lassen Sie mich SSH nehmen als Beispiel, um zu demonstrieren, wie man Firewall-Regeln mit
ufw
hinzufügt Befehl. Sehen Sie sich die folgenden Befehle an:$ sudo ufw ssh zulassen$ sudo ufw erlauben 22$ sudo ufw allow 22/tcp$ sudo ufw erlaubt 2222/tcpAlle Befehle dienen demselben Zweck.
[ 1 ] - Im ersten Befehl erlaube ich allen Zugriff auf
ssh
Service. UFW weiß standardmäßig, dass ssh auf Port22
lauscht . Wenn Sie alsossh
verwenden, erlauben Sie es service, wird er auch die Regel für Port22
erzwingen .
[ 2 ] - Im zweiten Befehl sage ich ausdrücklich, eingehende Verbindungen für Port22
zuzulassen .
[ 3 ] - Der dritte Befehl ist derselbe wie der zweite Befehl. Es erlaubt allen Zugriff auftcp
Port22
. Es werden sowohl TCP- als auch UDP-Protokolle unterstützt.
[ 4 ] - Im vierten Befehl erlaube ich einen benutzerdefinierten SSH-Port (z. B.2222
), um die eingehenden Verbindungen anzunehmen.Sie können diese vier Befehle nicht nur für ssh, sondern für beliebige Dienste und Ports verwenden. Wenn Sie beispielsweise eine Verbindung zu PostgreSQL herstellen möchten, das auf Port
5433
ausgeführt wird , dann sollte die Regel wie unten hinzugefügt werden.$ sudo ufw erlauben 5433Ebenso können wir
ufw deny
verwenden Befehl zum Ablehnen eingehender Verbindungen:$ sudo ufw deny 5433Dieser Befehl verweigert den Datenverkehr auf Port
5433
.3.2.3. UFW-Firewallregeln löschen
Um eine Regel oder Richtlinie zu entfernen, können Sie den Befehl ufw delete verwenden.
Wenn Sie beispielsweise keinen HTTP-Datenverkehr mehr zulassen möchten, führen Sie einfach Folgendes aus:
sudo ufw delete allow 803.2.4. UFW-Firewallregeln aktivieren, deaktivieren und neu laden
Dies unterscheidet sich vom Aktivieren und Starten des UFW-Daemons. Das Starten der Unit ufw systemd erzwingt Ihre Firewall-Regeln nicht. UFW verfügt über spezielle Befehle zum Aktivieren, Deaktivieren und Neuladen von Firewall-Regeln.
Damit die Regeln wirksam werden, müssen Sie den folgenden Befehl ausführen:
$ sudo ufw aktivieren
Firewall ist aktiv und wird beim Systemstart aktiviertWie bereits erwähnt, verwenden Sie den folgenden Befehl, um den Status der UFW-Firewallregeln anzuzeigen:
$ sudo ufw-StatusBeispielausgabe:
Status:activeTo Aktion 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 deaktivieren
Firewall wurde beim Systemstart angehalten und deaktiviertBitte beachten: Der obige Befehl deaktiviert nur die Firewall-Regeln. Der UFW-Daemon wird weiterhin ausgeführt und bei Neustarts aktiviert.
Laden Sie nach dem Hinzufügen einer Richtlinie die ufw neu, damit die Richtlinie mit folgendem Befehl wirksam wird:
$ sudo ufw neu laden3.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 erlaubt 8000:8080/tcp$ sudo ufw deny 8000:8080/tcp3.2.6. Richtlinien für bestimmte IP-Adressen, Subnetze und Ports hinzufügen
Mit ufw können Sie feinere Regeln erstellen. Nehmen wir an, wenn Sie möchten, dass Ihr Server nur von einer bestimmten IP aus verbunden (ssh) wird, können Sie dies tun, indem Sie die folgende Regel hinzufügen.
$ sudo ufw allow von 192.168.156.2$ sudo ufw allow von 192.168.156.2 zu jedem Port 2222Der erste Befehl ermöglicht es der angegebenen IP, sich basierend auf geöffneten Ports zu verbinden. Der zweite Befehl gibt an, dass der Benutzer eine Verbindung zu Port
2222
herstellen kann nur von192.168.156.2
.Damit sich eine Gruppe von IPs aus demselben Subnetz mit
ssh
verbinden kann , können Sie das Subnetz verwenden, während Sie eine Regel hinzufügen, sodass alle IP-Teile dieses Subnetzes mit Port2222
verbunden werden können .$ sudo ufw erlauben von 192.168.156.1/24 zu jedem Port 22223.2.7. Netzwerkschnittstellenrichtlinie hinzufügen
Sie können auch Richtlinien basierend auf Netzwerkschnittstellen erstellen. Der folgende Befehl erstellt eine Richtlinie zum Akzeptieren von Verbindungen für die Netzwerkschnittstelle
en01
an Port2222
.$ sudo ufw erlaubt in en01 jeden Port 22223.2.8. Testen Sie Regeln, ohne sie anzuwenden, indem Sie die Probelaufoption verwenden
UFW hat
--dry-run
Möglichkeit, Regeln zu testen, ohne sie tatsächlich anzuwenden. Folgendes würde beispielsweise beim Öffnen des SSH-Ports angewendet werden:$ sudo ufw --dry-run Allow sshWie Sie in der obigen Ausgabe sehen können, gibt der ufw-Befehl nur die resultierenden Regeln aus, wendet sie aber nicht an, wenn wir
--dry-run
hinzufügen Möglichkeit. Dies ist praktisch, wenn Sie Firewall-Richtlinien testen möchten.3.2.9. Kommentar zu jeder Regel hinzufügen
Möglicherweise haben Sie mehrere Regeln hinzugefügt. Nach einer bestimmten Anzahl von Regeln (z. B. 50) können Sie sich nicht mehr daran erinnern, worum es in der Regel geht.
In diesem Fall können Sie jeder Regel wie folgt einen Kommentar hinzufügen:
$ sudo ufw allow 22 Kommentar 'Port 22 für ssh öffnen'Der obige Befehl lässt den gesamten Datenverkehr an 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 hat Priorität?
Priorität ist wichtig, wenn Sie mehrere Regeln für dieselben Dienste/Ports erstellen. Richtlinien erhalten ihre Priorität in der Reihenfolge, in der sie erstellt wurden. Führen Sie den folgenden Befehl aus, der Ihnen die Richtlinie zusammen mit ihrer Priorität gibt.
$ sudo ufw status nummeriertBeispielausgabe:
Status:aktiv Bis Aktion von -- ------ ----[ 1] 22 ERLAUBEN Irgendwo [ 2] 2222 ERLAUBEN IN Irgendwo [ 3] 2222 ERLAUBEN IN 192.168.156.2 [ 4] 2222 VERWEIGERN IN 192.168.157.0/24 [ 5] 22 (v6) ERLAUBEN ÜBERALL (v6) [ 6] 2222 (v6) ERLAUBEN ÜBERALL (v6)Schauen Sie sich [ 4 ] in der obigen Ausgabe an. Jede Verbindung zu Port
2222
aus dem Subnetz192.168.157.0/24
sollte fallen gelassen werden.Aber wenn ich versuche, eine Verbindung von einem der Computer aus demselben Subnetz herzustellen, wird die Verbindung zugelassen, da [ 2 ].
eine hohe Priorität erhalten hatUm dieses Verhalten zu überschreiben, müssen Sie Regeln mit Priorität erstellen. Sie können die vorhandene Regel löschen und eine neue Regel mit Priorität hinzufügen und den Dienst neu laden.
$ sudo ufw delete 4Deleting:deny from 192.168.157.0/24 to any port 2222Fortfahren mit Operation (y|n)? yRegel gelöscht$ sudo ufw insert 2 deny von 192.168.157.0/24 zu jedem Port 2222
Regel eingefügt$ sudo ufw neu laden
Firewall neu geladen$ sudo ufw status numberedStatus:activeTo Aktion From-- ------ ----[ 1] 22 ALLOW IN Anywhere[ 2] 2222 DENY IN 192.168.157.0/24[ 3] 2222 ALLOW IN Anywhere[ 4] 2222 ERLAUBEN IN 192.168.156.2[ 5] 22 (v6) ERLAUBEN IN überall (v6)[ 6] 2222 (v6) ERLAUBEN IN überall (v6)Schauen Sie sich die obige Ausgabe an. Die Priorität wird [ 2 ] neu zugewiesen. Wenn ich jetzt versuche, mich mit Port
2222
zu verbinden
von192.168.157.0/24
, meine Verbindung wird abgelehnt.5. UFW-Protokollierung
Protokolle sind die beste Wahl, wenn etwas schief gelaufen ist.
Führen Sie den folgenden Befehl aus, um die UFW-Protokollierung zu deaktivieren:
$ sudo ufw Abmelden
Protokollierung deaktiviertUm die UFW-Protokollierung zu aktivieren, führen Sie Folgendes aus:
$ sudo ufw Anmeldung
Protokollierung aktiviertEs gibt vier Protokollierungsstufen, nämlich Niedrig , mittel , hoch , und voll . Abhängig von der gewählten Ebene werden die Protokolle unter
/var/log/ufw.log
generiert Datei. Standardmäßig ist die Protokollebene niedrig.Sie können den folgenden Befehl verwenden, um die gewünschte Stufe einzustellen:
$ sudo ufw Protokollierung [ hoch | mittel | Vollständig | Niedrig ]Um den Protokollierungsstatus und die Protokollebene zu überprüfen, führen Sie
ufw status
aus Befehl und suchen Sie nachlogging
Eintrag.$ sudo ufw Status ausführlich
Status:aktiv
Protokollierung:an (hoch)
Standard:Deny (eingehend), Allow (ausgehend), Deny (geroutet)
Neue Profile:überspringen6. Anwendungsprofile
Wenn Sie Pakete mit Ihrem Paketmanager installieren (z. B.
apt
oder pacman), wird in ufw ein Anwendungsprofil erstellt, das Regeln für dieses Paket definiert.Wenn Sie beispielsweise einen OpenSSH-Server mit
apt
installieren , dann wird das Profil für Port22
erstellt . Alle Anwendungsprofile werden unter/etc/ufw/applications.d
gespeichert Verzeichnis.Führen Sie den folgenden Befehl aus, um die Liste der Anwendungsprofile abzurufen:
$ sudo ufw App-ListeBeispielausgabe:
Verfügbare Anwendungen:CUPSOpenSSHDies ist eine Testmaschine. Ich habe nur OpenSSH installiert. Sie sehen also nur zwei Profile.
Führen Sie den folgenden Befehl aus, um detaillierte Informationen zu diesem Profil und zu den von ihm erzwungenen Richtlinien zu erhalten:
$ sudo ufw app info 'OpenSSH'Beispielausgabe:
Profil:OpenSSH
Titel:Secure Shell Server, ein rshd-Ersatz
Beschreibung:OpenSSH ist eine freie Implementierung des Secure Shell-Protokolls.
Hafen:
22/tcp7. Setzen Sie die UFW-Firewall auf die Standardrichtlinie zurück
Wenn Sie alle von Ihnen erstellten Regeln bereinigen und auf die Standardwerte zurücksetzen möchten, können Sie dies tun, indem Sie
ufw reset
ausführen Befehl.$ sudo ufw resetBeispielausgabe:
Zurücksetzen aller Regeln auf die installierten Standardwerte. Vorgang fortsetzen (y|n)? ySicherung von „user.rules“ nach „/etc/ufw/user.rules.20210705_131655“Sicherung von „before.rules“ nach „/etc/ufw/before.rules.20210705_131655“Sicherung von „after.rules“ nach „/ etc/ufw/after.rules.20210705_131655'Sicherung von 'user6.rules' nach '/etc/ufw/user6.rules.20210705_131655'Sicherung von 'before6.rules' nach '/etc/ufw/before6.rules.20210705_131655' Sichern von „after6.rules“ nach „/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 hat auch 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 ist ein grafisches Frontend für UFW verfügbar.
Gufw ist eine grafische Frontend-Anwendung zur Verwaltung der Uncomplicated Firewall (UFW) unter Linux. Gufw wurde hauptsächlich entwickelt, um Firewalls für Linux-Desktops zu installieren und zu konfigurieren.
In der folgenden Anleitung erfahren Sie, wie Sie Gufw unter Linux installieren und konfigurieren:
- So richten Sie eine Firewall mit Gufw auf einem Linux-Desktop ein
Schlussfolgerung
In diesem Handbuch haben wir mit Beispielbefehlen besprochen, 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 schlage vor, ufw in einer beliebigen virtuellen Maschine zu testen, bevor Sie es auf Ihrem Desktop oder Server implementieren.