So richten Sie eine Firewall mit UFW unter Ubuntu ein 14.04

Einführung

UFW oder Uncomplicated Firewall ist eine Schnittstelle zuiptables, die darauf abzielt, die Konfiguration einer Firewall zu vereinfachen. Währendiptables 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 Ubuntu 14.04 einrichten.

Voraussetzungen

Bevor Sie dieses Tutorial verwenden, sollten Sie ein separates Superuser-Konto (Benutzer mit Sudo-Rechten) auf Ihrem Ubuntu-Server einrichten. Sie können dies lernen, indem Sie mindestens die Schritte 1 bis 3 im Lernprogramm vonInitial Server Setup with Ubuntu 14.04ausführen.

UFW ist standardmäßig auf Ubuntu installiert. Wenn es aus irgendeinem Grund deinstalliert wurde, können Sie es mitapt-get installieren:

sudo apt-get install ufw

Verwenden von IPv6 mit UFW

Wenn auf Ihrem Ubuntu-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 Ihrem bevorzugten Editor. Wir verwenden Nano:

sudo nano /etc/default/ufw

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

/etc/default/ufw excerpt

...
IPV6=yes
...

Speichern und Beenden. Drücken SieCtrl-X, um die Datei zu beenden, dannY, um die vorgenommenen Änderungen zu speichern, undENTER, um den Dateinamen zu bestätigen.

Wenn UFW aktiviert ist, wird es so konfiguriert, dass sowohl IPv4- als auch IPv6-Firewallregeln geschrieben werden.

Dieses Tutorial wurde unter Berücksichtigung von IPv4 geschrieben, funktioniert jedoch auch für IPv6, solange Sie es aktivieren.

Überprüfen Sie den UFW-Status und die Regeln

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

sudo ufw status verbose

Standardmäßig ist UFW deaktiviert, daher sollte Folgendes angezeigt werden:

Output:Status: inactive

Wenn UFW aktiv ist, wird in der Ausgabe angezeigt, dass es aktiv ist, und es werden alle festgelegten Regeln aufgelistet. 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:

Output:Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip

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

Verwenden Sie daher den Befehl status, wenn Sie jemals überprüfen müssen, wie UFW die Firewall konfiguriert hat.

Bevor Sie UFW aktivieren, müssen Sie sicherstellen, dass Ihre Firewall so konfiguriert ist, dass Sie eine Verbindung über SSH herstellen können. Beginnen wir mit dem Festlegen der Standardrichtlinien.

Richten Sie Standardrichtlinien ein

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 Cloud-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

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

SSH-Verbindungen zulassen

Wenn wir unsere UFW-Firewall jetzt aktivieren würden, würden alle eingehenden Verbindungen verweigert. Dies bedeutet, dass wir Regeln erstellen müssen, die explizit legitime eingehende Verbindungen zulassen, z. B. 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 UFW-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 überwacht. UFW weiß, was "ssh" und eine Reihe anderer Dienstnamen bedeuten, da es als Dienst aufgeführt ist, der Port 22 in der/etc/services-Datei verwendet.

Wir können die äquivalente Regel tatsächlich schreiben, indem wirport 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 Port 2222 überwacht, können Sie mit diesem Befehl Verbindungen an diesem Port zulassen:

sudo ufw allow 2222

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

Aktivieren Sie UFW

Verwenden Sie diesen Befehl, um UFW zu aktivieren:

sudo ufw enable

Sie erhalten eine Warnung, die besagt, dass der Befehl möglicherweise vorhandene SSH-Verbindungen unterbricht. Wir haben bereits eine Firewall-Regel eingerichtet, die SSH-Verbindungen zulässt, sodass das Fortfahren in Ordnung sein sollte. Antworten Sie auf die Eingabeaufforderung mity.

Die Firewall ist jetzt aktiv. Fühlen Sie sich frei, den Befehlsudo ufw status verbose auszuführen, um die festgelegten Regeln anzuzeigen.

Andere Verbindungen zulassen

Jetzt sollten Sie alle anderen Verbindungen zulassen, auf die Ihr Server antworten muss. Welche Verbindungen Sie zulassen sollten, hängt von Ihren spezifischen Anforderungen ab. Glücklicherweise wissen Sie bereits, wie Sie Regeln schreiben, die Verbindungen basierend auf einem Dienstnamen oder Port zulassen. Dies haben wir bereits für SSH auf Port 22 durchgeführt.

Wir zeigen einige Beispiele für sehr häufige Dienste, die Sie möglicherweise zulassen müssen. Wenn Sie andere Dienste haben, für die Sie alle eingehenden Verbindungen zulassen möchten, befolgen Sie dieses Format.

[[http - Port-80]] === HTTP - Port 80

HTTP-Verbindungen, die von unverschlüsselten Webservern verwendet werden, können mit diesem Befehl zugelassen werden:

sudo ufw allow http

Wenn Sie lieber die Portnummer 80 verwenden möchten, verwenden Sie diesen Befehl:

sudo ufw allow 80

[[https - Port-443]] === HTTPS - Port 443

HTTPS-Verbindungen, die von verschlüsselten Webservern verwendet werden, können mit diesem Befehl zugelassen werden:

sudo ufw allow https

Wenn Sie lieber die Portnummer 443 verwenden möchten, verwenden Sie diesen Befehl:

sudo ufw allow 443

[[ftp - port-21]] === FTP - port 21

FTP-Verbindungen, die für unverschlüsselte Dateiübertragungen verwendet werden (die Sie wahrscheinlich sowieso nicht verwenden sollten), können mit diesem Befehl zugelassen werden:

sudo ufw allow ftp

Wenn Sie lieber die Portnummer 21 verwenden möchten, verwenden Sie diesen Befehl:

sudo ufw allow 21/tcp

Bestimmte Portbereiche zulassen

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

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

sudo ufw allow 6000:6007/tcp
sudo ufw allow 6000:6007/udp

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

Bestimmte IP-Adressen zulassen

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 von15.15.15.51, müssen Sie "von" und dann die IP-Adresse angeben:

sudo ufw allow from 15.15.15.51

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

sudo ufw allow from 15.15.15.51 to any port 22

Subnetze zulassen

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 von15.15.15.1 bis15.15.15.254 zulassen möchten, können Sie diesen Befehl verwenden:

sudo ufw allow from 15.15.15.0/24

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

sudo ufw allow from 15.15.15.0/24 to any port 22

Verbindungen zu einer bestimmten Netzwerkschnittstelle zulassen

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 Excerpt:...
2: eth0:  mtu 1500 qdisc pfifo_fast state
...
3: eth1:  mtu 1500 qdisc noop state DOWN group default
...

Die hervorgehobene Ausgabe zeigt die Namen der Netzwerkschnittstelle an. Sie werden normalerweise als "eth0" oder "eth1" bezeichnet.

Wenn Ihr Server über eine öffentliche Netzwerkschnittstelle mit dem Nameneth0 verfügt, können Sie mit diesem Befehl HTTP-Verkehr (Port 80) zulassen:

sudo ufw allow in on eth0 to any port 80

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

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

sudo ufw allow in on eth1 to any port 3306

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

Verbindungen verweigern

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, möglicherweise weil Sie wissen, dass Ihr Server von dort aus angegriffen wird. Wenn Sie Ihre Standardrichtlinie für eingehende Nachrichten inallow ändern möchten (was aus Sicherheitsgründen nicht empfohlen wird), müssen Siedeny Regeln für alle Dienste oder IP-Adressen erstellen, die Sie nicht verwenden. Ich möchte keine Verbindungen für zulassen.

Umdeny Regeln zu schreiben, können Sie die oben beschriebenen Befehle verwenden, außer dass Sie "erlauben" durch "verweigern" ersetzen müssen.

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

sudo ufw deny http

Oder wenn Sie alle Verbindungen von15.15.15.51 verweigern möchten, können Sie diesen Befehl verwenden:

sudo ufw deny from 15.15.15.51

Wenn Sie Hilfe beim Schreiben andererdeny-Regeln benötigen, sehen Sie sich einfach die vorherigenallow-Regeln an und aktualisieren Sie sie entsprechend.

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

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, um festzulegen, 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 derdelete by rule number-Methode, da es einfacher ist, die tatsächlichen zu löschenden Regeln zu schreiben, wenn Sie UFW noch nicht kennen.

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 bietet 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 2

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 beispielsweise die Regel "http zulassen" entfernen möchten, können Sie sie folgendermaßen schreiben:

sudo ufw delete allow http

Sie können die Regel auch durch "80 zulassen" anstelle des Dienstnamens angeben:

sudo ufw delete allow 80

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

So deaktivieren Sie UFW (optional)

Wenn Sie UFW aus irgendeinem Grund nicht verwenden möchten, 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önnensudo ufw enable jederzeit ausführen, wenn Sie es später aktivieren müssen.

UFW-Regeln zurücksetzen (optional)

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 sollte jetzt so konfiguriert sein, 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 gängigen UFW-Konfigurationen finden Sie in diesem Lernprogramm:UFW Essentials: Common Firewall Rules and Commands

Viel Glück!