So richten Sie eine Firewall mit UFW unter Debian 9 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 9 einrichten.

Voraussetzungen

Um diesem Tutorial zu folgen, benötigen Sie einen Debian 9-Server mit einem Benutzer ohne Rootberechtigung, den Sie in den Schritten 1 bis 3 unter https://www.digitalocean.com/community/tutorials/initial-server einrichten können -setup-with-debian-9 [Erstes Server-Setup mit Debian 9-Tutorial].

Schritt 1 - UFW installieren

Debian installiert UFW nicht standardmäßig. Wenn Sie das gesamte Initial Server Setup Tutorial durchgesehen haben, haben Sie UFW bereits 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 auch für IPv6, sofern Sie es aktivieren. Wenn auf Ihrem Debian-Server IPv6 aktiviert ist, stellen Sie sicher, dass UFW für die Unterstützung von IPv6 konfiguriert ist, damit neben IPv4 auch Firewall-Regeln für IPv6 verwaltet werden. Öffnen Sie dazu die UFW-Konfiguration mit + nano + oder Ihrem 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 jetzt 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 steuern, wie Datenverkehr behandelt wird, 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 funktioniert zum Beispiel genauso 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 wir 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 festgelegten Regeln anzuzeigen. Der Rest dieses Tutorials befasst sich ausführlicher mit der Verwendung von UFW, z. B. dem Zulassen oder Ablehnen verschiedener Arten von Verbindungen.

Schritt 6 - Zulassen anderer Verbindungen

Zu diesem Zeitpunkt sollten Sie alle anderen Verbindungen zulassen, auf die Ihr Server antworten muss. 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 auf Port 80, was von unverschlüsselten Webservern verwendet wird. Verwenden Sie dazu "+ sudo ufw allow http " oder " sudo ufw allow 80 +"

  • HTTPS auf Port 443, was von verschlüsselten Webservern verwendet wird, die "+ sudo ufw allow https " oder " sudo ufw allow 443 +" verwenden

Es gibt mehrere andere Möglichkeiten, andere Verbindungen zuzulassen, abgesehen von der Angabe eines Ports oder eines bekannten Dienstes.

Spezifische Portbereiche

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

Verwenden Sie beispielsweise die folgenden Befehle, um 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 "Zulassen 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
Output Excerpt2: : <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 über eine öffentliche Netzwerkschnittstelle mit dem Namen "+ eth0 " verfügt, können Sie mit diesem Befehl HTTP-Datenverkehr (Port " 80 +") zulassen:

sudo ufw allow in on  to any port

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

Oder wenn Ihr MySQL-Datenbankserver (Port + 3306 +) zum Beispiel auf Verbindungen auf der privaten Netzwerkschnittstelle + eth1 + warten soll, 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 den Prozess der Erstellung 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, möglicherweise weil Sie 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, anzugeben, welche Regeln gelöscht werden sollen: nach Regelnummer oder nach der tatsächlichen Regel (ähnlich wie die Regeln beim Erstellen angegeben wurden). Wir beginnen mit der Methode * Löschen nach Regelnummer *, da dies einfacher ist.

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-Statusbefehl verfügt über eine Option zum Anzeigen von Zahlen neben jeder Regel, wie hier gezeigt:

sudo ufw status numbered
Numbered Output:Status: active

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

Wenn Sie die Regel 2 löschen möchten, die HTTP-Verbindungen (Port 80) zulässt, können Sie diese in einem UFW-Löschbefehl wie folgt angeben:

sudo ufw delete

Dies würde eine Bestätigungsaufforderung anzeigen und dann Regel 2 löschen, die HTTP-Verbindungen zulässt. 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 durch "+ 80 + zulassen" 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, was standardmäßig der Fall ist, 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 festgelegt wurden. 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
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip

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 einem bestimmten Zeitpunkt ändern. Dies sollte Ihnen einen Neuanfang mit UFW geben.

Fazit

Ihre Firewall ist jetzt so konfiguriert, dass (mindestens) SSH-Verbindungen zugelassen werden. Achten Sie darauf, andere eingehende Verbindungen zuzulassen, während Sie unnötige Verbindungen einschränken, damit Ihr Server funktionsfähig und sicher ist.

Weitere Informationen zu häufigeren UFW-Konfigurationen finden Sie im Tutorial UFW Essentials: Common Firewall Rules and Commands.