Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
El control de posición ssh permite auditar y configurar la posición de seguridad del servidor SSH en Windows Server 2025. Ssh Posture Control se integra sin problemas con los servicios de gobernanza de Azure (directiva, configuración de máquina) para que pueda:
- Garantizar el cumplimiento de los estándares sshd en el sector o la organización
- Reducción de la superficie expuesta a ataques de la administración remota basada en sshd
- Garantizar una configuración coherente de SSH en toda la flota para garantizar la seguridad y la productividad
Para ayudarle a demostrar el cumplimiento de los auditores (y para ayudarle a tomar medidas cuando sea necesario), cada comprobación de cumplimiento incluye evidencia a través del campo Razones que indica cómo se determinó el cumplimiento o el incumplimiento.
Puede personalizar los parámetros sshd (número de puerto, grupos permitidos, etc.) o usar los valores predeterminados de la directiva.
Documentación para empezar
- inicio rápido: para obtener una experiencia práctica de clic por clic, consulte Inicio rápido: Aplicación de control de posición SSH a una máquina de prueba.
- Información general y referencia: para obtener información conceptual, referencia y preguntas más frecuentes, continúe con este artículo.
Selección del comportamiento de solo auditoría frente a auditoría y configuración
Al asignar una directiva de control de posición SSH, puede elegir el comportamiento de solo auditoría (también conocido como "Auditoría") o el comportamiento de auditoría y configuración (también conocido como "Configurar").
Definición de directiva | Efecto de Azure Policy | Notas sobre lo que se espera | |
---|---|---|---|
Comportamiento de solo auditoría | **Audit** SSH Posture Control on Windows machines |
auditIfNotExists | La directiva incluye una configuración más restrictiva en comparación con muchas imágenes populares del sistema. Por ejemplo, denegación de acceso ssh raíz. En consecuencia, espere ver los estados no compatibles notificados. |
Comportamiento de auditoría y configuración | **Configure** SSH Posture Control on Windows machines |
deployIfNotExists | Como se indicó anteriormente, puede ver que los estados no compatibles se notifican inicialmente. Posteriormente, las máquinas se volverán a configurar para que coincidan con la directiva, lo que da lugar a los estados finales compatibles . |
En el caso de las máquinas existentes, los administradores suelen empezar con el comportamiento de solo auditoría para determinar el estado existente y detectar dependencias como las cuentas permitidas para la automatización de sistemas. Después de comparar la flota existente con los valores predeterminados del control de posición SSH, decidiría qué parámetros de control de posición SSH se van a personalizar. Después de este análisis y planeamiento, pasaría al comportamiento de auditoría y configuración (con prácticas de implementación seguras, como anillos).
Para escenarios de campo verde o máquinas de prueba descartables, puede optar por omitir ese análisis y pasar directamente al comportamiento de auditoría y configuración, empezando por los valores predeterminados de control de posición SSH seguros.
Precaución
Antes de configurar las máquinas, tenga mucho cuidado para validar la nueva configuración. Podría perder accidentalmente el acceso a las máquinas.
Algunos ejemplos de bloqueo accidental son:
- La configuración de autorización neta aplicada (combinación de ,
denyGroups
etc.) no permite los inicios deallowUsers
sesión que necesita. - El
port
usuario configurado para sshd está bloqueado por otros controles del entorno (reglas de firewall de host, reglas de firewall de red, etc.)- Para evitar el uso excesivo de límites del equipo empresarial, ssh Posture Control solo ha configurado sshd. Actualmente no intenta modificar las reglas de firewall en la máquina, etc. para dar cabida al puerto sshd configurado. Si desea discutir estos escenarios con nosotros, póngase en contacto con nosotros (consulte Recursos adicionales a continuación).
Ámbito de control de posición SSH: reglas, valores predeterminados y personalización
En la tabla siguiente se enumeran los elementos que se pueden auditar o configurar con ssh Posture Control. Cada uno de estos se conoce como regla.
La mayoría de las reglas se pueden asignar valores personalizados a través de parámetros de asignación de directivas para auditar o configurar y auditar. Por ejemplo, si el estándar de la organización es usar el puerto 1111 (en lugar de 22) para sshd, establecería el parámetro correspondiente en la asignación de directiva. Estos parámetros tienen identificadores que se incluyen en la tabla siguiente. Normalmente, el nombre del parámetro corto se usa mediante programación (por ejemplo, con az policy assignment create --params ...
), mientras que el nombre para mostrar del parámetro más largo se usa en los flujos de trabajo de Azure Portal.
Al personalizar valores, tenga cuidado de proporcionar valores compatibles con sshd. Por ejemplo, allowGroups
toma una lista delimitada por espacios de patrones de nombre de grupo. Para obtener referencia, consulte la página sshd_config man. La referencia de sshd_config también es útil para comprender otros comportamientos sshd, como cómo se intersecan las listas de permitidos y denegados .
Nota:
Para conservar el diseño de la tabla, algunos valores de celda se han movido a notas al pie de la tabla.
Nombre de la regla | Valor predeterminado | Nombre del parámetro | Nombre para mostrar del parámetro |
---|---|---|---|
Asegúrese de que los grupos permitidos para SSH están configurados | <nota al pie 1> | AllowGroups |
Grupos permitidos |
Asegúrese de que los usuarios permitidos para el acceso SSH están configurados | "" | AllowUsers |
Usuarios permitidos |
Asegúrese de que el método de autenticación para SSH está configurado | cualquier | AuthenticationMethods |
Métodos de autenticación |
Asegúrese de que los grupos denegados para SSH están configurados | "" | DenyGroups |
Grupos denegados |
Asegúrese de que los usuarios denegados para SSH están configurados | "" | DenyUsers |
Usuarios denegados |
Asegúrese de que el código de instalación usado al registrar mensajes para SSH está configurado | LOCAL0 | SyslogFacility |
Instalación de registro del sistema |
Asegúrese de que ssh MaxAuthTries está configurado | 6 | MaxAuthTries |
Intentos máximos de autenticación |
Asegúrese de que ssh HostKey está configurado | <nota al pie 2> | HostKey |
Clave de host |
Asegúrese de que el archivo de clave autorizado para SSH está configurado | <nota al pie 3> | AuthorizedKeysFile |
Archivo de clave autorizado |
Asegúrese de que GSSApiAuthentication para SSH está configurado | falso | GSSAPIAuthentication |
Autenticación de GSSAPI |
Asegúrese de que el banner de advertencia ssh está configurado | <nota al pie 4> | Banner |
Estandarte |
Asegúrese de que se usan cifrados adecuados para SSH | aes128-ctr,aes192-ctr,aes256-ctr | Ciphers |
Cifrados permitidos |
Asegúrese de que solo se usan algoritmos MAC aprobados. | hmac-sha2-256 | MACs |
Algoritmos MAC |
Asegúrese de que ssh ClientAliveCountMax está configurado | 0 | ClientAliveCountMax |
Número de mensajes activos del cliente |
Asegúrese de que el puerto SSH está configurado | 22 | Port |
Puerto |
Asegúrese de que ssh LoginGraceTime está configurado | 60 | LoginGraceTime |
Tiempo de gracia de inicio de sesión |
Asegúrese de que el cliente SSH ClientAliveInterval está configurado | tres mil seiscientos | ClientAliveInterval |
Intervalo de vida del cliente |
Asegúrese de que ssh PermitEmptyPasswords está configurado | falso | PermitEmptyPasswords |
Permiso de contraseña vacía |
Notas al pie de tabla:
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
- Nota: esto se muestra a los usuarios finales como:
####################################################################### Authorized access only! If you are not authorized to access or use this system, disconnect now! #######################################################################
Parámetros de directiva adicionales (no sshd)
Estos parámetros de directiva adicionales están disponibles durante la asignación de directivas. Estos influyen en el comportamiento de asignación de Azure Policy, en lugar de la configuración sshd en las máquinas.
Nombre | Descripción | Predeterminado |
---|---|---|
Incluir servidores conectados a Arc | Al seleccionar esta opción, acepta que se le cobre mensualmente por máquina conectada a Arc. | FALSO |
Efecto | Habilitar o deshabilitar la ejecución de esta directiva | <Depende de seleccionar el comportamiento de solo auditoría frente a auditoría y configuración.> |
¿Definiciones de directiva? ¿Asignaciones de directivas? ¿Asignaciones de invitados? ¿Configuración de la máquina? ¿Cómo encaja todo esto?
Para empezar a trabajar con el control de posición ssh, la acción principal es crear una asignación de directiva. La asignación de directiva vincula una definición de directiva (por ejemplo, "Auditar el control de posición SSH para máquinas Windows") a un ámbito (por ejemplo, "my_factory_3_resource_group").
A medida que use el sistema, encontrará tipos de recursos y terminología adicionales, como se resume en lo siguiente.
Descripción | |
---|---|
Definición de directiva | Dentro del servicio Policy, los datos abstractos que describen un clúster de comportamientos de configuración o auditoría disponibles. Por ejemplo, "Auditar el control de posición ssh en máquinas Windows". |
Asignación de directivas | Vincula una definición de directiva abstracta a un ámbito concreto, como un grupo de recursos. La asignación de directiva puede incluir parámetros y otras propiedades específicas de esa asignación. |
Configuración de la máquina | El servicio de Azure y los agentes que controlan la auditoría y configuración de la configuración en el nivel del sistema operativo. |
Asignación de invitados | Recurso que actúa como un vínculo triple entre la asignación de directivas, la máquina y el servicio De configuración de la máquina. La directiva crea y supervisa los recursos de asignación de invitados según sea necesario. Para obtener más información sobre la terminología de "invitado" frente a "máquina", consulte ¿Por qué veo los términos "Configuración de invitado" y "Automanage" en lugares? |
Máquina | Una máquina habilitada para Arc o una máquina virtual de Azure. |
Acerca de la compatibilidad (implementaciones del servidor SSH, etc.)
El control de posición ssh está diseñado para el escenario estándar de Windows Server de uso general de una única instancia de SERVIDOR SSH de larga duración :
- cuyo ciclo de vida se administra mediante el sistema de inicialización, como Service Control Manager
- cuyo comportamiento se rige por sshd_config archivo, coherente con el comportamiento sshd de OpenSSH
- cuya configuración o estado efectivos se revela por
sshd -T
salida, coherente con el comportamiento sshd de OpenSSH
Para todos los sistemas operativos compatibles (consulte a continuación), este es el caso de uso predeterminado del servidor SSH.
En principio, una máquina podría tener cualquier número de instancias de servidor SSH que se ejecutan con distintas duraciones, en función de cualquier número de código base y tomar su configuración de cualquier número de lugares (archivos de configuración, argumentos de línea de comandos, parámetros de tiempo de compilación, etc.). Estos casos están fuera del ámbito del control de posición ssh en este momento. Si está interesado en tales casos para el futuro, por favor póngase en contacto con nosotros para discutir.
El control de posición ssh está diseñado para su uso en máquinas de Windows Server 2025 compatibles con Azure Policy y Configuración de máquinas:
No se puede garantizar la compatibilidad con cualquier máquina específica en tiempo de ejecución, ya que sysadmins y los generadores de imágenes son libres de quitar componentes del sistema operativo, hacer que los sistemas de archivos sean de solo lectura, etc.
Compatibilidad con directivas include de sshd_config
Ssh Posture Control intenta acomodar y hacer uso de Include
directivas en sshd_config, como se indica a continuación:
- Para las acciones de auditoría y lectura: confíe en sshd -T para reflejar la configuración de net desde la perspectiva de sshd, teniendo en cuenta cualquier tipo de inclusión.
- Para acciones de configuración y escritura:
- Vincule un nuevo archivo específico del control de posición SSH a sshd_config (como una inclusión). Posteriormente, coloque todas las escrituras en el archivo de control de posición SSH vinculado. Esto mejora la higiene del sistema y la rastreabilidad de los cambios del sistema.
Compatibilidad con directivas Match de sshd_config
Ssh Posture Control está diseñado para auditar y configurar el comportamiento de sshd principal. No intenta interactuar con bloques condicionales Match
(si los hay) que pueden aplicar configuraciones sshd diferentes a poblaciones específicas.
Compatibilidad con varios valores de sshd_config
El control de posición ssh no admite el uso de varios valores para la regla "puerto", es decir, estableciendo la regla "puerto" en 22 y 33. Esta regla debe configurarse con un único valor para garantizar la funcionalidad y el cumplimiento adecuados para auditar y configurar escenarios. Otras reglas, como permitir o denegar usuarios y cifrados, pueden tener varios valores, siempre y cuando se agreguen en una sola línea.
Ejemplo:
- Un archivo sshd_config existente incluye una línea "port:22" y otra línea "port:33".
- La directiva "Audit SSH" se usa para auditar un valor de puerto esperado de 33.
- Resultado: la auditoría puede pasar o producir un error de forma imprevisible.
- Recomendación: no use esta característica con escenarios como estos.
¿Cómo puedo consultar los resultados mediante programación?
Con las consultas de Azure Resource Graph (ARG), puede integrar los datos de asignación y estado en sus propios flujos de trabajo. Estos ejemplos usan Search-AzGraph
en PowerShell para ejecutar la consulta ARG, pero No es necesario PowerShell. Puede usar ARG desde muchos puntos de entrada, como Azure Portal, la CLI de Azure, las llamadas REST, etc.
En la altitud más alta del resumen, puede obtener recuentos de máquinas por cubo de estado de cumplimiento. Por ejemplo:
$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 #>
Para explorar en profundidad de forma que vea el estado general de cumplimiento por máquina, puede usar lo siguiente:
$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 #>
Para explorar en profundidad los detalles de configuración por configuración, puede usar lo siguiente:
$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 #>
¿Por qué veo los términos "Configuración de invitado" y "Automanage" en lugares?
El servicio Machine Configuration también se conoce como Configuración de invitado y como Configuración de la máquina de Automanage. Es posible que encuentre estos nombres a medida que interactúe con los servicios y la documentación. Por ejemplo:
- En los ejemplos de consultas de Azure Resource Graph de este artículo, la tabla de datos se denomina
guestconfigurationresources
. - En Azure Portal, una vista útil para observar los resultados se denomina "Asignaciones de invitados".
- En Azure Portal, al aplicar la extensión de máquina virtual correspondiente para habilitar La configuración de la máquina virtual, el título de la extensión es "Automanage Machine Configuration".
Para los fines del control de posición SSH, no hay ninguna distinción significativa entre "invitado" y "máquina". Las máquinas habilitadas para Arc y las máquinas virtuales de Azure son aptas.
¿Cuáles son los identificadores de las definiciones de directiva integradas?
En algunos casos, como la creación de asignaciones de directivas con la CLI de Azure, puede ser útil o necesario hacer referencia a una definición de directiva por identificador en lugar de a nombre para mostrar.
Nombre para mostrar | identificación |
---|
| Auditar el control de posición ssh en máquinas Windows | ...
| | Configuración del control de posición ssh en máquinas Windows | ...
|
Recursos relacionados
- Para obtener soporte técnico con problemas, etc., póngase en contacto con el soporte técnico de Microsoft.
- Para proporcionar comentarios, analice las solicitudes de características, etc. póngase en contacto: linux_sec_config_mgmt@service.microsoft.com