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
:
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:
OutputFirewall stopped and disabled on system startup
Dann aktivieren Sie sie erneut:
OutputFirewall 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:
OutputDefault incoming policy changed to 'deny'
(be sure to update your rules accordingly)
Als nächstes adressieren Sie die Regel für ausgehende Verbindungen:
OutputDefault 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:
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:
Wenn Ihre Änderungen erfolgreich waren, erhalten Sie die folgende Ausgabe:
OutputRule 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:
Wenn Sie dies versuchen, nachdem Sie bereits allow ssh
ausgeführt haben, erhalten Sie jedoch die folgende Meldung, da die Regel bereits vorhanden ist:
OutputSkipping 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:
OutputRule 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
:
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:
Sie können auch ftp
oder den Port 21
verwenden, um FTP-Verbindungen zu ermöglichen:
Für FTP-Verbindungen müssen Sie auch Verbindungen für den Port 20
erlauben:
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:
Ebenso verweigert der folgende Befehl UDP-Verbindungen zu jedem Port von 1234
bis 4321
:
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:
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:
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:
OutputRule 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:
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:
OutputStatus: 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:
OutputDeleting:
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:
OutputFirewall 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:
OutputStatus: 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:
Um UFW zu deaktivieren, führen Sie folgendes aus:
OutputFirewall 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:
OutputResetting 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.