Verwalten der Host-Firewall mit Azure IoT und OSConfig
Wichtig
Version 1.0.3 (veröffentlicht am 28. Juni 2022) umfasst die Unterbrechung von Änderungen an Membernamen, die sich auf vorhandene Benutzer auswirken können. Weitere Informationen finden Sie unter: Membernamen Übergang von PascalCase zu CamelCase in Version 1.0.3
Zielgruppe
Dieser Artikel soll Personen unterstützen, die Geräte mit Azure IoT bereitstellen oder verwalten . Wenn dies nicht wie Sie klingt, sollten Sie sich die Zielgruppe für die OSConfig-Dokumentation ansehen.
Firewallübersicht
Wenn Geräte OSConfig installiert haben, können Sie Azure IoT-Dienste verwenden, um mehrere grundlegende Firewallverwaltungsaufgaben auszuführen. Beispiel:
- Überprüfen, ob die Firewall aktiv ist
- Stellen Sie sicher, dass bestimmte Regeln vorhanden sind (erstellen, wenn nicht vorhanden)
- Stellen Sie sicher, dass bestimmte Regeln nicht vorhanden sind (löschen, wenn gefunden)
- Vergleichen der Regeln vieler bereitgestellter Geräte mit einem bekannten guten Gerät
- Festlegen von Standarddatenverkehrrichtlinien für eingehenden und ausgehenden Datenverkehr
Tipp
Wenn Sie hier für die Objektmodellreferenz sind, können Sie die Beispiele für Anwendungsfälle zu den Referenzinformationen überspringen.
Beispiele für Anwendungsfälle
Diese Beispiele können als Ausgangspunkte dienen, um sich für Ihre einzigartige Umgebung anzupassen.
Jedes Beispiel enthält Schritte und Bildschirmaufnahmen für die Arbeit in den Azure-Portal und zum Arbeiten in Bash mit Azure CLI.
Jedes Beispiel enthält auch Variationen für ein Gerät (z. B. ein Problembehandlungsszenario) oder für viele Geräte (z. B. eine Konfigurationsbereitstellung oder ein Berichtsszenario).
Was erwartet werden soll:
In den einzelnen Geräteanweisungen lesen und schreiben Sie gemeldete und gewünschte Eigenschaften direkt im OSConfig-Twin für ein Gerät. In den Anweisungen zur Skalierung verwenden Sie IoT Hub Konfigurationen (auch als Automatische Geräteverwaltung oder ADM bezeichnet), um gewünschte Eigenschaften an viele Zwillinge zu pushen und IoT Hub Abfragen (unabhängig oder an Konfigurationen als Metriken angefügt) zu verwenden, um die Ergebnisse zu beobachten, die von Geräten zurückkommen.
Voraussetzungen zum Testen der Beispiele für Live-Systeme
Wenn Sie diesen Artikel zur Referenz verwenden, gibt es keine Voraussetzungen. Sie können die Beispiele überprüfen, Eigenschaftennamen kopieren usw.
Wenn Sie die Beispiele für Livesysteme (empfohlen) ausprobieren möchten, führen Sie die folgenden Schritte aus:
Erstellen eines kostenlosen Azure-Kontos oder Verwenden eines vorhandenen Kontos
Verbinden sie mindestens ein osConfig-aktiviertes Gerät mit einem IoT Hub
Tipp
Informationen zum einfachen Erstellen eines IoT Hub mit angefügten (virtuellen) Geräten finden Sie unter Erstellen einer OSConfig -Umgebung (mit Azure IoT) in 5 Minuten
Können Sie entweder die Azure-Portal-Anweisung oder die Azure CLI-Anweisungen in den Beispielen befolgen:
Wenn Sie die Azure-Portal verwenden möchten
- Melden Sie sich bei Ihrem Azure-Portal an, und greifen Sie auf die Seite "Übersicht" Ihres IoT Hub mit .
-OR- Wenn Sie Azure CLI verwenden möchten
- EMPFOHLEN: Verwenden Sie Azure Cloud Shell als Bash-Umgebung, indem Sie sich bei Ihrem Azure-Portal anmelden, und starten Sie Dann Azure Cloud Shell im Bashmodus
- ALTERNATIVE: Wenn Sie ihre eigene Bash-Umgebung anstelle von Cloud Shell verwenden möchten, installieren Sie die Azure CLI und melden Sie sich an.
- Stellen Sie sicher, dass die Azure IoT-Erweiterung bereit ist, indem Sie ausführen
az extension add --name azure-iot
Beispiel A. Ist die Host-Firewall aktiv?
Die state
untere Eigenschaft properties.reported.Firewall
gibt einen hohen Hinweis darauf, ob die Host-Firewall aktiv ist. So wird beispielsweise angegeben, ob das Host-Firewallmodul aktiviert ist und mindestens eine Regel in der FILTER-Tabelle vorhanden ist. Weitere Informationen zum state
Einschließen möglicher Werte finden Sie unter: Referenzinformationen.
Wählen Sie auf der Portalseite Ihres IoT Hub Geräte in der linken Navigation aus. Wenn das Gerät zusätzlich zu OSConfig IoT Edge installiert hat, wählen Sie IoT Edge anstelle von Geräten aus.
Klicken Sie auf ein Gerät, auf dem OSConfig installiert ist.
Klicken Sie unter "Modulidentitäten " auf "osconfig".
Klicken Sie auf "Module Identity Twin", und navigieren Sie zum JSON-Objekt.
properties.reported.Firewall.state
Im folgenden Bildschirmaufnahmebeispiel können Sie sehen, dassstate: enabled
.
Beispiel B. Erstellen einer Firewallregel
In diesem Beispiel wird die desiredRules
Funktion des Firewallmoduls verwendet. Wir erstellen eine neue Regel, die ausgehenden TCP-Port 443-Datenverkehr vom Gerät zu Subnetz 10.9.9.0/24 ermöglicht.
Weitere Informationen desiredRules
zu (einschließlich Behandlung mehrerer Regeln und Regellöschung) finden Sie weiter unten in diesem Artikel unter Firewall desiredRules reference.
Verwenden von Azure Portal, im osconfig-Modul Twin des Geräts, unter
properties.desired
Hinzufügen oder Ändern einerFirewall
desiredRules
und Knoten wie folgt. Pro JSON-Standards müssen Sie möglicherweise ein Komma am Ende hinzufügen, um in andere gewünschte Eigenschaften zu integrieren, wenn vorhanden."Firewall": { "desiredRules": [ { "desiredState": "present", "action": "accept", "direction": "out", "protocol": "tcp", "destinationAddress": "10.9.9.0/24", "destinationPort": 443 } ] }
Nach ca. 30 Sekunden können Sie überprüfen, ob die Änderung erfolgreich aus dem Modul-Twin vorgenommen wird. Aktualisieren Sie die Twin-Ansicht des Moduls, und scrollen Sie dann nach dem Suchen
properties
reported
, undstate
Firewall
configurationStatus
dann .desiredRules
Beispiel C. Vergleichen des Firewallstatus-Fingerabdrucks vieler Geräte mit einem bekannten guten Gerät
Die fingerprint
Eigenschaft ermöglicht schnelle Vergleiche zur Überprüfung der Compliance im Maßstab. Sie müssen nicht alle Regeln von allen Geräten abrufen und dann eine viele zu viele Vergleichsstrategie implementieren. Sie können einfach überprüfen, ob der Fingerabdruck auf Geräten identisch ist, die miteinander übereinstimmen sollen. Sie können beispielsweise zwischen bereitgestellten Geräten und einem bekannten Referenzgerät vergleichen.
In den Einzelgerätbeispielen rufen wir einfach den Wert ab, was bedeutet, dass Sie einen Vergleich aus Band ausführen. In den Beispielen wird IoT Hub GROUP BY-Operator IoT Hub Abfrage verwendet, um Gemeinsames oder Divergenz in einer Flotte anzuzeigen.
Nicht anwendbar, siehe Azure Portal, skaliert.
Referenzinformationen
Beschreibung des Objektmodells
In diesem Abschnitt werden die Zwillingseigenschaften und entsprechende Verhaltensweisen beschrieben.
Tipp
OsConfig-Referenzdokumentation gilt für Tools mit oder ohne Digitale Twin Definition Language (DTDL) erweiterte Perspektiven des Datenmodells. Weitere Informationen finden Sie unter: Informationen zu nur gewünschten/gemeldeten Ansichten und erweiterten DTDL-Ansichten.
Firewall gemeldete/schreibgeschützte Eigenschaften (für Berichts- und Überwachungsszenarien)
Pfad:
properties.reported.Firewall
(Firewall
Komponente, schreibgeschützte Eigenschaften)Beschreibung: Der Zustand der Host-Firewall, wie vom Firewallmodul von OSConfig erkannt
Mitglieder
Name type Notizen configurationStatus Aufzählung von Zeichenfolgen Stellt den Fehler-/Erfolgszustand des Erreichens der gewünschten Konfiguration dar. Nur sinnvoll, wenn gewünschte Konfigurationseigenschaften wie z desiredRules
. B. festgelegt wurden oderdesiredDefaultPolicies
festgelegt wurden. Möglicher Wert als dieser Schreibvorgang sindsuccess
,failure
undunknown
.configurationStatusDetail Zeichenfolge Text, der von zugrunde liegenden APIs oder Tools wie iptables zurückgegeben wird. Dient zum Bereitstellen der ersten Einblicke in schlechte Eingabeparameter usw., ohne dass sie durch Diagnoseprotokolle kombiniert werden. defaultPolicies Array von Objekten (siehe Beispiel-Nutzlast) Stellt die Standardmäßige Hand der Firewall von Paketen dar, die keine bestimmte Regel erfüllen. Im Kontext von iptables wird dies den Kettenrichtlinien für die Eingabe- und Ausgabeketten der Filtertabelle zugeordnet. In anderen Firewallmodulen würde dies dem Verhalten des Firewallmoduls nach Bedarf zugeordnet. Beispielsweise verfügen einige Firewallmodule nicht über einen expliziten Richtlinienbegriff und legen inhärent Datenverkehr ab, der keine Regel erfüllt. Fingerabdruck Zeichenfolge • Undurchsichtiger Fingerabdruck für die Liste aller Firewallregeln auf dem Gerät
• Wird verwendet, um große Anzahl von Geräten mit einem bekannten guten Gerät zu vergleichen
HINWEIS: In Versionen von OSConfig vor der Version vom Oktober 2022 wurde diese Eigenschaft als "firewallFingerprint" bezeichnet.state Aufzählung von Zeichenfolgen Hoher Status der Host-Firewall. Mögliche Werte:
•unknown
•enabled
•disabled
Die Logik besteht darinenabled
, dass ein aktives Firewallmodul erkannt wurde und mindestens eine Regel in der FILTER-Tabelle enthält.
HINWEIS: In Versionen von OSConfig vor der Version vom Oktober 2022 wurde diese Information als "firewallState" (statt "Zustand") angezeigt, und die Werte waren ganze Zahlen (anstelle von Zeichenfolgen).Beispiel-Nutzlast (wie im Abschnitt "Twin
properties.reported
" dargestellt)"Firewall": { "configurationStatus": "success", "configurationStatusDetail": "", "defaultPolicies": [ { "direction": "in", "action": "accept" }, { "direction": "out", "action": "accept" } ], "fingerprint": "c30d8b8bf5327a8a325a686e0c4bbf73b1bd33a72779af88827e8ea256caddb2", "state": "enabled" }
Firewall gewünschterRules
Achtung
Wie bei jeder Firewallverwaltung sorgen Sie beim Blockieren des Datenverkehrs sehr wichtig. Sie haben die Möglichkeit, das Gerät daran zu hindern, die Verbindung mit IoT Hub oder anderen administrativen Kanälen fortzusetzen. In solchen Fällen muss der lokale Zugriff auf das Gerät möglicherweise wiederhergestellt werden.
Pfad:
properties.desired.Firewall.desiredRules
(Firewall
Komponente,desiredRules
schreibbare Eigenschaft)Beschreibung: Eine sortierte Liste der Regeldeskriptoren. Jeder Regeldeskriptor in der Liste kann die folgenden Elemente aufweisen.
Elemente jeder Regeldeskriptor
Name Typ Notizen desiredState Aufzählung von Zeichenfolgen Immer erforderlich. Mögliche Werte sind present
(bedeutet, dass eine solche Regel erstellt werden sollte, wenn eine übereinstimmende Regel noch nicht vorhanden ist), oderabsent
(bedeutet, dass eine vorhandene Regel auf dem Gerät, die diesem Deskriptor entspricht, gelöscht werden sollte, wenn sie gefunden wurde. Für Regeldeskriptoren, beidesiredState: "present"
denen auf dem Gerät bereits keine übereinstimmende Regel vorhanden ist, wird die neue Regel oben in der Liste der Regeln auf dem Gerät hinzugefügt. Für Kontext können Sie dies als analogiptables -I
zu betrachten, wie es sich im Gegensatz zuiptables -A
. Wenn mehreredesiredState: "present"
Regeldeskriptoren vorhandendesiredRules
sind, werden sie so hinzugefügt, dass die Reihenfolge beibehalten wird. Mit anderen WortendesiredRules
, die regel oben in der Regelliste auf dem Gerät steht, folgt die nächste RegeldesiredRules
in der Liste der Regeln auf dem Gerät und so weiter.action Aufzählung von Zeichenfolgen Immer erforderlich. Mögliche Werte sind accept
,drop
oderreject
.direction Aufzählung von Zeichenfolgen Immer erforderlich. Mögliche Werte sind in
oderout
.Protokoll Aufzählung von Zeichenfolgen Immer erforderlich. Mögliche Werte sind any
,udp
,tcp
odericmp
. Beachten Sie, dassany
jeder Datenverkehr (im Gegensatz zu der Bedeutung "tcp und udp" bedeutet, aber nicht andere IP-Protokolle). Dementsprechend dürfen Regeln, in denenprotocol: "any"
keine Oder- oder Nicht-Regeln enthaltensourcePort
sinddestinationPort
.sourceAddress Zeichenfolge IP-Adresse oder CIDR-Bereich. Wenn nicht angegeben, entspricht die resultierende Regel jeder Adresse sourcePort integer Relevant für Regeln, in denen protocol: tcp
oderprotocol:udp
. Darf nicht in andere Regeln einbezogen werden. Gibt die Portnummer an, wenn sie in einer relevanten Regel enthalten ist. Gibt eine Regel an, die einer Portnummer entspricht.destinationAddress Zeichenfolge IP-Adresse oder CIDR-Bereich. Wenn nicht angegeben, entspricht die resultierende Regel jeder Adresse destinationPort integer Relevant für Regeln, in denen protocol: tcp
oderprotocol:udp
. Darf nicht in andere Regeln einbezogen werden. Gibt die Portnummer an, wenn sie in einer relevanten Regel enthalten ist. Gibt eine Regel an, die einer Portnummer entspricht.
Beispiel-Nutzlast (wie im Abschnitt "Twin properties.desired
" dargestellt)
Die folgenden Regeln stellen die folgenden Administratorabsichten dar:
"Mein on-prem Admin-Subnetz ist 10.9.9.0/24, daher möchte ich Geräte, die eingehende Port 22 (SSH) von dort zulassen"
"Mein altes Admin-Subnetz war 10.24.24.0/24, sodass jedes Gerät immer noch eine Regel besitzt, die Port 22 (SSH) dort erlaubt, möchte ich eine solche Regel entfernen"
HINWEIS: Der Administrator möchte hier möglicherweise eine dritte Regel verwenden, um SSH überall zu blockieren (mit der obigen Ausnahme), aber in diesem Beispiel verwenden wir eine Standard-Drop-Richtlinie, wodurch eine solche Regel redundant ist. Siehe das
desiredDefaultPolicies
Beispiel weiter unten in diesem Dokument."Firewall": { "desiredRules": [ { "desiredState": "present", "action": "accept", "direction": "in", "protocol": "tcp", "sourceAddress": "10.9.9.0/24", "destinationPort": 22 }, { "desiredState": "absent", "action": "accept", "direction": "in", "protocol": "tcp", "sourceAddress": "10.24.24.0/24", "destinationPort": 22 } ] }
Beachten Sie, dass beim Festlegen eines administrativen Workflows properties.desired.Firewall.desiredRules
(Firewall
Komponente, schreibbare Eigenschaft aus DTDL-Perspektive) das Gerät den Empfang desselben bestätigt, desiredRules
indem eine desiredRules
Eigenschaft properties.reported.Firewall
hinzugefügt wird. Der Wert dieser Eigenschaft enthält eine Kopie der ursprünglichen desiredRules
Nutzlast zusammen mit einer Versionsnummer und einem Statuscode. IoT Hub basierten verwaltungsbasierten Workflows können dies verwenden, um festzustellen, ob der gewünschte Zustand noch das Gerät erreicht hat. Dies ist nur eine Bestätigung. Um zu ermitteln, ob das Gerät erfolgreich den gewünschten Zustand erreicht hat, finden Sie auch unter configurationStatus
und configurationStatusDetail
.
Firewall gewünschteDefaultPolicies
Achtung
Wie bei jeder Firewallverwaltung sorgen Sie beim Blockieren des Datenverkehrs sehr wichtig. Sie haben die Möglichkeit, das Gerät daran zu hindern, die Verbindung mit IoT Hub oder anderen administrativen Kanälen fortzusetzen. In solchen Fällen muss der lokale Zugriff auf das Gerät möglicherweise wiederhergestellt werden.
Standardrichtlinien erfordern besonders sorgfältige Anwendung. Auf iptables basierten Systemen gelten beispielsweise die Richtlinien für jedes Paket einzeln, ohne vorhandene Verbindungen zu berücksichtigen. Mit anderen Worten, eine eingehende Standardrichtlinie von drop
Willen (zusätzlich zum Blockieren neuer eingehender Verbindungen) blockieren Antworten von Remotesystemen. Dies kann es unmöglich machen, dass das Gerät ausgehend über Protokolle (z. B. TCP) kommunizieren kann, die bidirektionale Paketfluss erfordern. Legen Sie nicht action
auf drop
die in
Richtlinien out
fest, ohne zunächst sicherzustellen, dass bestimmte Regeln vorhanden sind, um alle erforderlichen Pakete in beiden Richtungen zu aktivieren.
Pfad:
properties.desired.Firewall.desiredDefaultPolicies
(Firewall
Komponente,desiredDefaultPolicies
schreibbare Eigenschaft)Beschreibung: Ein Array mit zwei Elementen, das das gewünschte Standardverhalten (akzeptieren oder ablegen) für eingehenden Datenverkehr und für ausgehenden Datenverkehr beschreibt.
Elemente jedes Elements
Name Typ Notizen direction Aufzählung von Zeichenfolgen Mögliche Werte sind in
oderout
action Aufzählung von Zeichenfolgen Immer erforderlich. Mögliche Werte sind accept
oderdrop
.
Beispiel-Nutzlast (wie im Abschnitt "Twin properties.desired
" dargestellt)
"Firewall": {
"desiredDefaultPolicies": [
{"direction": "in", "action": "drop"},
{"direction": "out", "action": "accept"}
]
}
Beachten Sie, dass beim Festlegen properties.desired.Firewall.desiredDefaultPolicies
eines administrativen Workflows (Firewall
Komponente, schreibbare Eigenschaft aus DTDL-Perspektive) das Gerät den Empfang desselben bestätigt, desiredDefaultPolicies
indem eine desiredDefaultPolicies
Eigenschaft properties.reported.Firewall
hinzugefügt wird. Der Wert dieser Eigenschaft enthält eine Kopie der ursprünglichen Nutzlast zusammen mit einer Versionsnummer und einem Statuscode. IoT Hub basierenden verwaltungsbasierten Workflows kann dies verwenden, um festzustellen, ob der gewünschte Zustand noch das Gerät erreicht hat. Dies ist nur eine Bestätigung der Bestätigung und Verarbeitung. Weitere Informationen zum Erfolg oder Fehler des Erreichens des gewünschten Zustands finden Sie unter configurationStatus
und configurationStatusDetail
.
Weitere Informationen und Häufig gestellte Fragen
Was ist mit dem Fall "Alles ersetzen"?
In bestimmten Fällen sollten Administratoren die absolute Kontrolle über die Netzliste der Firewallregeln des Geräts erzwingen. Stellen Sie sich eine Absicht wie "Nur Regeln X, Y und Z sollte vorhanden sein; Alle anderen Regeln (vorab auf dem Gerät oder im Laufe der Zeit durch andere Prozesse erstellt) sollten regelmäßig entfernt werden." Zu diesem Zeitpunkt stellt das OSConfig Firewall-Modul nicht direkt für diesen Anwendungsfälle bereit. Die Entfernung spezifischer Regeln kann durch desiredRules
und "desiredState": "absent"
ausgeführt werden, aber es gibt keine explizite Ersetzen-All-Funktionalität. Wenn Sie ein solches Feature hinzufügen möchten, lesen Sie die Erweiterungsdokumentation unter https://github.com/Azure/azure-osconfig.
Nächste Schritte
Eine Übersicht über OSConfig-Szenarien und -Funktionen finden Sie unter:
Spezifische praktische Beispiele finden Sie unter: