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.
Ssh Posture Control permite auditar y configurar la posición de seguridad de SSH Server en distribuciones de Linux compatibles, como Ubuntu, Red Hat, Azure Linux, etc. 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 con estándares sshd en el sector o la organización
- Reducir la superficie expuesta a ataques de administración remota basada en sshd
- Garantizar una configuración coherente de sshd en toda la flota para garantizar la seguridad y la productividad
captura de pantalla de
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, que se alinean con la línea base de seguridad de Azure para Linux.
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 frecuentes, continúe con este artículo de.
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 comportamiento de solo auditoría (también conocido como "Audit") o comportamiento de audit-and-configure (también conocido como "Configurar").
Definición de directiva | Efecto de Azure Policy | Notas sobre lo que se espera | |
---|---|---|---|
de comportamiento de solo auditoría | **Audit** SSH Posture Control on Linux 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 estados de no compatibles. |
de comportamiento de auditoría y configuración | **Configure** SSH Posture Control on Linux machines |
deployIfNotExists | Como se indicó anteriormente, puede ver estados de no compatibles notificados inicialmente. Posteriormente, las máquinas se volverán a configurar para que coincidan con la directiva, lo que da lugar a estados de 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.
Cautela
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 de red aplicada (combinación de
allowUsers
,denyGroups
,permitRootLogin
, etc.) no permite los inicios de sesión que necesita. - El
port
configurado para sshd está bloqueado por otros controles del entorno (directivas SELinux, reglas de firewall de host, reglas de firewall de red, etc.).- Tenga en cuenta que muchas distribuciones de familia de Red Hat tienen directivas SELinux en su lugar de forma predeterminada que bloquean sshd del uso de puertos distintos de 22.
- Para evitar el uso excesivo de límites del equipo empresarial, ssh Posture Control solo ha configurado sshd. Actualmente no intenta modificar las directivas SELinux en la máquina, las reglas de firewall, etc. para dar cabida al puerto sshd configurado. Si desea analizar 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 una regla de .
Cada regla tiene un valor de configuración predeterminado, alineado con la línea base de seguridad de Azure para Linux.
La mayoría de las reglas se pueden asignar valores personalizados, a través de la asignación de directivas parámetros auditar con 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 de sshd_config man. La referencia de sshd_config también es útil para comprender otros comportamientos sshd, como cómo permitir y denegar listas de intersección.
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 regla | Valor predeterminado | Nombre del parámetro | Nombre para mostrar del parámetro |
---|---|---|---|
Asegúrese de que los permisos en /etc/ssh/sshd_config estén configurados | 600 | <nota al pie 1> | Permisos de acceso para sshd_config |
Asegúrese de que IgnoreRhosts está establecido | Sí | ignoreHosts |
Omitir rhosts y shosts |
Asegúrese de que LogLevel está establecido | INFORMACIÓN | logLevel |
Nivel de detalle del registro |
Asegúrese de que MaxAuthTries está establecido | 6 | maxAuthTries |
Número máximo de intentos de autenticación |
Asegúrese de que los usuarios permitidos para el acceso SSH estén configurados | @ <véase la nota al pie 5> | allowUsers |
Usuarios permitidos para SSH |
Asegúrese de que los usuarios denegados para el acceso SSH están configurados | raíz | denyUsers |
Usuarios denegados para SSH |
Asegúrese de que los grupos permitidos para el acceso SSH están configurados | * | allowGroups |
Grupos permitidos para SSH |
Asegúrese de que los grupos denegados para el acceso SSH están configurados | raíz | denyGroups |
Grupos denegados para SSH |
Asegúrese de que HostbasedAuthentication está establecido | No | hostBasedAuthentication |
Autenticación basada en host |
Asegúrese de que Se ha establecido PermitRootLogin | No | permitRootLogin |
Si la raíz puede iniciar sesión mediante ssh |
Asegúrese de que Se ha establecido PermitEmptyPasswords | No | permitEmptyPasswords |
Si el servidor permite el inicio de sesión en cuentas con cadenas de contraseña vacías |
Asegúrese de que ClientAliveCountMax está establecido | 0 | clientAliveCountMax |
Número de mensajes activos del cliente que se pueden enviar sin recibir ningún mensaje sshd de vuelta desde el cliente. |
Asegúrese de que ClientAliveInterval está establecido | 3600 | clientAliveInterval |
Intervalo de tiempo de espera en segundos después del cual, si no se ha recibido ningún dato del cliente, sshd enviará un mensaje para solicitar una respuesta. |
Asegúrese de que los MAC están configurados | <nota al pie 2> | <nota al pie 3> | Lista de algoritmos de código de autenticación de mensajes (MAC) disponibles |
Asegúrese de que un banner está configurado | <nota al pie 4> | banner |
Contenido del archivo de banner que se envía al usuario remoto antes de que se permita la autenticación. |
Asegúrese de que Se ha establecido PermitUserEnvironment | No | permitUserEnvironment |
Si sshd procesa las opciones ~/.ssh/environment= en ~/.ssh/authorized_keys |
Asegúrese de que los cifrados están configurados | aes128-ctr,aes192-ctr,aes256-ctr | ciphers |
Lista de cifrados permitidos |
Asegúrese de que el puerto SSH está configurado | 22 | port |
El puerto SSH |
Asegúrese de que se usa el protocolo de procedimientos recomendados | 2 | <ningún parámetro> | <ningún parámetro> |
Notas al pie de tabla:
accessPermissionsForSshdConfig
messageAuthenticationCodeAlgorithms
hmac-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
- 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! #######################################################################
En
allowUsers
el valor predeterminado "@" representa todas las cuentas del equipo
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 solo auditoría frente a> de comportamiento de 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 directivas vincula una definición de directiva (por ejemplo, "Auditar el control de posición SSH para máquinas Linux") a un ámbito de (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 de |
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 Linux". |
de asignación de directivas de |
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. |
de configuración de |
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. |
de 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? |
de |
Una máquina habilitada para Arc o una máquina virtual de Azure. |
Acerca de la compatibilidad (distribuciones, implementaciones de servidor SSH, etc.)
El control de posición ssh está diseñado para el escenario estándar de Linux de uso general de una instancia de servidor SSH de única de larga duración:
- cuyo ciclo de vida es administrado por el sistema de inicialización como systemd
- cuyo comportamiento pasa por sshd_config archivo, coherente con el comportamiento sshd de OpenSSH
- cuya configuración o estado efectivos se revela mediante
sshd -T
salida, coherente con el comportamiento sshd de OpenSSH
Para todas las distribuciones admitidas (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 esas distribuciones de Linux admitidas por Azure Policy y La configuración de la máquina, excepto las que estaban en soporte extendido en el momento del desarrollo. En concreto, los siguientes están en el ámbito de 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
En la medida en que sea factible, el control de posición ssh se prueba con composiciones del sistema muy usadas específicas de las distribuciones anteriores. Por ejemplo, las composiciones de imágenes del sistema operativo publicadas por los mantenedores de distribución en la galería de Azure. No se puede garantizar la compatibilidad con cualquier máquina específica en tiempo de ejecución, ya que sysadmins y generadores de imágenes son libres de quitar componentes del sistema operativo, hacer que los sistemas de archivos sean de solo lectura, bloquear acciones de agente con SELinux, etc.
Compatibilidad con directivas include de sshd_config
Ssh Posture Control intenta acomodar y usar directivas de Include
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:
- Si la implementación sshd en la máquina admite Includes, vincule un nuevo archivo específico de ssh Posture Control para sshd_config (como include). 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.
- Si la implementación sshd en el equipo no admite directivas Include, escriba los cambios de configuración directamente en sshd_config.
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 de Match
condicionales (si los hay) que pueden aplicar configuraciones sshd diferentes a poblaciones específicas.
¿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 "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 #>
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 "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 #>
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 "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 ... #>
¿Por qué veo los términos "Configuración de invitado" y "Automanage" en lugares?
El servicio Machine Configuration también se conoce como de 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.
displayName | identificación |
---|---|
Auditar el control de posición ssh en máquinas Linux | /providers/Microsoft.Authorization/policyDefinitions/a8f3e6a6-dcd2-434c-b0f7-6f309ce913b4 |
Configuración del control de posición ssh en máquinas Linux | /providers/Microsoft.Authorization/policyDefinitions/e22a2f03-0534-4d10-8ea0-aa25a6113233 |
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