So richten Sie eine Firewall mit UFW auf einem Ubuntu- und Debian-Cloud-Server ein

Einführung

Das Einrichten einer funktionierenden Firewall ist entscheidend für die Sicherheit Ihres Cloud-Servers. Früher wurde eine Firewall über komplizierte oder schwer verständliche Dienstprogramme eingerichtet. Viele dieser Dienstprogramme (z. B. iptables) verfügen über eine Vielzahl von Funktionen, erfordern jedoch zusätzliche Anstrengungen seitens des Benutzers, um sie zu erlernen und zu verstehen.

Eine weitere Option ist UFW oder „Uncomplicated Firewall“. UFW ist eine Benutzeroberfläche für iptables, die eine benutzerfreundlichere Oberfläche als andere Firewall-Verwaltungsdienstprogramme bieten soll. UFW wird in der Linux-Community gut unterstützt und ist in der Regel standardmäßig auf vielen Distributionen installiert.

In diesem Tutorial richten Sie eine Firewall mit UFW ein, um einen Ubuntu- oder Debian-Cloud-Server abzusichern. Sie lernen auch, wie Sie UFW-Standardregeln einrichten, um Verbindungen für Ports und IP-Adressen zuzulassen oder zu verweigern, erstellte Regeln zu löschen, UFW zu deaktivieren und zu aktivieren sowie alles auf die Standardeinstellungen zurückzusetzen, wenn Sie dies bevorzugen.

Voraussetzungen

Um diesem Tutorial zu folgen, benötigen Sie einen Server, der entweder Ubuntu oder Debian ausführt. Ihr Server sollte einen nicht-Root-Benutzer mit Sudo-Berechtigungen haben. Um dies für Ubuntu einzurichten, folgen Sie unserer Anleitung zur Erstkonfiguration des Servers mit Ubuntu 20.04. Um dies für Debian einzurichten, folgen Sie unserer Anleitung zur Erstkonfiguration des Servers mit Debian 11. Beide dieser Anleitungen zur Erstkonfiguration des Servers stellen sicher, dass Sie UFW auf Ihrem Rechner installiert haben und eine sichere Umgebung haben, die Sie zum Üben beim Erstellen von Firewall-Regeln verwenden können.

Verwenden von IPv6 mit UFW

Wenn Ihr Virtueller Privater Server (VPS) für IPv6 konfiguriert ist, stellen Sie sicher, dass UFW so konfiguriert ist, dass es IPv6 unterstützt, damit es sowohl Ihre IPv4- als auch Ihre IPv6-Firewall-Regeln konfiguriert. Öffnen Sie dazu die UFW-Konfigurationsdatei in Ihrem bevorzugten Texteditor. Hier verwenden wir nano:

  1. sudo nano /etc/default/ufw

Bestätigen Sie, dass IPV6 auf ja gesetzt ist:

/etc/default/ufw
# /etc/default/ufw # # Auf ja setzen, um Regeln zur Unterstützung von IPv6 anzuwenden (nein bedeutet nur IPv6 auf Loopback # akzeptiert). Sie müssen die Firewall 'deaktivieren' und dann 'aktivieren', damit die Änderungen wirksam werden. IPV6=yes

Nachdem Sie Ihre Änderungen vorgenommen haben, speichern und verlassen Sie die Datei. Wenn Sie nano verwenden, drücken Sie STRG + X, Y und dann ENTER.

Starten Sie nun Ihre Firewall neu, indem Sie sie zunächst deaktivieren:

  1. sudo ufw disable
Output
Firewall stopped and disabled on system startup

Dann aktivieren Sie sie erneut:

  1. sudo ufw enable
Output
Firewall is active and enabled on system startup

Ihre UFW-Firewall ist nun so eingerichtet, dass sie die Firewall bei Bedarf sowohl für IPv4 als auch für IPv6 konfiguriert. Als nächstes passen Sie die Standardregeln für Verbindungen zu Ihrer Firewall an.

Einrichten von UFW-Standardeinstellungen

Sie können die Effizienz Ihrer Firewall verbessern, indem Sie Standardregeln für das Zulassen und Ablehnen von Verbindungen definieren. Die Standardeinstellung von UFW besteht darin, alle eingehenden Verbindungen abzulehnen und alle ausgehenden Verbindungen zuzulassen. Dies bedeutet, dass niemand versuchen kann, sich mit Ihrem Server zu verbinden, während jede Anwendung innerhalb des Servers extern eine Verbindung herstellen kann. Um die von UFW festgelegten Standardregeln zu aktualisieren, adressieren Sie zunächst die Regel für eingehende Verbindungen:

  1. sudo ufw default deny incoming
Output
Default incoming policy changed to 'deny' (be sure to update your rules accordingly)

Als nächstes adressieren Sie die Regel für ausgehende Verbindungen:

  1. sudo ufw default allow outgoing
Output
Default outgoing policy changed to 'allow' (be sure to update your rules accordingly)

Hinweis: Wenn Sie restriktiver sein möchten, können Sie alle ausgehenden Anfragen ablehnen. Diese Option basiert auf persönlichen Vorlieben. Wenn Sie beispielsweise einen öffentlich zugänglichen Cloud-Server haben, könnte dies helfen, jede Art von Remote-Shell-Verbindungen zu verhindern. Es macht Ihre Firewall jedoch aufwendiger zu verwalten, da Sie auch Regeln für alle ausgehenden Verbindungen festlegen müssen. Sie können dies als Standard einstellen mit dem folgenden:

  1. sudo ufw default deny outgoing

Zulassen von Verbindungen zur Firewall

Das Zulassen von Verbindungen erfordert eine Änderung der Firewall-Regeln, die Sie durch Ausführen von Befehlen im Terminal durchführen können. Wenn Sie Ihre Firewall jetzt aktivieren würden, würde sie beispielsweise alle eingehenden Verbindungen ablehnen. Wenn Sie über SSH mit Ihrem Server verbunden sind, wäre das ein Problem, weil Sie dann aus Ihrem Server ausgesperrt wären. Verhindern Sie dies, indem Sie SSH-Verbindungen zu Ihrem Server aktivieren:

  1. sudo ufw allow ssh

Wenn Ihre Änderungen erfolgreich waren, erhalten Sie die folgende Ausgabe:

Output
Rule added Rule added (v6)

UFW wird mit einigen Standards geliefert, wie dem ssh-Befehl, der im vorherigen Beispiel verwendet wurde. Alternativ können Sie eingehende Verbindungen zum Port 22/tcp zulassen, der dasselbe mit Hilfe des Transmission Control Protocol (TCP) erreicht:

  1. sudo ufw allow 22/tcp

Wenn Sie dies versuchen, nachdem Sie bereits allow ssh ausgeführt haben, erhalten Sie jedoch die folgende Meldung, da die Regel bereits vorhanden ist:

Output
Skipping adding existing rule Skipping adding existing rule (v6)

Wenn Ihr SSH-Server auf Port 2222 läuft, könnten Sie Verbindungen mit derselben Syntax zulassen, aber den Port durch 2222 ersetzen. Beachten Sie bitte, dass wenn Sie die Portnummer alleine verwenden, wirkt sich dies auch auf tcp und udp aus:

  1. sudo ufw allow 2222/tcp
Output
Rule added Rule added (v6)

Sichern von Webservern

Um einen Webserver mit File Transfer Protocol (FTP)-Zugriff abzusichern, müssen Sie Verbindungen für den Port 80/tcp erlauben.

Das Erlauben von Verbindungen für den Port 80 ist nützlich für Webserver wie Apache und Nginx, die auf HTTP-Verbindungsaufträge lauschen. Um dies zu tun, erlauben Sie Verbindungen zum Port 80/tcp:

  1. sudo ufw allow 80/tcp

UFW bietet in der Regel Profile mit den erforderlichen Regeln für den Webserverbetrieb. Falls nicht, können die Webserverprofile als „WWW“ gespeichert und als ftp oder tcp geöffnet sein, wie in den folgenden Beispielen:

  1. sudo ufw allow www

Sie können auch ftp oder den Port 21 verwenden, um FTP-Verbindungen zu ermöglichen:

  1. sudo ufw allow ftp
  1. sudo ufw allow 21/tcp

Für FTP-Verbindungen müssen Sie auch Verbindungen für den Port 20 erlauben:

  1. sudo ufw allow 20/tcp

Ihre Anpassungen hängen davon ab, welche Ports und Dienste Sie öffnen müssen, und Tests können erforderlich sein. Denken Sie daran, Ihre SSH-Verbindung ebenfalls erlaubt zu lassen.

Festlegen von Portbereichen

Sie können auch Bereichs von Ports angeben, die mit UFW erlaubt oder verweigert werden sollen. Dazu müssen Sie zuerst den Port am unteren Ende des Bereichs angeben, gefolgt von einem Doppelpunkt (:), und dann den Port am oberen Ende des Bereichs angeben. Schließlich müssen Sie angeben, auf welches Protokoll (tcp oder udp) die Regeln angewendet werden sollen.

Zum Beispiel erlaubt der folgende Befehl den TCP-Zugriff auf jeden Port von 1000 bis 2000, einschließlich:

  1. sudo ufw allow 1000:2000/tcp

Ebenso verweigert der folgende Befehl UDP-Verbindungen zu jedem Port von 1234 bis 4321:

  1. sudo ufw deny 1234:4321/udp

IP-Adressen angeben

Sie können Verbindungen von einer spezifischen IP-Adresse zulassen, wie im folgenden Beispiel. Stellen Sie sicher, dass Sie die IP-Adresse durch Ihre eigene Informationen ersetzen:

  1. sudo ufw allow from your_server_ip

Wie diese Beispiele zeigen, haben Sie viel Flexibilität, wenn es darum geht, Firewall-Regeln anzupassen, indem Sie bestimmte Ports und IP-Adressverbindungen selektiv zulassen. Schauen Sie sich unseren Leitfaden an, um mehr darüber zu erfahren, eingehende Verbindungen von einer spezifischen IP-Adresse oder Subnetz zuzulassen.

Verbindungen verweigern

Wenn Sie alle Ports Ihres Servers öffnen möchten – was nicht empfohlen wird – könnten Sie alle Verbindungen zulassen und dann die Ports verweigern, auf die Sie keinen Zugriff gewähren möchten. Im folgenden Beispiel wird erläutert, wie Sie den Zugriff auf den Port 80 verweigern:

  1. sudo ufw deny 80/tcp

Regeln löschen

Wenn Sie einige der von Ihnen verwalteten Regeln löschen möchten, verwenden Sie delete und geben Sie die Regel an, die Sie eliminieren möchten:

  1. sudo ufw delete allow 80/tcp
Output
Rule deleted Rule deleted (v6)

Wenn die Regeln lang und komplex sind, gibt es einen alternativen zweistufigen Ansatz. Zuerst generieren Sie eine nummerierte Liste der aktuellen Regeln:

  1. sudo ufw status numbered

Dann überprüfen Sie mit dieser nummerierten Liste, welche Regeln derzeit erlaubt sind, und löschen Sie die Regel, indem Sie auf ihre Nummer verweisen:

  1. sudo ufw delete number
Output
Status: active To Action From -- ------ ---- [ 1] OpenSSH ALLOW IN Anywhere [ 2] 22/tcp ALLOW IN Anywhere [ 3] 2222/tcp ALLOW IN Anywhere [ 4] 80 ALLOW IN Anywhere [ 5] 20/tcp ALLOW IN Anywhere …

Zum Beispiel, wenn Port 80 Nummer 4 auf der Liste ist, verwenden Sie die folgende Syntax. Möglicherweise werden Sie auch mit der Frage konfrontiert, ob Sie mit der Operation fortfahren möchten. Sie können mit Ja y oder Nein n entscheiden:

  1. sudo ufw delete 4
Output
Deleting: allow 80 Proceed with operation (y|n)? y Rule deleted (v6)

UFW aktivieren

Nachdem Sie alle Regeln definiert haben, die Sie auf Ihre Firewall anwenden möchten, können Sie UFW aktivieren, damit es diese durchsetzt. Wenn Sie über SSH eine Verbindung herstellen, stellen Sie sicher, dass Sie Ihren SSH-Port, üblicherweise Port 22, so einstellen, dass Verbindungen empfangen werden können. Andernfalls könnten Sie sich selbst von Ihrem Server aussperren:

  1. sudo ufw enable
Output
Firewall is active and enabled on system startup

Um Ihre Änderungen zu bestätigen, überprüfen Sie den Status, um die Liste der Regeln zu überprüfen:

  1. sudo ufw status
Output
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere 22/tcp ALLOW Anywhere 2222/tcp ALLOW Anywhere 20/tcp ALLOW Anywhere 80/tcp DENY Anywhere …

Sie können auch verbose verwenden, um eine umfassendere Ausgabe zu erhalten:

  1. sudo ufw status verbose

Um UFW zu deaktivieren, führen Sie folgendes aus:

  1. sudo ufw disable
Output
Firewall stopped and disabled on system startup

Zurücksetzen auf die Standardeinstellungen

Wenn Sie aus irgendeinem Grund die Regeln Ihres Cloud-Servers auf die Standardeinstellungen zurücksetzen müssen, können Sie dies mit dem Befehl ufw reset tun. Bitte beachten Sie, dass Sie zur Bestätigung aufgefordert werden, y oder n zu schreiben, bevor Sie alles zurücksetzen, da dies bestehende SSH-Verbindungen stören kann:

  1. sudo ufw reset
Output
Resetting all rules to installed defaults. This may disrupt existing ssh connections. Proceed with operation (y|n)? y Backing up 'user.rules' to '/etc/ufw/user.rules.20220217_190530' Backing up 'before.rules' to '/etc/ufw/before.rules.20220217_190530' Backing up 'after.rules' to '/etc/ufw/after.rules.20220217_190530' Backing up 'user6.rules' to '/etc/ufw/user6.rules.20220217_190530' Backing up 'before6.rules' to '/etc/ufw/before6.rules.20220217_190530' Backing up 'after6.rules' to '/etc/ufw/after6.rules.20220217_190530'

Das Zurücksetzen auf die Standardeinstellungen deaktiviert UFW und löscht alle zuvor definierten Regeln. Die Standardeinstellungen ändern sich jedoch nicht zu ihren ursprünglichen Einstellungen, wenn Sie sie überhaupt geändert haben. Jetzt können Sie mit UFW neu beginnen und Ihre Regeln und Verbindungen nach Ihren Wünschen anpassen.

Zusammenfassung

In diesem Tutorial haben Sie gelernt, wie Sie Ihren Cloud-Server einrichten und konfigurieren, um den Zugriff auf eine Teilmenge von Ports oder IP-Adressen zu ermöglichen oder zu beschränken. Darüber hinaus haben Sie geübt, Regeln zu löschen, die Sie nicht mehr benötigen, und bestätigt, dass diese Änderungen berücksichtigt wurden, indem Sie Ihre UFW-Firewall deaktiviert und dann wieder aktiviert haben. Schließlich haben Sie gelernt, wie Sie Ihre UFW-Firewall auf die Standardeinstellungen zurücksetzen. Um mehr darüber zu erfahren, was mit UFW möglich ist, lesen Sie unseren Leitfaden zu UFW Essentials: Common Firewall Rules and Commands.

Source:
https://www.digitalocean.com/community/tutorials/how-to-setup-a-firewall-with-ufw-on-an-ubuntu-and-debian-cloud-server