Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für: .NET Core 2.1, .NET Core 3.1, .NET 5
In diesem Artikel wird erläutert, wie Sie eine lokale Firewall konfigurieren, um Ihren virtuellen Linux-Computer (VM) zu schützen.
Voraussetzungen
Es gibt keine Voraussetzungen, um diesen Teil des Lernprogramms abzuschließen.
Ziel dieses Teils
Sie erfahren, wie Sie Ihre Linux-VM schützen, indem Sie eine Firewall konfigurieren.
Obwohl es keine Voraussetzungen für diesen Teil gibt, würde die ideale Einrichtung den Anweisungen der vorherigen Teile folgen. Sie sollten folgendes haben:
- Nginx wird automatisch ausgeführt und überwacht Anforderungen, die an Port 80 gesendet werden
- Nginx ist als Reverseproxy konfiguriert und routing eingehende Anforderungen an eine ASP.NET Core-Anwendung, die auf Port 5000 lauscht.
- Die ASP.NET Core-Anwendung, die so konfiguriert ist, dass sie nach dem Neustart des Servers automatisch gestartet wird oder wenn der Prozess beendet oder abstürzt
Konfigurieren einer lokalen Firewall für den Zugriff von Remotecomputern
Fast alle Linux-Distributionen enthalten eine lokale Firewall, die iptables genannt wird. Dieser Anfängerleitfaden reicht für einen Schnellstart aus. Iptables ist eine einfache und dennoch leistungsstarke Firewall, die Richtlinienketten verwendet, um Datenverkehr zuzulassen oder zu blockieren.
Gemäß der Hilfeseite der Ubuntu-Community wird iptables standardmäßig auf allen offiziellen Ubuntu-Distributionen installiert und ist so konfiguriert, dass der gesamte Datenverkehr zulässig ist.
Obwohl iptables eine einfache Firewall sind, ist es nicht einfach, die persistenten Regeln zu verwalten. Glücklicherweise gibt es mehrere Firewallkonfigurationstools, die die Konfiguration von Firewallregeln in Linux erheblich vereinfachen. Laut offizieller Ubuntu Firewall-Dokumentation ist ufw
das Standard-Firewall-Konfigurationstool für Ubuntu . Dieses Tool bietet eine benutzerfreundlichere Methode als iptables zum Erstellen einer hostbasierten IPv4- oder IPv6-Firewall.
Notiz
ufw
ist standardmäßig deaktiviert. Daher müssen Sie es aktivieren, um es verwenden zu können.
Die linux-VM, die in diesem Lernprogramm verwendet wurde, ist nicht durch Firewallregel geschützt. Dies liegt daran, dass, obwohl iptables installiert und ausgeführt werden, keine definierten Regeln vorhanden sind.
Ziel ist es, nur HTTP- und SSH-Datenverkehr (Secure Shell) zuzulassen, um den virtuellen Computer von außen zu erreichen. Führen Sie die folgenden Schritte aus, um dies zu erreichen:
- Stellen Sie vor der Aktivierung
ufw
sicher, dass die Standardrichtlinienregel auf "Zulassen" festgelegt ist. Andernfalls führen Sie das Risiko aus, dass die SSH-Verbindung mit dem virtuellen Computer verloren geht. Die Standardregel ist die Regel, die verarbeitet wird, wenn keine andere Regel übereinstimmt. Durch aktivieren der Standardregel "Zulassen" wird sichergestellt, dass eingehender SSH-Datenverkehr nicht blockiert wird. An diesem Punkt gibt es überhaupt keine "Verweigern"-Regel. Daher ist der gesamte eingehende Datenverkehr zulässig. -
Wichtig
Fügen Sie explizit SSH- und HTTP-Zulassungsregeln hinzu. Beachten Sie außerdem, dass Sie, wenn Sie den SSH-Port auf einen anderen Wert als den Standardwert von 22 konfiguriert haben, diesen Port zulassen sollten. Wenn Sie beispielsweise den SSH-Port in 2222 geändert haben, sollten Sie diesen Befehl ausführen:
sudo ufw allow 2222
. - Legen Sie die Standardregel als "Verweigern"-Regel fest. Dadurch wird sichergestellt, dass die Standardregel "Verweigern" den Datenverkehr verweigert, wenn das Protokoll etwas anderes als SSH oder HTTP ist. Beispielsweise wird eingehender HTTP-Datenverkehr verweigert.
- Aktivieren Sie das
ufw
.
Die Befehle für diese Schritte sind im folgenden Screenshot aufgeführt.
Dies geschieht in jedem Schritt.
überprüft den Status des ufw, indem der Befehl ausgeführt wird
sudo ufw status verbose
. Standardmäßig ist der ufw nicht aktiviert und inaktiv.Befehl wird ausgeführt
sudo ufw default allow
. Da es keine andere Regel als die Standardregel "Zulassen" gibt, wird jeder Port auf dem virtuellen Computer als geöffnet betrachtet.-
Wichtig
Fügen Sie das SSH-Protokoll zur Liste zugelassener Elemente hinzu, indem Sie den
sudo ufw allow ssh
Befehl ausführen. Protocol.ssh ist ein bekanntes Protokoll und wird in der Datei "/etc/services " definiert. Daher kann "ssh" anstelle von "22" verwendet werden. Denken Sie daran, dass Sie, wenn Sie den SSH-Dienst so konfigurieren, dass er auf einem anderen Port als dem Standardport von 22 lauscht, explizit den anderen Port hinzufügen. Wenn Sie beispielsweise SSH für die Überwachung von Port 2222 konfigurieren, führen Sie den folgenden Befehl aus:sudo ufw allow 2222
. Zulassen des HTTP-Protokolls durch Ausführen
sudo ufw allow http
. HTTP ist ein bekanntes Protokoll, das in der Datei "/etc/services" definiert ist. Daher kann der Protokollname verwendet werden, und dersudo ufw allow http
Befehl kann ausgeführt werden. Das Laufensudo ufw allow 80
ist auch perfekt gültig.Notiz
Nachdem Sie sowohl die SSH- als auch die HTTP-Protokolle zugelassen haben, möchten Sie alle anderen Protokolle zur Liste "Verweigern" hinzufügen.
Sie können dies tun, indem Sie die Standardregel ändern, um zu verweigern, indem Sie den
sudo ufw default deny
Befehl ausführen. Nur die SSH- und HTTP-Protokolle sind zulässig. Die anderen Protokolle werden verweigert.ufw
aktivieren.
Dies ist die sudo ufw status verbose
Ausgabe, nachdem Sie dieses Verfahren abgeschlossen haben.
Testen Sie nach der Konfiguration der Firewall, ob sie funktioniert.
Testen der lokalen Firewall
Testen Sie die Firewall einfach: Erstellen Sie eine "Verweigern"-Regel für das HTTP-Protokoll, und versuchen Sie dann, von einem anderen Computer aus auf die Website zuzugreifen. Die Anforderung sollte blockiert werden.
Bevor Sie diese Regel "Verweigern" erstellen, stellen Sie sicher, dass die Anwendung in der aktuellen Konfiguration für den Browser zugänglich ist. Bearbeiten Sie dazu die Datei "C:\Windows\System32\drivers\etc\hosts " auf dem Clientcomputer, indem Sie den Hostnamen des Bugamb hinzufügen und die öffentliche IP-Adresse Ihrer Linux-VM verwenden. Der Bugamb-Hostname löst die IP-Adresse der Linux-VM auf. Sie können Ihrer Hostdatei einen beliebigen Hostnamen hinzufügen, oder Sie können versuchen, eine direkte Verbindung mit der öffentlichen IP-Adresse Ihrer Linux-VM herzustellen.
Nachdem Sie überprüft haben, ob HTTP-Anforderungen den virtuellen Computer erreichen können, versuchen Sie, eine Regel zu aktivieren, die HTTP-Datenverkehr blockiert. Dadurch wird sichergestellt, dass die Firewall funktioniert. Fügen Sie dazu eine Regel "Verweigern" für HTTP hinzu, indem Sie ausführen sudo ufw deny http
. Dadurch werden zwei "Verweigern"-Regeln für das HTTP-Protokoll (am Port 80) hinzugefügt. Eine ist für IPv4, die andere ist für IPv6.
Öffnen Sie den Browser erneut, und versuchen Sie dann, auf die ASP.NET Core-Anwendung zuzugreifen, die unter Linux ausgeführt wird.
Dieser Screenshot zeigt das erwartete Ergebnis.
Sie können einen ähnlichen Test direkt innerhalb der Linux-VM ausführen, indem Sie den wget
Befehl verwenden. Der folgende Screenshot zeigt die erforderlichen Schritte für denselben Test durch Ausführen wget
.
Dies geschieht in jedem Schritt.
Die Regel "Verweigern" für das HTTP-Protokoll wurde hinzugefügt.
Der
wget buggyamb-external
Befehl wurde ausgeführt. Wie Sie vermuten, löst der Hostname "bugamb-external" die öffentliche IP-Adresse der Linux-VM auf. Bearbeiten Sie dazu die/etc/hosts
Datei mithilfe von vi. Wie gezeigt, hat versucht,wget
eine Verbindung damit herzustellen, aber nie erfolgreich. Um den Vorgang aufzubrechen, mussten Sie STRG+C drücken.Es wurde eine "Allow"-Regel für das HTTP-Protokoll hinzugefügt.
Wenn Sie den
wget buggyamb-external
Befehl erneut ausführen, wurden unterschiedliche Ergebnisse erzielt. Dieses Mal konnte eine Verbindung hergestellt werden,wget
da das HTTP-Protokoll zulässig war. Wie gezeigt,wget
lädt die Index.html Datei in Ihr aktuelles Verzeichnis herunter.
Sie sind nun einen Schritt näher bei der Durchführung der erforderlichen Konfiguration zum Debuggen der ASP.NET Core-Anwendung. Bevor Sie zum nächsten Teil wechseln, stellen Sie sicher, dass sowohl SSH als auch HTTP in der lokalen Firewall zulässig sind.