Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Le contrôle de la posture SSH vous permet d’auditer et de configurer la posture de sécurité du serveur SSH sur Windows Server 2019, 2022 et 2025. SSH Posture Control s’intègre en toute transparence avec les services de gouvernance Azure (stratégie, configuration de l’ordinateur) afin de pouvoir :
- Garantir la conformité avec les normes sshd dans votre secteur ou votre organisation
- Réduire la surface d’attaque de la gestion à distance basée sur sshd
- Garantir une configuration sshd cohérente dans votre flotte pour la sécurité et la productivité
Pour vous aider à démontrer la conformité aux auditeurs (et à prendre des mesures si nécessaire), chaque vérification de conformité inclut des preuves via le champ Raisons indiquant la façon dont la conformité ou la non-conformité a été déterminée.
Vous pouvez personnaliser les paramètres sshd (numéro de port, groupes autorisés, etc.) ou utiliser les valeurs par défaut de la stratégie.
Documentation pour la prise en main
- démarrage rapide: pour une expérience pratique en un clic, consultez Démarrage rapide : Appliquer contrôle de posture SSH à un ordinateur de test.
- Vue d’ensemble et référence : Pour obtenir des informations conceptuelles, des informations de référence et des FAQ, poursuivez avec cet article.
Sélection du comportement d’audit uniquement par rapport au comportement audit-and-configure
Lors de l’attribution d’une stratégie de contrôle de posture SSH, vous pouvez choisir le comportement d’audit uniquement (appelé « Audit ») ou le comportement audit-and-configure (appelé « Configurer »).
| Définition de stratégie | Effet d’Azure Policy | Remarques sur ce à quoi s’attendre | |
|---|---|---|---|
| Comportement d’audit uniquement | **Audit** SSH Posture Control on Windows machines |
auditIfNotExists | La stratégie inclut des paramètres plus restrictifs par rapport à de nombreuses images système populaires. Par exemple, déni d’accès ssh racine. En conséquence, attendez-vous à voir les états non conformes signalés. |
| Comportement d’audit et de configuration | **Configure** SSH Posture Control on Windows machines |
deployIfNotExists | Comme ci-dessus, vous pouvez vous attendre à voir les états non conformes signalés initialement. Par la suite, les machines sont reconfigurées pour correspondre à la stratégie, ce qui entraîne des états conformes éventuels. |
Pour les machines existantes, les administrateurs commencent généralement par un comportement d’audit uniquement pour déterminer l’état existant et pour découvrir les dépendances telles que les comptes autorisés pour l’automatisation des systèmes. Après avoir comparé la flotte existante par défaut au contrôle de posture SSH, vous décidez quels paramètres ssh Posture Control personnaliser. Après cette analyse et la planification, vous allez ensuite passer au comportement d’audit et de configuration (avec des pratiques de déploiement sécurisées telles que des anneaux).
Pour les scénarios greenfield ou les machines de test jetables, vous pouvez choisir d’ignorer cette analyse et de passer directement au comportement d’audit et de configuration, en commençant par les valeurs par défaut fortes du contrôle de posture SSH.
Avertissement
Avant de configurer des machines, veillez à valider votre nouvelle configuration. Vous pourriez perdre accidentellement l’accès à vos machines.
Voici quelques exemples de verrouillage accidentel de vous-même :
- Les paramètres d’autorisation net appliqués (combinaison de
allowUsers,denyGroups, etc.) n’autorisent pas les connexions dont vous avez besoin - La
portconfiguration de sshd est bloquée par d’autres contrôles dans votre environnement (règles de pare-feu hôte, règles de pare-feu réseau, etc.)- Pour éviter de dépasser les limites de l’équipe d’entreprise, SSH Posture Control a configuré sshd uniquement. Il n’essaie actuellement pas de modifier les règles de pare-feu sur ordinateur, etc. pour prendre en charge le port sshd configuré. Si vous souhaitez discuter de ces scénarios avec nous, contactez-nous (voir ressources supplémentaires ci-dessous).
Étendue du contrôle de posture SSH : règles, valeurs par défaut et personnalisation
Le tableau suivant répertorie les éléments qui peuvent être audités ou configurés avec ssh Posture Control. Chacun d’eux est appelé règle.
La plupart des règles peuvent recevoir des valeurs personnalisées, via des paramètres d’attribution de stratégie pour effectuer un audit sur ou configurer et auditer. Par exemple, si la norme de votre organisation consiste à utiliser le port 1111 (au lieu de 22) pour sshd, vous devez définir le paramètre correspondant dans l’attribution de stratégie. Ces paramètres ont des identificateurs inclus dans le tableau ci-dessous. En règle générale, le nom court du paramètre est utilisé par programmation (par exemple avec az policy assignment create --params ...), tandis que le nom d’affichage de paramètre plus long est utilisé dans les flux de travail du portail Azure.
Lors de la personnalisation des valeurs, veillez à fournir des valeurs compatibles avec sshd. Par exemple, allowGroups prend une liste délimitée d’espaces de modèles de noms de groupe. Pour référence, consultez la page sshd_config man. La référence sshd_config est également utile pour comprendre d’autres comportements sshd tels que la façon dont les listes d’autorisation et de refus se croisent.
Remarque
Pour conserver la disposition du tableau, certaines valeurs de cellule ont été déplacées vers des notes de bas de page sous le tableau.
| Nom de la règle | Valeur par défaut | Nom du paramètre | Nom complet du paramètre |
|---|---|---|---|
| Vérifiez que les groupes autorisés pour SSH sont configurés | <Note de bas de page 1> | AllowGroups |
Groupes autorisés |
| Vérifiez que les utilisateurs autorisés pour l’accès SSH sont configurés | "" | AllowUsers |
Utilisateurs autorisés |
| Vérifiez que la méthode d’authentification pour SSH est configurée | quelconque | AuthenticationMethods |
Méthodes d’authentification |
| Vérifiez que les groupes refusés pour SSH sont configurés | "" | DenyGroups |
Groupes refusés |
| Vérifiez que les utilisateurs refusés pour SSH sont configurés | "" | DenyUsers |
Utilisateurs refusés |
| Vérifiez que le code d’installation utilisé lors de la journalisation des messages pour SSH est configuré | LOCAL0 | SyslogFacility |
Installation de journalisation du système |
| Vérifiez que ssh MaxAuthTries est configuré | 6 | MaxAuthTries |
Nombre maximal de tentatives d’authentification |
| Vérifiez que ssh HostKey est configuré | <Note de bas de page 2> | HostKey |
Clé hôte |
| Vérifiez que le fichier de clé autorisé pour SSH est configuré | <Note de bas de page 3> | AuthorizedKeysFile |
Fichier de clé autorisé |
| Vérifiez que GSSApiAuthentication pour SSH est configuré | faux | GSSAPIAuthentication |
Authentification GSSAPI |
| Vérifiez que la bannière d’avertissement SSH est configurée | <Note de bas de page 4> | Banner |
Bannière |
| Vérifiez que les chiffrements appropriés sont utilisés pour SSH | aes128-ctr,aes192-ctr,aes256-ctr | Ciphers |
Chiffrements autorisés |
| Vérifiez que seuls les algorithmes MAC approuvés sont utilisés | hmac-sha2-256 | MACs |
Algorithmes MAC |
| Vérifiez que ssh ClientAliveCountMax est configuré | 0 | ClientAliveCountMax |
Nombre de messages actifs du client |
| Vérifiez que le port SSH est configuré | 22 | Port |
Port |
| Vérifiez que ssh LoginGraceTime est configuré | soixante | LoginGraceTime |
Heure de grâce de connexion |
| Vérifiez que ssh ClientAliveInterval est configuré | 3600 | ClientAliveInterval |
Intervalle actif du client |
| Vérifiez que ssh PermitEmptyPasswords est configuré | faux | PermitEmptyPasswords |
Autorisation de mot de passe vide |
Notes de bas de page du tableau :
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- Remarque : cela s’affiche pour les utilisateurs finaux comme suit :
####################################################################### Authorized access only! If you are not authorized to access or use this system, disconnect now! #######################################################################
Paramètres de stratégie supplémentaires (non sshd)
Ces paramètres de stratégie supplémentaires sont disponibles pendant l’attribution de stratégie. Celles-ci influencent le comportement de l’affectation d’Azure Policy, par opposition aux paramètres sshd sur les machines.
| Nom | Descriptif | Par défaut |
|---|---|---|
| Inclure des serveurs connectés à Arc | En sélectionnant cette option, vous acceptez d’être facturé tous les mois par ordinateur connecté à Arc. | FAUX |
| Résultat | Activer ou désactiver l’exécution de cette stratégie | <Dépend de la sélection de l’audit uniquement par rapport au comportement d’audit et de configuration> |
Définitions de stratégie ? Affectations de stratégie ? Affectations d’invités ? Configuration de l’ordinateur ? Comment cela s’adapte-t-il ?
Pour commencer à utiliser SSH Posture Control, votre action principale consiste à créer une attribution de stratégie. Votre attribution de stratégie lie une définition de stratégie (par exemple, « Auditer le contrôle de posture SSH pour les machines Windows ») à une étendue (par exemple, « my_factory_3_resource_group »).
À mesure que vous utilisez le système, vous rencontrerez des types de ressources et une terminologie supplémentaires, comme indiqué ci-dessous.
| Descriptif | |
|---|---|
| Définition de stratégie | Dans le service de stratégie, les données abstraites qui décrivent un cluster de comportements d’audit et/ou de configuration disponibles. Par exemple, « Auditer le contrôle de posture SSH sur les machines Windows ». |
| Affectation de stratégie | Lie une définition de stratégie abstraite à une étendue concrète, telle qu’un groupe de ressources. L’attribution de stratégie peut inclure des paramètres et d’autres propriétés spécifiques à cette affectation. |
| Configuration d’une machine | Service et agent Azure qui gèrent l’audit et la configuration des paramètres au niveau du système d’exploitation. |
| Attribution d’invité | Ressource qui agit comme un lien tridirectionnel entre l’attribution de stratégie, l’ordinateur et le service De configuration de l’ordinateur. La stratégie crée et surveille les ressources d’affectation d’invité en fonction des besoins. Pour plus d’informations sur la terminologie « invité » et « machine », consultez Pourquoi voir les termes « Guest Configuration » et « Automanage » dans les emplacements ? |
| Machine | Une machine avec Arc ou une machine virtuelle Azure. |
À propos de la compatibilité (implémentations de serveur SSH, etc.)
Le contrôle de posture SSH est conçu pour le scénario Windows Server universel standard d’une seule instance de serveur SSH longue durée :
- dont le cycle de vie est géré par le système init tel que Service Control Manager
- dont le comportement est régi par sshd_config fichier, cohérent avec le comportement sshd OpenSSH
- dont la configuration/l’état effectif est révélé par
sshd -Tla sortie, cohérente avec le comportement sshd OpenSSH
Pour tous les systèmes d’exploitation pris en charge (voir ci-dessous), il s’agit du cas d’utilisation par défaut du serveur SSH.
En principe, un ordinateur peut avoir n’importe quel nombre d’instances de serveur SSH s’exécutant avec des durées de vie variables, en fonction de n’importe quel nombre de bases de code et en prenant leur configuration à partir de n’importe quel nombre d’emplacements (fichiers de configuration, arguments de ligne de commande, paramètres de temps de compilation, etc.). Ces cas sont hors de portée pour le contrôle de posture SSH pour l’instant. Si vous êtes intéressé par ces cas pour l’avenir, veuillez nous contacter pour discuter.
Le contrôle de posture SSH est destiné à être utilisé sur les machines Windows Server 2019, 2022 et 2025 prises en charge par Azure Policy et la configuration de l’ordinateur :
La compatibilité avec n’importe quel ordinateur spécifique au moment de l’exécution ne peut pas être garantie, car les administrateurs système d’exploitation et les générateurs d’images sont libres de supprimer les composants du système d’exploitation, de rendre les systèmes de fichiers en lecture seule, etc.
Compatibilité avec les directives Include sshd_config
Ssh Posture Control tente de prendre en charge et d’utiliser des Include directives dans sshd_config, comme suit :
- Pour les actions d’audit/lecture : reposez sur des -T sshd pour refléter la configuration net du point de vue de sshd, en tenant compte des éléments inclus.
- Pour configurer/écrire des actions :
- Lier un nouveau fichier ssh Posture Control spécifique à sshd_config (en tant qu’include). Ensuite, placez toutes les écritures dans le fichier SSH Posture Control lié. Cela améliore l’hygiène du système et la traçabilité des changements du système.
Compatibilité avec les directives sshd_config Match
Le contrôle de posture SSH est conçu pour auditer et configurer le comportement sshd principal. Il ne tente pas d’interagir avec des blocs conditionnels Match (le cas échéant) qui peuvent appliquer différentes configurations sshd à des populations spécifiques.
Compatibilité avec plusieurs valeurs de sshd_config
Ssh Posture Control ne prend pas en charge l’utilisation de plusieurs valeurs pour la règle « port », c’est-à-dire la définition de la règle « port » sur 22 et 33. Cette règle doit être configurée avec une valeur unique pour garantir une fonctionnalité et une conformité appropriées pour l’audit et la configuration des scénarios. D’autres règles telles que les utilisateurs autorisés/refus et les chiffrements peuvent avoir plusieurs valeurs, tant qu’elles sont ajoutées sur une seule ligne.
Exemple:
- Un fichier sshd_config existant comprend une ligne « port :22 » et une autre ligne « port :33 ».
- La stratégie « Audit SSH » est utilisée pour auditer une valeur de port attendue de 33.
- Résultat : l’audit peut passer ou échouer de façon imprévisible.
- Recommandation : n’utilisez pas cette fonctionnalité avec des scénarios tels que ceux-ci.
Comment interroger les résultats par programmation ?
À l’aide de requêtes Azure Resource Graph (ARG), vous pouvez intégrer des données d’affectation et d’état dans vos propres flux de travail. Ces exemples utilisent Search-AzGraph dans PowerShell pour exécuter la requête ARG, mais PowerShell n’est pas obligatoire. Vous pouvez utiliser ARG à partir de nombreux points d’entrée, notamment le portail Azure, Azure CLI, les appels REST, etc.
À l’altitude la plus élevée de résumé, vous pouvez obtenir le nombre d’ordinateurs par compartiment d’état de conformité. Par exemple:
$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 #>Pour explorer de telle sorte que vous voyiez l’état de conformité global par machine, vous pouvez utiliser les éléments suivants :
$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 #>Pour explorer les détails de définition par paramètre, vous pouvez utiliser les éléments suivants :
$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 #>
Pourquoi puis-je voir les termes « Guest Configuration » et « Automanage » sur place ?
Le service Machine Configuration a également été appelé Guest Configuration et Automanage Machine Configuration. Vous pouvez rencontrer ces noms lorsque vous interagissez avec les services et la documentation. Par exemple:
- Dans les exemples de requête Azure Resource Graph de cet article, la table de données est appelée
guestconfigurationresources. - Dans le portail Azure, une vue utile pour observer les résultats est appelée « Attributions d’invités ».
- Dans le portail Azure, lors de l’application de l’extension de machine virtuelle appropriée pour activer la configuration de l’ordinateur, le titre de l’extension est « Automanage Machine Configuration ».
Pour les besoins du contrôle de posture SSH, il n’existe aucune distinction significative entre « invité » et « machine ». Les machines avec Arc et les machines virtuelles Azure sont éligibles.
Quels sont les identificateurs des définitions de stratégie intégrées ?
Dans certains cas, comme la création d’affectations de stratégie avec Azure CLI, il peut être utile ou nécessaire de faire référence à une définition de stratégie par ID plutôt que par nom complet.
| nom d’affichage | pièce d'identité |
|---|---|
| Audit SSH Posture Control sur les machines Windows | /providers/Microsoft.Authorization/policyDefinitions/fe4e11ff-f561-4d4a-877c-256cc0b6470e |
| Configurer le contrôle de posture SSH sur les machines Windows | /providers/Microsoft.Authorization/policyDefinitions/42830b63-79aa-4ea5-85dc-6baa719d7d7c |
Ressources associées
- Pour obtenir du support technique, etc., contactez le support Technique Microsoft
- Pour fournir des commentaires, discuter des demandes de fonctionnalités, etc. contactez : linux_sec_config_mgmt@service.microsoft.com