So richten Sie eine Firewall mit UFW unter Debian 10 ein

Einführung

UFW (Uncomplicated Firewall) ist eine Schnittstelle zu "+ iptables ", die darauf abzielt, die Konfiguration einer Firewall zu vereinfachen. Während ` iptables +` ein solides und flexibles Tool ist, kann es für Anfänger schwierig sein, zu lernen, wie man es verwendet, um eine Firewall richtig zu konfigurieren. Wenn Sie mit der Sicherung Ihres Netzwerks beginnen möchten und nicht sicher sind, welches Tool Sie verwenden sollen, ist UFW möglicherweise die richtige Wahl für Sie.

Dieses Tutorial zeigt Ihnen, wie Sie eine Firewall mit UFW unter Debian 10 einrichten.

Voraussetzungen

Um diesem Tutorial zu folgen, benötigen Sie einen Debian 10-Server mit einem + sudo + -Nicht-Root-Benutzer, den Sie einrichten können, indem Sie die Schritte 1-3 unter https://www.digitalocean.com/community/tutorials/ ausführen. initial-server-setup-with-debian-10 [Erstes Server-Setup mit Debian 10-Tutorial].

Schritt 1 - UFW installieren

Debian installiert UFW nicht standardmäßig. Wenn Sie dem gesamten Initial Server Setup Tutorial gefolgt sind, haben Sie UFW installiert und aktiviert. Wenn nicht, installieren Sie es jetzt mit + apt +:

sudo apt install ufw

Wir werden UFW einrichten und in den folgenden Schritten aktivieren.

Schritt 2 - Verwenden von IPv6 mit UFW (optional)

Dieses Tutorial wurde unter Berücksichtigung von IPv4 geschrieben, funktioniert jedoch für IPv6, solange Sie es aktivieren. Wenn auf Ihrem Debian-Server IPv6 aktiviert ist, sollten Sie sicherstellen, dass UFW für die Unterstützung von IPv6 konfiguriert ist. Dadurch wird sichergestellt, dass UFW zusätzlich zu IPv4 auch Firewall-Regeln für IPv6 verwaltet. Um dies zu konfigurieren, öffne die UFW-Konfigurationsdatei "+ / etc / default / ufw " mit " nano +" oder deinem Lieblingseditor:

sudo nano /etc/default/ufw

Stellen Sie dann sicher, dass der Wert von "+ IPV6 " " yes +" ist. Es sollte so aussehen:

/ etc / default / ufw Auszug

IPV6=

Speichern und schließen Sie die Datei. Wenn UFW aktiviert ist, wird es so konfiguriert, dass sowohl IPv4- als auch IPv6-Firewallregeln geschrieben werden. Bevor Sie UFW aktivieren, sollten Sie jedoch sicherstellen, dass Ihre Firewall so konfiguriert ist, dass Sie eine Verbindung über SSH herstellen können. Beginnen wir mit dem Festlegen der Standardrichtlinien.

Schritt 3 - Einrichten von Standardrichtlinien

Wenn Sie gerade erst mit Ihrer Firewall beginnen, müssen Sie als Erstes Ihre Standardrichtlinien definieren. Diese Regeln verarbeiten Datenverkehr, der nicht explizit mit anderen Regeln übereinstimmt. Standardmäßig verweigert UFW alle eingehenden Verbindungen und lässt alle ausgehenden Verbindungen zu. Dies bedeutet, dass jeder, der versucht, Ihren Server zu erreichen, keine Verbindung herstellen kann, während jede Anwendung innerhalb des Servers die Außenwelt erreichen kann.

Setzen Sie Ihre UFW-Regeln auf die Standardeinstellungen zurück, damit Sie dieses Lernprogramm mitverfolgen können. Verwenden Sie die folgenden Befehle, um die von UFW verwendeten Standardeinstellungen festzulegen:

sudo ufw default deny incoming
sudo ufw default allow outgoing

Diese Befehle setzen die Standardeinstellungen so, dass eingehende und ausgehende Verbindungen verweigert werden. Diese Firewall-Standardeinstellungen allein können für einen Personalcomputer ausreichen, Server müssen jedoch normalerweise auf eingehende Anforderungen von externen Benutzern reagieren. Wir werden uns das als nächstes ansehen.

Schritt 4 - Zulassen von SSH-Verbindungen

Wenn wir unsere UFW-Firewall jetzt aktivieren würden, würden alle eingehenden Verbindungen verweigert. Das bedeutet, dass wir Regeln erstellen müssen, die ausdrücklich legitime eingehende Verbindungen zulassen - beispielsweise SSH- oder HTTP-Verbindungen -, wenn unser Server auf diese Art von Anforderungen antworten soll. Wenn Sie einen Cloud-Server verwenden, möchten Sie wahrscheinlich eingehende SSH-Verbindungen zulassen, damit Sie eine Verbindung zu Ihrem Server herstellen und diesen verwalten können.

Mit dem folgenden Befehl können Sie Ihren Server so konfigurieren, dass eingehende SSH-Verbindungen zugelassen werden:

sudo ufw allow ssh

Dadurch werden Firewall-Regeln erstellt, die alle Verbindungen an Port "+ 22 " zulassen. Dies ist der Port, den der SSH-Dämon standardmäßig überwacht. UFW weiß, was Port " allow ssh " bedeutet, da er als Dienst in der Datei " / etc / services +" aufgeführt ist.

Wir können die äquivalente Regel jedoch tatsächlich schreiben, indem wir den Port anstelle des Dienstnamens angeben. Dieser Befehl führt zum Beispiel zum gleichen Ergebnis wie der obige:

sudo ufw allow 22

Wenn Sie Ihren SSH-Daemon so konfiguriert haben, dass er einen anderen Port verwendet, müssen Sie den entsprechenden Port angeben. Wenn Ihr SSH-Server beispielsweise den Port "+ 2222 +" überwacht, können Sie diesen Befehl verwenden, um Verbindungen an diesem Port zuzulassen:

sudo ufw allow

Nachdem Ihre Firewall so konfiguriert ist, dass eingehende SSH-Verbindungen zugelassen werden, können Sie sie aktivieren.

Schritt 5 - Aktivieren von UFW

Verwenden Sie diesen Befehl, um UFW zu aktivieren:

sudo ufw enable

Sie erhalten eine Warnung, dass der Befehl möglicherweise vorhandene SSH-Verbindungen unterbricht. Wir haben bereits eine Firewall-Regel eingerichtet, die SSH-Verbindungen zulässt, daher sollte es in Ordnung sein, fortzufahren. Beantworten Sie die Aufforderung mit + y + und drücken Sie + ENTER.

Die Firewall ist jetzt aktiv. Führen Sie den Befehl + sudo ufw status verbose + aus, um die von Ihnen festgelegten Regeln anzuzeigen. Der Rest dieses Tutorials befasst sich ausführlicher mit der Verwendung von UFW, einschließlich des Zulassens und Verweigerns verschiedener Verbindungstypen.

Schritt 6 - Zulassen anderer Verbindungen

Zu diesem Zeitpunkt sollten Sie alle anderen Verbindungen zulassen, die Ihr Server benötigt, um ordnungsgemäß zu funktionieren. Die Verbindungen, die Sie zulassen sollten, hängen von Ihren spezifischen Anforderungen ab. Glücklicherweise wissen Sie bereits, wie Sie Regeln schreiben, die Verbindungen basierend auf einem Dienstnamen oder Port ermöglichen. Wir haben dies bereits für SSH auf Port "+ 22 +" gemacht. Sie können dies auch tun für:

  • HTTP an Port + 80 +, was unverschlüsselte Webserver verwenden. Um diese Art von Datenverkehr zuzulassen, geben Sie "+ sudo ufw allow http " oder " sudo ufw allow 80 +" ein.

  • HTTPS an Port + 443 +, den verschlüsselte Webserver verwenden. Um diese Art von Datenverkehr zuzulassen, geben Sie "+ sudo ufw allow https " oder " sudo ufw allow 443 +" ein.

Es gibt jedoch auch andere Möglichkeiten, Verbindungen zuzulassen, als einen Port oder einen bekannten Dienst anzugeben. Wir werden diese als nächstes diskutieren.

Spezifische Portbereiche

Sie können Portbereiche mit UFW angeben. Beispielsweise verwenden einige Anwendungen mehrere Ports anstelle eines einzelnen Ports.

Verwenden Sie die folgenden Befehle, um beispielsweise "+ X11 " -Verbindungen zuzulassen, die die Ports " 6000 " - " 6007 +" verwenden:

sudo ufw allow :/tcp
sudo ufw allow :/udp

Wenn Sie Portbereiche mit UFW angeben, müssen Sie das Protokoll ("+ tcp " oder " udp +") angeben, für das die Regeln gelten sollen. Wir haben dies zuvor noch nicht erwähnt, da die nicht automatische Angabe des Protokolls beide Protokolle zulässt, was in den meisten Fällen in Ordnung ist.

Spezifische IP-Adressen

Bei der Arbeit mit UFW können Sie auch IP-Adressen angeben. Wenn Sie beispielsweise Verbindungen von einer bestimmten IP-Adresse zulassen möchten, z. B. einer Arbeits- oder Heim-IP-Adresse von "+ 203.0.113.4 ", müssen Sie " from +" und anschließend die IP-Adresse angeben:

sudo ufw allow from

Sie können auch einen bestimmten Port angeben, zu dem die IP-Adresse eine Verbindung herstellen darf, indem Sie "" zu "" hinzufügen, gefolgt von der Portnummer. Wenn Sie beispielsweise zulassen möchten, dass "+ 203.0.113.4 " eine Verbindung zu Port " 22 +" (SSH) herstellt, verwenden Sie diesen Befehl:

sudo ufw allow from  to any port

Subnetze

Wenn Sie ein Subnetz von IP-Adressen zulassen möchten, können Sie dazu die CIDR-Notation verwenden, um eine Netzmaske anzugeben. Wenn Sie beispielsweise alle IP-Adressen zulassen möchten, die von "+ 203.0.113.1 " bis " 203.0.113.254 +" reichen, können Sie diesen Befehl verwenden:

sudo ufw allow from /

Ebenso können Sie auch den Zielport angeben, zu dem das Subnetz + 203.0.113.0 / 24 + eine Verbindung herstellen darf. Auch hier verwenden wir den Port "+ 22 +" (SSH) als Beispiel:

sudo ufw allow from / to any port 22

Verbindungen zu einer bestimmten Netzwerkschnittstelle

Wenn Sie eine Firewall-Regel erstellen möchten, die nur für eine bestimmte Netzwerkschnittstelle gilt, können Sie dies tun, indem Sie "+ Erlaube ein +" gefolgt vom Namen der Netzwerkschnittstelle angeben.

Möglicherweise möchten Sie Ihre Netzwerkschnittstellen nachschlagen, bevor Sie fortfahren. Verwenden Sie dazu diesen Befehl:

ip addr
Output2: : <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state
. . .
3: : <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default
. . .

Die hervorgehobene Ausgabe zeigt die Namen der Netzwerkschnittstelle an. Sie haben normalerweise den Namen "+ eth0 " oder " enp3s2 +".

Wenn Ihr Server beispielsweise über eine öffentliche Netzwerkschnittstelle mit dem Namen "+ eth0 +" verfügt, können Sie mit dem folgenden Befehl HTTP-Datenverkehr zulassen:

sudo ufw allow in on  to any port

Andernfalls kann Ihr Server HTTP-Anforderungen aus dem öffentlichen Internet empfangen.

Wenn Sie möchten, dass Ihr MySQL-Datenbankserver (Port + 3306 +) auf Verbindungen auf der privaten Netzwerkschnittstelle + eth1 + wartet, können Sie diesen Befehl verwenden:

sudo ufw allow in on  to any port

Auf diese Weise können andere Server in Ihrem privaten Netzwerk eine Verbindung zu Ihrer MySQL-Datenbank herstellen.

Schritt 7 - Ablehnen von Verbindungen

Wenn Sie die Standardrichtlinie für eingehende Verbindungen nicht geändert haben, ist UFW so konfiguriert, dass alle eingehenden Verbindungen abgelehnt werden. Im Allgemeinen vereinfacht dies das Erstellen einer sicheren Firewallrichtlinie, indem Sie Regeln erstellen müssen, die bestimmte Ports und IP-Adressen explizit zulassen.

Manchmal möchten Sie jedoch bestimmte Verbindungen basierend auf der Quell-IP-Adresse oder dem Subnetz verweigern, weil Sie möglicherweise wissen, dass Ihr Server von dort aus angegriffen wird. Wenn Sie Ihre Standardrichtlinie für eingehende Nachrichten in "Zulassen" ändern möchten (was nicht empfohlen wird), müssen Sie Regeln für Dienste oder IP-Adressen erstellen, für die Sie keine Verbindungen zulassen möchten.

Um * deny * -Regeln zu schreiben, können Sie die oben beschriebenen Befehle verwenden und * allow * durch * deny * ersetzen.

Um beispielsweise HTTP-Verbindungen zu verweigern, können Sie den folgenden Befehl verwenden:

sudo ufw deny http

Oder wenn Sie alle Verbindungen von + 203.0.113.4 + ablehnen möchten, können Sie diesen Befehl verwenden:

sudo ufw deny from

Schauen wir uns nun an, wie Sie Regeln löschen.

Schritt 8 - Regeln löschen

Es ist genauso wichtig zu wissen, wie Firewall-Regeln gelöscht werden, wie zu wissen, wie sie erstellt werden. Es gibt zwei Möglichkeiten, die zu löschenden Regeln anzugeben: anhand der Regelnummer oder anhand der Regel selbst. Dies ähnelt der Angabe der Regeln beim Erstellen. Zunächst wird die Methode * Löschen nach Regelnummer * erläutert.

Nach Regelnummer

Wenn Sie die Regelnummer zum Löschen von Firewall-Regeln verwenden, möchten Sie zunächst eine Liste Ihrer Firewall-Regeln abrufen. Der UFW-Befehl "+ status" verfügt über die Option "+ numbered", mit der Zahlen neben den einzelnen Regeln angezeigt werden:

sudo ufw status numbered
OutputStatus: active

    To                         Action      From
    --                         ------      ----
[ 1] 22                         ALLOW IN    15.15.15.0/24
[ 2] 80                         ALLOW IN    Anywhere

Wenn wir die Regel "+ 2 " löschen möchten, die HTTP-Verbindungen auf dem Port " 80 " zulässt, können wir dies im folgenden UFW-Befehl " delete +" angeben:

sudo ufw delete

Daraufhin wird eine Bestätigungsaufforderung angezeigt, die Sie mit + y / n + beantworten können. Wenn Sie "+ y " eingeben, wird die Regel " 2 +" gelöscht. Beachten Sie, dass Sie bei aktiviertem IPv6 auch die entsprechende IPv6-Regel löschen möchten.

Nach tatsächlicher Regel

Die Alternative zu Regelnummern besteht darin, die tatsächlich zu löschende Regel anzugeben. Wenn Sie zum Beispiel die "+ allow http +" - Regel entfernen möchten, können Sie sie folgendermaßen schreiben:

sudo ufw delete

Sie können die Regel auch mit + allow 80 + anstelle des Dienstnamens angeben:

sudo ufw delete

Diese Methode löscht sowohl IPv4- als auch IPv6-Regeln, sofern vorhanden.

Schritt 9 - Überprüfen des UFW-Status und der Regeln

Mit diesem Befehl können Sie jederzeit den Status von UFW überprüfen:

sudo ufw status verbose

Wenn UFW deaktiviert ist (Standardeinstellung), wird Folgendes angezeigt:

OutputStatus: inactive

Wenn UFW aktiv ist, wie es sein sollte, wenn Sie Schritt 3 befolgt haben, sagt die Ausgabe, dass es aktiv ist, und listet alle Regeln auf, die Sie festgelegt haben. Wenn die Firewall beispielsweise so eingestellt ist, dass SSH-Verbindungen (Port + 22 +) von überall möglich sind, sieht die Ausgabe möglicherweise folgendermaßen aus:

OutputStatus: active

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW IN    Anywhere

Verwenden Sie den Befehl "+ status +", um zu überprüfen, wie UFW die Firewall konfiguriert hat.

Schritt 10 - UFW deaktivieren oder zurücksetzen (optional)

Wenn Sie beschließen, UFW nicht zu verwenden, können Sie es mit folgendem Befehl deaktivieren:

sudo ufw disable

Alle Regeln, die Sie mit UFW erstellt haben, sind nicht mehr aktiv. Sie können immer + sudo ufw enable + ausführen, wenn Sie es später aktivieren müssen.

Wenn Sie bereits UFW-Regeln konfiguriert haben, sich aber für einen Neustart entscheiden, können Sie den Befehl reset verwenden:

sudo ufw reset

Dadurch wird UFW deaktiviert und alle zuvor definierten Regeln werden gelöscht. Beachten Sie, dass sich die Standardrichtlinien nicht auf die ursprünglichen Einstellungen ändern, wenn Sie sie zu irgendeinem Zeitpunkt ändern. Dies sollte Ihnen einen Neuanfang mit UFW geben.

Fazit

Ihre Firewall ist jetzt so konfiguriert, dass (mindestens) SSH-Verbindungen zugelassen werden. Stellen Sie sicher, dass Sie alle anderen eingehenden Verbindungen zulassen, die Ihr Server benötigt, und gleichzeitig unnötige Verbindungen begrenzen. Dadurch wird sichergestellt, dass Ihr Server sowohl funktionsfähig als auch sicher ist.

Weitere Informationen zu häufigeren UFW-Konfigurationen finden Sie in diesem Lernprogramm unter UFW Essentials: Common Firewall Rules and Commands. .