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-Haltungskontrolle können Sie den SICHERHEITSstatus von SSH-Servern auf unterstützten Linux-Distros wie Ubuntu, Red Hat, Azure Linux und mehr überwachen und konfigurieren. Die SSH-Haltungskontrolle lässt sich nahtlos in Azure Governance-Dienste (Richtlinie, Computerkonfiguration) integrieren, damit Sie:
- Sicherstellen der Compliance- mit sshd-Standards in Ihrer Branche oder Organisation
- Reduzieren der Angriffsfläche der sshd-basierten Remoteverwaltung
- Sicherstellen einer konsistenten ssh--Einrichtung in Ihrer Flotte für Sicherheit und Produktivität
Zur Veranschaulichung der Compliance gegenüber Prüfern (und um bei Bedarf Maßnahmen zu ergreifen) 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, die an die Azure-Sicherheitsbasislinie für Linux ausgerichtet sind.
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
Beim Zuweisen einer SSH-Haltungssteuerungsrichtlinie können Sie Nur-Überwachungs- (auch als "Überwachung") bezeichnet, oder verhalten (auch als "Konfigurieren") konfiguriert werden.
| Richtliniendefinition | Azure-Richtlinieneffekt | Hinweise zu den Erwartungen | |
|---|---|---|---|
| Nur-Überwachung-Verhalten | **Audit** SSH Posture Control on Linux machines |
auditIfNotExists | Die Richtlinie enthält restriktivere Einstellungen im Vergleich zu vielen beliebten Systemimages. Beispiel: Denial of root ssh access. Erwarten Sie daher, dass nicht konformen Status gemeldet werden. |
| Verhalten überwachen und konfigurieren | **Configure** SSH Posture Control on Linux machines |
deployIfNotExists | Wie oben beschrieben können Sie davon ausgehen, dass nicht konformen Status anfänglich gemeldet werden. Anschließend werden die Computer so konfiguriert, dass sie mit der Richtlinie übereinstimmen, was zu einem späteren Konformen Status 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 aus
allowUsers,denyGroups,permitRootLoginusw.) lassen die benötigten Anmeldungen nicht zu. - Die
port, die Sie für sshd konfigurieren, wird durch andere Steuerelemente in Ihrer Umgebung blockiert (SELinux-Richtlinien, Hostfirewallregeln, Netzwerkfirewallregeln usw.)- Beachten Sie, dass viele Red Hat-Familien-Distros standardmäßig SELinux-Richtlinien haben, die die Verwendung von ssh-Ports außer 22 blockieren.
- Um zu vermeiden, dass Unternehmensteamgrenzen übersprungen werden, konfigurierte SSH-Haltungssteuerung nur sshd. Es wird derzeit nicht versucht, SELinux-Richtlinien, Firewallregeln usw. auf dem Computer zu ändern, um den konfigurierten sshd-Port zu berücksichtigen. 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 Regeln wird als Regelbezeichnet.
Jede Regel hat einen Standardkonfigurationswert, der an die Azure-Sicherheitsbasislinie für Linux ausgerichtet ist.
Die meisten Regeln können benutzerdefinierte Werte erhalten, über richtlinienzuweisungs-Parameter zum Überwachen oder Konfigurieren und Überwachen. 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. Beispielsweise verwendet allowGroups eine durch Leerzeichen getrennte Liste von Gruppennamenmustern. Referenz finden Sie auf der sshd_config-Man-Seite. Der sshd_config-Verweis ist auch nützlich, um andere sshd-Verhaltensweisen zu verstehen, z. B. wie zulassen, und verweigern, Listen sich überschneiden.
Anmerkung
Um das Tabellenlayout beizubehalten, wurden einige Zellwerte in Fußnoten unterhalb der Tabelle verschoben.
| Regelname | Standardwert | Parametername | Anzeigename des Parameters |
|---|---|---|---|
| Sicherstellen, dass Berechtigungen für /etc/ssh/sshd_config konfiguriert sind | 600 | <Fußnote 1> | Zugriffsberechtigungen für sshd_config |
| Sicherstellen, dass IgnoreRhosts festgelegt ist | ja | ignoreHosts |
Rhosts und Shosts ignorieren |
| Sicherstellen, dass LogLevel festgelegt ist | INFO | logLevel |
Ausführlichkeitsebene des Protokolls |
| Stellen Sie sicher, dass MaxAuthTries festgelegt ist. | 6 | maxAuthTries |
Maximale Anzahl von Authentifizierungsversuchen |
| Stellen Sie sicher, dass zulässige Benutzer für den SSH-Zugriff konfiguriert sind. | @ <Fußnote 5> | allowUsers |
Zugelassene Benutzer für SSH |
| Sicherstellen, dass verweigerte Benutzer für den SSH-Zugriff konfiguriert sind | wurzel | denyUsers |
Abgelehnte Benutzer für SSH |
| Sicherstellen, dass zulässige Gruppen für den SSH-Zugriff konfiguriert sind | * | allowGroups |
Zulässige Gruppen für SSH |
| Sicherstellen, dass verweigerte Gruppen für den SSH-Zugriff konfiguriert sind | wurzel | denyGroups |
Abgelehnte Gruppen für SSH |
| Sicherstellen, dass hostbasedAuthentication festgelegt ist | Nein | hostBasedAuthentication |
Hostbasierte Authentifizierung |
| Stellen Sie sicher, dass PermitRootLogin festgelegt ist. | Nein | permitRootLogin |
Gibt an, ob sich stamm mit ssh anmelden kann |
| Stellen Sie sicher, dass PermitEmptyPasswords festgelegt ist | Nein | permitEmptyPasswords |
Gibt an, ob der Server die Anmeldung bei Konten mit leeren Kennwortzeichenfolgen zulässt. |
| Sicherstellen, dass ClientAliveCountMax festgelegt ist | 0 | clientAliveCountMax |
Die Anzahl der Client-Alive-Nachrichten, die ohne ssh-Empfang von Nachrichten vom Client gesendet werden können |
| Sicherstellen, dass ClientAliveInterval festgelegt ist | 3600 | clientAliveInterval |
Timeoutintervall in Sekunden, nachdem keine Daten vom Client empfangen wurden, sendet sshd eine Nachricht, um eine Antwort anzufordern. |
| Sicherstellen, dass MACs konfiguriert sind | <Fußnote 2> | <Fußnote 3> | Die Liste der verfügbaren Nachrichtenauthentifizierungscodealgorithmen (MAC) |
| Sicherstellen, dass ein Banner konfiguriert ist | <Fußnote 4> | banner |
Der Inhalt der Bannerdatei, die an den Remotebenutzer gesendet wird, bevor die Authentifizierung zulässig ist |
| Sicherstellen, dass PermitUserEnvironment festgelegt ist | Nein | permitUserEnvironment |
Gibt an, ob ~/.ssh/environment und umgebung= Optionen in ~/.ssh/authorized_keys von sshd verarbeitet werden |
| Stellen Sie sicher, dass Verschlüsselungen konfiguriert sind | aes128-ctr,aes192-ctr,aes256-ctr | ciphers |
Die Liste der zulässigen Chiffre |
| Stellen Sie sicher, dass der SSH-Port konfiguriert ist. | 22 | port |
Der SSH-Port |
| Stellen Sie sicher, dass das Best Practice-Protokoll verwendet wird. | 2 | <kein Parameter> | <kein Parameter> |
Tabellennoten:
accessPermissionsForSshdConfigmessageAuthenticationCodeAlgorithmshmac-sha2-256,hmac-sha2-256-etm@openssh.com,hmac-sha2-512,hmac-sha2-512-etm@openssh.com#######################################################################\n\nAuthorized access only!\n\nIf you are not authorized to access or use this system, disconnect now!\n\n#######################################################################\n- Hinweis: Dies wird endbenutzern angezeigt als:
####################################################################### Authorized access only! If you are not authorized to access or use this system, disconnect now! #######################################################################In
allowUsersstellt der Standardwert "@" alle Konten auf dem Computer dar.
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 | Vorgabe |
|---|---|---|
| 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 Auswahl des reinen Überwachungsverhaltens im Vergleich zum Überwachen und Konfigurieren des Verhaltens> |
Richtliniendefinitionen? Richtlinienzuweisungen? Gastzuweisungen? Computerkonfiguration? Wie passt das alles zusammen?
Um mit der SSH-Haltungskontrolle zu beginnen, besteht Ihre Hauptaktion darin, eine Richtlinienzuweisungzu erstellen. Ihre Richtlinienzuweisung verknüpft eine Richtliniendefinition (z. B. "Überwachung der SSH-Haltungskontrolle für Linux-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 Linux-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? |
| Computer | Ein arcfähiger Computer oder eine Azure-VM. |
Informationen zur Kompatibilität (Einführungen, SSH-Serverimplementierungen usw.)
DIE SSH-Haltungskontrolle ist für das allgemeine Linux-Szenario eines einzelnen long-running SSH-Serverinstanz konzipiert:
- deren Lebenszyklus vom Init-System-Sush als systemd verwaltet wird
- dessen Verhalten von sshd_config Datei-, konsistent mit dem Verhalten von OpenSSH sshd
- deren effektive Konfiguration/Status durch
sshd -TAusgabe angezeigt wird, die mit dem Ssh-Verhalten von OpenSSH konsistent ist
Für alle unterstützten Distros (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, kontaktieren Sie uns bitte zu besprechen.
Die SSH-Haltungssteuerung ist für die Verwendung in diesen Linux-Distributionen vorgesehen, die von der Azure-Richtlinie und -Computerkonfiguration unterstützt werden– mit Ausnahme derjenigen, die zum Zeitpunkt der Entwicklung erweitert wurden. Insbesondere gelten die folgenden Bereiche ab 2024-06-05:
- AlmaLinux 9
- Amazon Linux 2
- Ubuntu Server 20.04
- Ubuntu Server 22.04
- Debian 10
- Debian 11
- Debian 12
- Azure Linux (CBL Mariner) 2
- Oracle Linux 7
- Oracle Linux 8
- CentOS 7.3
- CentOS 8
- RHEL 7.4
- RHEL 8
- RHEL 9
- Rocky Linux 9
- SLES 15
Soweit möglich, wird die SSH-Haltungskontrolle mit spezifischen weitverwendeten Systemkompositionen der obigen Distros getestet. Beispiel: Bildkompositionen des Betriebssystems, die von Distro-Betreuern im Azure-Katalog veröffentlicht wurden. Die Kompatibilität mit einem bestimmten Computer zur Laufzeit kann nicht garantiert werden, da sysadmins und Image Builders frei sind, Komponenten aus dem Betriebssystem zu entfernen, Dateisysteme schreibgeschützt zu machen, Agentaktionen mit SELinux zu blockieren usw.
Kompatibilität mit sshd_config Include-Direktiven
SSH-Haltungskontrolle versucht, Include Direktiven in sshd_config wie folgt aufzunehmen und zu nutzen:
- 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:
- Wenn die sshd-Implementierung auf dem Computer Includes unterstützt, 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.
- Wenn die sshd-Implementierung auf dem Computer keine Include-Direktiven unterstützt, schreiben Sie alle Konfigurationsänderungen direkt in sshd_config.
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.
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 verwendet, um die ARG-Abfrage auszuführen, 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. Zum Beispiel:
$machineCountsQuery = @' // SSH machine counts by compliance status guestconfigurationresources | where name contains "LinuxSshServerSecurityBaseline" | 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 "LinuxSshServerSecurityBaseline" | 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 "LinuxSshServerSecurityBaseline" | 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 permissions on /etc/ssh/sshd_config are configured true Access to '/etc/ssh/sshd_config' matches required ... sshdemovm01 Ensure SSH is configured to meet best practices (protocol 2) true 'Protocol 2' is found uncommented in /etc/ssh/sshd_config sshdemovm01 Ensure SSH is configured to ignore rhosts true The sshd service reports that 'ignorerhosts' is set to 'yes' sshdemovm01 Ensure SSH LogLevel is set to INFO true The sshd service reports that 'loglevel' is set to 'INFO' sshdemovm01 Ensure SSH MaxAuthTries is configured true The sshd service reports that 'maxauthtries' is set to '6' sshdemovm01 Ensure allowed users for SSH access are configured true The sshd service reports that 'allowusers' is set to '*@*' sshdemovm01 Ensure denied users for SSH are configured true The sshd service reports that 'denyusers' is set to 'root' sshdemovm01 Ensure allowed groups for SSH are configured true The sshd service reports that 'allowgroups' is set to '*' sshdemovm01 Ensure denied groups for SSH are configured true The sshd service reports that 'denygroups' is set to 'root' sshdemovm01 Ensure SSH host-based authenticationis disabled true The sshd service reports that 'hostbasedauthentication' is ... #>
Warum sehe ich die Begriffe "Gastkonfiguration" und "Automanage" an Orten?
Der Computerkonfigurationsdienst wurde auch als Gastkonfiguration und als Automanage Machine Configurationbezeichnet. Sie können bei der Interaktion mit Diensten und Dokumentationen auf diese Namen stoßen. Zum Beispiel:
- In den Azure Resource Graph-Abfragebeispielen in diesem Artikel wird die Datentabelle
guestconfigurationresourcesgenannt. - 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.
| displayName | id |
|---|---|
| Überwachen der SSH-Haltungskontrolle auf Linux-Computern | /providers/Microsoft.Authorization/policyDefinitions/a8f3e6a6-dcd2-434c-b0f7-6f309ce913b4 |
| Konfigurieren der SSH-Haltungskontrolle auf Linux-Computern | /providers/Microsoft.Authorization/policyDefinitions/e22a2f03-0534-4d10-8ea0-aa25a6113233 |
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