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.
Mit der SSH-Statussteuerung können Sie den Sicherheitsstatus von SSH-Servern unter Windows Server 2019, 2022 und 2025 überwachen und konfigurieren. Die SSH-Haltungskontrolle lässt sich nahtlos in Azure Governance-Dienste (Richtlinie, Computerkonfiguration) integrieren, damit Sie:
- Sicherstellen der Einhaltung von SSH-Standards in Ihrer Branche oder Organisation
- Reduzieren der Angriffsfläche der sshd-basierten Remoteverwaltung
- Sicherstellen eines konsistenten ssh-Setups in Ihrer Flotte für Sicherheit und Produktivität
Zur Veranschaulichung der Compliance gegenüber Prüfern (und zur Unterstützung bei Bedarf) enthält jede Complianceüberprüfung Nachweise über das Feld "Gründe ", in dem angegeben wird, wie Compliance oder Nichtcompliance ermittelt wurde.
Sie können die sshd-Parameter (Portnummer, zulässige Gruppen usw.) anpassen oder die Richtlinienstandardwerte verwenden.
Dokumentation für erste Schritte
- Schnellstart: Eine Klick-durch-Klick-Erfahrung finden Sie unter Schnellstart: Anwenden SSH-Haltungssteuerung auf einen Testcomputer.
- Übersicht und Referenz: Fahren Sie mit diesem Artikel fort, um konzeptionelle Informationen, Referenzen und HÄUFIG gestellte Fragen zu finden .
Auswählen des reinen Überwachungsverhaltens im Vergleich zu "Audit-and-Configure"-Verhalten
Bei der Zuweisung einer SSH-Richtlinie zur Haltungskontrolle können Sie das Verhalten "Audit" (auch als "Überwachung") oder das Verhalten "Überwachen und Konfigurieren " (auch als "Konfigurieren") festlegen.
| Richtliniendefinition | Azure-Richtlinienauswirkung | Hinweise zu den Erwartungen | |
|---|---|---|---|
| Nur-Überwachungsverhalten | **Audit** SSH Posture Control on Windows machines |
auditIfNotExists | Die Richtlinie enthält restriktivere Einstellungen im Vergleich zu vielen beliebten Systemimages. Beispiel: Denial of root ssh access. Erwarten Sie dementsprechend, dass notkonforme Zustände gemeldet werden. |
| Verhalten bei Überwachung und Konfiguration | **Configure** SSH Posture Control on Windows machines |
deployIfNotExists | Wie oben können Sie erwarten, dass notkonforme Zustände anfänglich gemeldet werden. Anschließend werden die Computer so konfiguriert, dass sie mit der Richtlinie übereinstimmen, was zu eventuellen konformen Zuständen führt. |
Bei vorhandenen Computern beginnen Administratoren in der Regel mit dem Nur-Überwachungsverhalten, um den vorhandenen Zustand zu ermitteln und Abhängigkeiten wie Konten zu ermitteln, die für die Systemautomatisierung zulässig sind. Nachdem Sie die vorhandene Flotte mit den Standardeinstellungen für die SSH-Haltungssteuerung verglichen haben, würden Sie entscheiden, welche SSH-Haltungssteuerungsparameter angepasst werden sollen. Nach dieser Analyse und Planung würden Sie dann zum Verhalten der Überwachung und Konfiguration wechseln (mit sicheren Bereitstellungspraktiken wie Ringen).
Bei Greenfield-Szenarien oder einweg-Testcomputern können Sie diese Analyse überspringen und direkt zum Überwachungs- und Konfigurationsverhalten wechseln, beginnend mit starken SSH-Haltungssteuerungsstandarden.
Vorsicht
Bevor Sie Computer konfigurieren, sollten Sie ihre neue Konfiguration sorgfältig überprüfen. Sie könnten versehentlich den Zugriff auf Ihre Computer verlieren.
Beispiele für versehentliches Sperren von sich selbst sind:
- Die angewendeten Nettoautorisierungseinstellungen (Kombination von
allowUsers,denyGroups, usw.) lassen die benötigten Anmeldungen nicht zu. - Die
portKonfiguration für sshd wird durch andere Steuerelemente in Ihrer Umgebung blockiert (Hostfirewallregeln, Netzwerkfirewallregeln usw.)- Um zu vermeiden, dass Unternehmensteamgrenzen übersprungen werden, konfigurierte SSH-Haltungssteuerung nur sshd. Es wird derzeit nicht versucht, Firewallregeln auf dem Computer zu ändern usw. zur Aufnahme des konfigurierten SSH-Ports. Wenn Sie diese Szenarien mit uns besprechen möchten, wenden Sie sich bitte an uns (siehe weitere Ressourcen unten).
Bereich der SSH-Haltungskontrolle: Regeln, Standardwerte und Anpassungen
In der folgenden Tabelle sind die Elemente aufgeführt, die mit SSH-Haltungssteuerung überwacht oder konfiguriert werden können. Jede dieser Elemente wird als Regel bezeichnet.
Die meisten Regeln können benutzerdefinierte Werte über Richtlinienzuweisungsparameter zum Überwachen oder Konfigurieren und Überwachen erhalten. Wenn der Standard in Ihrer Organisation beispielsweise port 1111 (anstelle von 22) für sshd verwendet, würden Sie den entsprechenden Parameter in der Richtlinienzuweisung festlegen. Diese Parameter haben Bezeichner, die in der folgenden Tabelle enthalten sind. In der Regel wird der kurze Parametername programmgesteuert (z. B. mit az policy assignment create --params ...) verwendet, während der längere Anzeigename des Parameters in Azure-Portalworkflows verwendet wird.
Achten Sie beim Anpassen von Werten darauf, Werte bereitzustellen, die mit sshd kompatibel sind. Nimmt beispielsweise allowGroups eine durch Leerzeichen getrennte Liste von Gruppennamenmustern an. Referenz finden Sie auf der sshd_config-Man-Seite. Der sshd_config-Verweis ist auch hilfreich, um andere sshd-Verhaltensweisen zu verstehen, z. B. wie Zulassungs - und Ablehnungslisten sich überschneiden.
Hinweis
Um das Tabellenlayout beizubehalten, wurden einige Zellwerte in Fußnoten unterhalb der Tabelle verschoben.
| Regelname | Standardwert | Parametername | Anzeigename des Parameters |
|---|---|---|---|
| Stellen Sie sicher, dass die zulässigen Gruppen für SSH konfiguriert sind. | <Fußnote 1> | AllowGroups |
Zulässige Gruppen |
| Stellen Sie sicher, dass die zulässigen Benutzer für den SSH-Zugriff konfiguriert sind. | "" | AllowUsers |
Zulässige Benutzer |
| Stellen Sie sicher, dass die Authentifizierungsmethode für SSH konfiguriert ist. | jegliche | AuthenticationMethods |
Authentifizierungsmethoden |
| Stellen Sie sicher, dass die verweigerten Gruppen für SSH konfiguriert sind. | "" | DenyGroups |
Abgelehnte Gruppen |
| Stellen Sie sicher, dass die verweigerten Benutzer für SSH konfiguriert sind. | "" | DenyUsers |
Benutzer verweigert |
| Stellen Sie sicher, dass der beim Protokollieren von Nachrichten für SSH verwendete Einrichtungscode konfiguriert ist. | LOCAL0 | SyslogFacility |
Systemprotokollierungseinrichtung |
| Stellen Sie sicher, dass die SSH MaxAuthTries konfiguriert sind. | 6 | MaxAuthTries |
Maximale Authentifizierungsversuche |
| Stellen Sie sicher, dass der SSH-HostKey konfiguriert ist. | <Fußnote 2> | HostKey |
Hostschlüssel |
| Stellen Sie sicher, dass die autorisierte Schlüsseldatei für SSH konfiguriert ist. | <Fußnote 3> | AuthorizedKeysFile |
Autorisierte Schlüsseldatei |
| Stellen Sie sicher, dass GSSApiAuthentication für SSH konfiguriert ist | Falsch | GSSAPIAuthentication |
GSSAPI-Authentifizierung |
| Stellen Sie sicher, dass das SSH-Warnbanner konfiguriert ist. | <Fußnote 4> | Banner |
Werbebanner |
| Stellen Sie sicher, dass geeignete Verschlüsselungen für SSH verwendet werden | aes128-ctr,aes192-ctr,aes256-ctr | Ciphers |
Zulässige Chiffre |
| Sicherstellen, dass nur genehmigte MAC-Algorithmen verwendet werden | hmac-sha2-256 | MACs |
MAC-Algorithmen |
| Stellen Sie sicher, dass der SSH-ClientAliveCountMax konfiguriert ist. | 0 | ClientAliveCountMax |
Anzahl der Client-Alive-Nachrichten |
| Stellen Sie sicher, dass der SSH-Port konfiguriert ist. | 22 | Port |
Hafen |
| Stellen Sie sicher, dass die SSH LoginGraceTime konfiguriert ist. | 60 | LoginGraceTime |
Anmeldefrist |
| Stellen Sie sicher, dass der SSH-ClientAliveInterval konfiguriert ist | 3600 | ClientAliveInterval |
Client-Alive-Intervall |
| Stellen Sie sicher, dass ssh PermitEmptyPasswords konfiguriert ist. | Falsch | PermitEmptyPasswords |
Berechtigung "Leeres Kennwort" |
Fußnoten zur Tabelle:
administrators "openssh users"__PROGRAMDATA__/ssh/ssh_host_ecdsa_key%programdata%/ssh/administrators_authorized_keys#######################################################################/r/n/r/nAuthorized access only!/r/n/r/nIf you are not authorized to access or use this system, disconnect now!/r/n/r/n#######################################################################/r/n- Hinweis: Dies wird endbenutzern angezeigt als:
####################################################################### Authorized access only! If you are not authorized to access or use this system, disconnect now! #######################################################################
Zusätzliche Richtlinienparameter (nicht sshd)
Diese zusätzlichen Richtlinienparameter sind während der Richtlinienzuweisung verfügbar. Diese beeinflussen das Verhalten der Azure-Richtlinienzuweisung im Gegensatz zu sshd-Einstellungen auf Computern.
| Name | BESCHREIBUNG | Standard |
|---|---|---|
| Schließen Sie verbundene Arc-Server ein | Durch Die Auswahl dieser Option erklären Sie sich damit einverstanden, monatlich pro angeschlossenem Arc-Computer belastet zu werden. | FALSCH |
| Effekt | Aktivieren oder Deaktivieren der Ausführung dieser Richtlinie | <Hängt von der Auswahl des reinen Überwachungsverhaltens im Vergleich zum Überwachen und Konfigurieren des Verhaltens ab.> |
Richtliniendefinitionen? Richtlinienzuweisungen? Gastzuweisungen? Computerkonfiguration? Wie passt das alles zusammen?
Um mit der SSH-Haltungskontrolle zu beginnen, besteht Ihre Hauptaktion darin, eine Richtlinienzuweisung zu erstellen. Ihre Richtlinienzuweisung verknüpft eine Richtliniendefinition (z. B. "Überwachung der SSH-Haltungskontrolle für Windows-Computer") mit einem Bereich (z. B. "my_factory_3_resource_group").
Während Sie das System verwenden, werden zusätzliche Ressourcentypen und Terminologie angezeigt, wie in den folgenden Artikeln zusammengefasst.
| BESCHREIBUNG | |
|---|---|
| Richtliniendefinition | Innerhalb des Richtliniendiensts beschreiben die abstrakten Daten einen Cluster verfügbarer Überwachungs- und/oder Konfigurationsverhaltensweisen. Beispiel: "Überwachen der SSH-Haltungskontrolle auf Windows-Computern". |
| Richtlinienzuweisung | Verknüpft eine abstrakte Richtliniendefinition mit einem konkreten Bereich, z. B. einer Ressourcengruppe. Die Richtlinienzuweisung kann Parameter und andere Eigenschaften enthalten, die für diese Zuordnung spezifisch sind. |
| Computerkonfiguration | Der Azure-Dienst und die Agentrie, die die Überwachung und Einstellungskonfiguration auf Betriebssystemebene verarbeiten. |
| Gastzuweisung | Ressource, die als dreidirektionale Verbindung zwischen der Richtlinienzuweisung, dem Computer und dem Computerkonfigurationsdienst fungiert. Richtlinien erstellt und überwacht ressourcen für Gastzuweisungen nach Bedarf. Weitere Informationen zur Terminologie "Gast" und "Computer" finden Sie unter "Warum sehe ich die Begriffe "Gastkonfiguration" und "Automanage" an Orten? |
| Maschine | Ein arcfähiger Computer oder eine Azure-VM. |
Informationen zur Kompatibilität (SSH-Serverimplementierungen usw.)
Die SSH-Haltungssteuerung ist für das allgemeine Allgemeine Windows Server-Szenario einer einzelnen lang ausgeführten SSH-Serverinstanz konzipiert:
- deren Lebenszyklus vom init-System verwaltet wird, z. B. Service Control Manager
- dessen Verhalten durch sshd_config Datei gesteuert wird, die mit dem Ssh-Verhalten von OpenSSH konsistent ist
- deren effektive Konfiguration/Status durch
sshd -TAusgabe angezeigt wird, die mit dem Ssh-Verhalten von OpenSSH konsistent ist
Für alle unterstützten OSes (siehe unten) ist dies der Standardanwendungsfall für SSH-Server.
Grundsätzlich kann ein Computer eine beliebige Anzahl von SSH-Serverinstanzen mit unterschiedlichen Lebensdauern ausführen, basierend auf einer beliebigen Anzahl von Codebases und deren Konfiguration von einer beliebigen Anzahl von Stellen (Konfigurationsdateien, Befehlszeilenargumente, Kompilierungszeitparameter usw.). Solche Fälle liegen derzeit außerhalb des Umfangs der SSH-Haltungskontrolle. Wenn Sie an solchen Fällen für die Zukunft interessiert sind, wenden Sie sich bitte an uns , um uns zu besprechen.
Die SSH-Statussteuerung ist für die Verwendung auf Windows Server 2019-, 2022- und 2025-Computern vorgesehen, die von Azure Policy und Computerkonfiguration unterstützt werden.
Die Kompatibilität mit einem bestimmten Computer zur Laufzeit kann nicht garantiert werden, da sysadmins und Image Builder frei sind, Komponenten aus dem Betriebssystem zu entfernen, Dateisysteme schreibgeschützt usw. zu machen.
Kompatibilität mit sshd_config Include-Direktiven
SSH-Haltungskontrolle versucht, Direktiven in sshd_config aufzunehmen und zu nutzen Include , wie folgt:
- Für Überwachungs-/Leseaktionen: Verlassen Sie sich auf sshd -T, um die Net-Konfiguration aus der Perspektive von sshd widerzuspiegeln – unter Berücksichtigung aller Includes.
- Für Konfigurieren/Schreiben von Aktionen:
- Verknüpfen Sie eine neue SSH-Haltungssteuerungs-spezifische Datei mit sshd_config (als Include). Platzieren Sie anschließend alle Schreibvorgänge in der verknüpften SSH-Haltungssteuerungsdatei. Dies verbessert die Systemhygiene und Rückverfolgbarkeit von Systemänderungen.
Kompatibilität mit sshd_config Übereinstimmungsdirektiven
DIE SSH-Haltungskontrolle wurde entwickelt, um das kerne sshd-Verhalten zu überwachen und zu konfigurieren. Es wird nicht versucht, mit bedingten Match Blöcken (falls vorhanden) zu interagieren, die unterschiedliche sshd-Konfigurationen auf bestimmte Populationen anwenden können.
Kompatibilität mit mehreren sshd_config Werten
Das SSH-Haltungssteuerelement unterstützt nicht die Verwendung mehrerer Werte für die Regel "Port", d. h. das Festlegen der Regel "Port" auf 22 und 33. Diese Regel sollte mit einem einzelnen Wert konfiguriert werden, um die ordnungsgemäße Funktionalität und Compliance für Überwachungs- und Konfigurationsszenarien sicherzustellen. Andere Regeln, z. B. Zulassen/Verweigern von Benutzern und Chiffre, können mehrere Werte aufweisen, solange sie in einer einzelnen Zeile hinzugefügt werden.
Beispiel:
- Eine vorhandene sshd_config Datei enthält eine Zeile "port:22" und eine andere Zeile "port:33".
- Die Richtlinie "SSH überwachen" wird verwendet, um einen erwarteten Portwert von 33 zu überwachen.
- Ergebnis: Die Überwachung kann unvorhersehbar bestehen oder fehlschlagen.
- Empfehlung: Verwenden Sie dieses Feature nicht mit Szenarien wie diesen.
Wie kann ich die Ergebnisse programmgesteuert abfragen?
Mit Azure Resource Graph (ARG)-Abfragen können Sie Zuordnungs- und Statusdaten in Ihre eigenen Workflows integrieren. In diesen Beispielen wird Search-AzGraph in PowerShell die ARG-Abfrage ausgeführt, aber PowerShell ist nicht erforderlich. Sie können ARG von vielen Einstiegspunkten wie dem Azure-Portal, der Azure CLI, REST-Aufrufen usw. verwenden.
Auf der höchsten Höhe der Zusammenfassung können Sie die Anzahl der Computer pro Compliancestatus-Bucket abrufen. Beispiel:
$machineCountsQuery = @' // SSH machine counts by compliance status guestconfigurationresources | where name contains "SecureShell" | extend complianceStatus = tostring(properties.complianceStatus) | summarize machineCount = count() by complianceStatus '@ Search-AzGraph -Query $machineCountsQuery <# Sample output from an environment with two machines: complianceStatus machineCount ---------------- ------------ Pending 1 Compliant 1 #>Um einen Drilldown so auszuführen, dass der allgemeine Compliancestatus nach Computer angezeigt wird, können Sie Folgendes verwenden:
$machinePerRowQuery = @' // SSH machine level compliance guestconfigurationresources | where name contains "SecureShell" | project machine = split(properties.targetResourceId,'/')[-1], complianceStatus = properties.complianceStatus, lastComplianceStatusChecked = properties.lastComplianceStatusChecked '@ Search-AzGraph -Query $machinePerRowQuery <# Sample output: machine complianceStatus lastComplianceStatusChecked ------- ---------------- --------------------------- sshdemovm01 Compliant 2/15/2024 11:07:21 PM sshdemovm02 Pending 1/1/0001 12:00:00 AM #>Zum Ausführen eines Drilldowns zu Einstellungsdetails können Sie Folgendes verwenden:
$settingPerRowQuery = @' // SSH rule level detail GuestConfigurationResources | where name contains "SecureShell" | project report = properties.latestAssignmentReport, machine = split(properties.targetResourceId,'/')[-1], lastComplianceStatusChecked=properties.lastComplianceStatusChecked | mv-expand report.resources | project machine, rule = report_resources.resourceId, ruleComplianceStatus = report_resources.complianceStatus, ruleComplianceReason = report_resources.reasons[0].phrase, lastComplianceStatusChecked '@ Search-AzGraph $settingPerRowQuery <# Sample output: machine rule ruleComplianceStatus ruleComplianceReason ------- --------------- ------ ------ sshdemovm01 Ensure that the allowed groups for SSH are configured true ["administrators","openssh users"] contains the expected values: ["administrators","openssh users"] sshdemovm01 Ensure that appropriate ciphers are used for SSH true ["aes128-ctr","aes192-ctr","aes256-ctr"] contains the expected values: ["aes128-ctr","aes192-ctr","aes256-ctr"] sshdemovm01 Ensure that the authorized key file for SSH is configured true "%programdata%/ssh/administrators_authorized_keys" is equal to "%programdata%/ssh/administrators_authorized_keys" sshdemovm01 Ensure that the SSH ClientAliveInterval is configured true 3600 is equal to 3600 sshdemovm01 Ensure that the SSH PermitEmptyPasswords is configured true false is equal to false sshdemovm01 Ensure that the SSH port is configured true 22 is equal to 22 sshdemovm01 Ensure that the SSH MaxAuthTries is configured true 6 is equal to 6 sshdemovm01 Ensure that only approved MAC algorithms are used true ["hmac-sha2-256"] contains the expected values: ["hmac-sha2-256"] sshdemovm01 Ensure that the SSH HostKey is configured true "__PROGRAMDATA__/ssh/ssh_host_ecdsa_key" is equal to "__PROGRAMDATA__/ssh/ssh_host_ecdsa_key" sshdemovm01 Ensure that the SSH LoginGraceTime is configured true 60 is equal to 60 #>
Warum sehe ich die Begriffe "Gastkonfiguration" und "Automanage" an Orten?
Der Computerkonfigurationsdienst wurde auch als Gastkonfiguration und als Automatische Computerkonfiguration bezeichnet. Sie können bei der Interaktion mit Diensten und Dokumentationen auf diese Namen stoßen. Beispiel:
- In den Azure Resource Graph-Abfragebeispielen in diesem Artikel wird die Datentabelle aufgerufen
guestconfigurationresources. - Im Azure-Portal wird eine nützliche Ansicht zum Beobachten von Ergebnissen als "Gastzuweisungen" bezeichnet.
- Beim Anwenden der relevanten VM-Erweiterung zum Aktivieren der Computerkonfiguration im Azure-Portal lautet der Erweiterungstitel "Automanage Machine Configuration".
Für die Zwecke der SSH-Haltungskontrolle gibt es keinen sinnvollen Unterschied zwischen "Gast" und "Computer". Arc-fähige Computer und Azure-VMs sind berechtigt.
Was sind die Bezeichner für die integrierten Richtliniendefinitionen?
In einigen Fällen, z. B. das Erstellen von Richtlinienzuweisungen mit Azure CLI, kann es sinnvoll oder erforderlich sein, auf eine Richtliniendefinition anhand der ID anstatt des Anzeigenamens zu verweisen.
| Anzeigename | id |
|---|---|
| Überwachen der SSH-Statuskontrolle auf Windows-Computern | /providers/Microsoft.Authorization/policyDefinitions/fe4e11ff-f561-4d4a-877c-256cc0b6470e |
| Konfigurieren der SSH-Statussteuerung auf Windows-Computern | /providers/Microsoft.Authorization/policyDefinitions/42830b63-79aa-4ea5-85dc-6baa719d7d7c |
Verwandte Ressourcen
- Wenden Sie sich an den Microsoft-Support, um Support bei Problemen usw. zu finden.
- Um Feedback zu geben, besprechen Sie Featureanfragen usw. kontakt: linux_sec_config_mgmt@service.microsoft.com