Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
O Controle de Postura SSH permite auditar e configurar a postura de segurança do Servidor SSH no Windows Server 2019, 2022 e 2025. O Controlo de Postura SSH integra-se perfeitamente com os serviços de Governação do Azure (Política, Configuração de Máquina) para que possa:
- Garantir a conformidade com os padrões sshd em seu setor ou organização
- Reduza a superfície de ataque do gerenciamento remoto baseado em sshd
- Garanta uma configuração sshd consistente em toda a sua frota para segurança e produtividade
Para ajudá-lo a demonstrar conformidade aos auditores (e para ajudá-lo a tomar medidas quando necessário), cada verificação de conformidade inclui evidências por meio do campo Motivos , indicando como a conformidade ou não conformidade foi determinada.
Você pode personalizar os parâmetros sshd (número da porta, grupos permitidos, etc.) ou usar os valores padrão da política.
Documentação para introdução
- Guia de início rápido: Para uma experiência prática clique a clique, consulte Guia de início rápido : aplicar de controle de postura SSH a uma máquina de teste.
- Visão geral e referência: Para obter informações conceituais, referências e perguntas frequentes, continue com este artigo.
Selecionando somente auditoria versus comportamento de auditoria e configuração
Ao atribuir uma política de Controle de Postura SSH, você pode escolher o comportamento somente auditoria (também conhecido como "Auditoria") ou o comportamento de auditoria e configuração (também conhecido como "Configurar").
| Definição de política | Efeito da Política do Azure | Notas sobre o que esperar | |
|---|---|---|---|
| Comportamento somente auditoria | **Audit** SSH Posture Control on Windows machines |
auditarSeNãoExiste | A política inclui configurações mais restritivas em comparação com muitas imagens populares do sistema. Por exemplo, negação de acesso ssh raiz. Consequentemente, espere ver os estados não conformes relatados. |
| Comportamento de auditoria e configuração | **Configure** SSH Posture Control on Windows machines |
deployIfNotExists | Como acima, você pode esperar ver os estados não compatíveis relatados inicialmente. Posteriormente, as máquinas serão reconfiguradas para corresponder à política, resultando em eventuais estados Compatíveis . |
Para máquinas existentes, os administradores normalmente começam com um comportamento somente auditoria para determinar o estado existente e descobrir dependências, como contas permitidas para automação de sistemas. Depois de comparar a frota existente com os padrões do Controle de Postura SSH, você decidirá quais parâmetros do Controle de Postura SSH personalizar. Após essa análise e planejamento, você faria a transição para o comportamento de auditoria e configuração (com práticas de implantação seguras, como anéis).
Para cenários greenfield ou máquinas de teste descartáveis, você pode optar por ignorar essa análise e passar diretamente para o comportamento de auditoria e configuração, começando de novo com padrões fortes de Controle de Postura SSH.
Atenção
Antes de configurar qualquer máquina, tenha muito cuidado para validar sua nova configuração. Pode perder acidentalmente o acesso às suas máquinas.
Exemplos de bloqueios acidentais incluem:
- As configurações de autorização de rede aplicadas (combinação de
allowUsers,denyGroups, etc.) não permitem os logins que você precisa - O
portque você configura para sshd é bloqueado por outros controles em seu ambiente (regras de firewall do host, regras de firewall de rede, etc.)- Para evitar ultrapassar os limites da equipe corporativa, o Controle de Postura SSH configurou apenas o sshd. Atualmente, ele não tenta modificar as regras de firewall na máquina, etc. para acomodar a porta sshd configurada. Se você gostaria de discutir esses cenários conosco, entre em contato conosco (consulte Recursos adicionais abaixo).
Escopo do Controle de Postura SSH: regras, padrões e personalização
A tabela a seguir lista os itens que podem ser auditados ou configurados com o Controle de Postura SSH. Cada um deles é conhecido como uma regra.
A maioria das regras pode receber valores personalizados, por meio de parâmetros de atribuição de política para auditar ou configurar e auditar. Por exemplo, se o padrão em sua organização for usar a porta 1111 (em vez de 22) para sshd, você definirá o parâmetro correspondente na atribuição de política. Estes parâmetros têm identificadores que estão incluídos na tabela abaixo. Normalmente, o nome do parâmetro curto é usado programaticamente (por exemplo, com az policy assignment create --params ...), enquanto o nome de exibição do parâmetro mais longo é usado nos fluxos de trabalho do portal do Azure.
Ao personalizar valores, tenha o cuidado de fornecer valores que sejam compatíveis com sshd. Por exemplo, allowGroups usa uma lista delimitada por espaço de padrões de nome de grupo. Para referência, consulte a página do manual sshd_config. A referência sshd_config também é útil para entender outros comportamentos sshd, como como as listas de permissão e negação se cruzam.
Observação
Para preservar o layout da tabela, alguns valores de célula foram movidos para notas de rodapé abaixo da tabela.
| Nome da regra | Valor predefinido | Nome do parâmetro | Nome de exibição do parâmetro |
|---|---|---|---|
| Verifique se os grupos permitidos para SSH estão configurados | <Nota de rodapé 1> | AllowGroups |
Grupos permitidos |
| Verifique se os usuários permitidos para acesso SSH estão configurados | "" | AllowUsers |
Utilizadores permitidos |
| Verifique se o método de autenticação para SSH está configurado | qualquer | AuthenticationMethods |
Métodos de autenticação |
| Verifique se os grupos negados para SSH estão configurados | "" | DenyGroups |
Grupos negados |
| Verifique se os usuários negados para SSH estão configurados | "" | DenyUsers |
Usuários negados |
| Verifique se o código do recurso usado ao registrar mensagens para SSH está configurado | LOCAL0 | SyslogFacility |
Recurso de registro do sistema |
| Verifique se o SSH MaxAuthTries está configurado | 6 | MaxAuthTries |
Máximo de tentativas de autenticação |
| Verifique se a HostKey SSH está configurada | <Nota de rodapé 2> | HostKey |
Chave do anfitrião |
| Verifique se o arquivo de chave autorizado para SSH está configurado | <Nota de rodapé 3> | AuthorizedKeysFile |
Arquivo de chave autorizado |
| Verifique se o GSSApiAuthentication para SSH está configurado | falso | GSSAPIAuthentication |
Autenticação GSSAPI |
| Verifique se o banner de aviso SSH está configurado | <Nota de rodapé 4> | Banner |
Estandarte |
| Garantir que as cifras apropriadas sejam usadas para SSH | AES128-CTR,AES192-CTR,AES256-CTR | Ciphers |
Cifras permitidas |
| Certifique-se de que apenas algoritmos MAC aprovados sejam usados | HMAC-SHA2-256 | MACs |
Algoritmos MAC |
| Verifique se o SSH ClientAliveCountMax está configurado | 0 | ClientAliveCountMax |
Número de mensagens vivas do cliente |
| Verifique se a porta SSH está configurada | 22 | Port |
Porto |
| Verifique se o SSH LoginGraceTime está configurado | 60 | LoginGraceTime |
Tempo de carência de login |
| Verifique se o SSH ClientAliveInterval está configurado | 3600 | ClientAliveInterval |
Intervalo de vida do cliente |
| Verifique se o SSH PermitEmptyPasswords está configurado | falso | PermitEmptyPasswords |
Permissão de senha vazia |
Notas de rodapé da tabela:
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: isto é apresentado aos utilizadores finais como:
####################################################################### Authorized access only! If you are not authorized to access or use this system, disconnect now! #######################################################################
Parâmetros de política adicionais (não sshd)
Esses parâmetros de política adicionais estão disponíveis durante a atribuição de política. Isso influencia o comportamento de atribuição da Política do Azure, em oposição às configurações de sshd em máquinas.
| Nome | Descrição | Predefinido |
|---|---|---|
| Incluir servidores conectados Arc | Ao selecionar esta opção, você concorda em ser cobrado mensalmente por máquina conectada Arc. | FALSO |
| Efeito | Ativar ou desativar a execução desta política | <Depende de Selecionar somente auditoria versus comportamento de auditoria e configuração> |
Definições de políticas? Atribuições políticas? Atribuições de convidados? Configuração da máquina? Como é que tudo isto se encaixa?
Para começar a usar o Controle de Postura SSH, sua ação principal é criar uma atribuição de política. Sua atribuição de política vincula uma definição de política (por exemplo, "Auditar o Controle de Postura SSH para máquinas Windows") a um escopo (por exemplo, "my_factory_3_resource_group").
Ao usar o sistema, você encontrará tipos de recursos e terminologia adicionais, conforme resumido a seguir.
| Descrição | |
|---|---|
| Definição de política | No serviço Política, os dados abstratos que descrevem um cluster de comportamentos de auditoria e/ou configuração disponíveis. Por exemplo, "Auditar o controle de postura SSH em máquinas Windows". |
| Atribuição de políticas | Vincula uma definição de política abstrata a um escopo concreto, como um grupo de recursos. A atribuição de política pode incluir Parâmetros e outras propriedades específicas dessa atribuição. |
| Configuração da máquina | O serviço e o agentry do Azure que lidam com a auditoria e a definição de configuração no nível do sistema operacional. |
| Atribuição de convidado | Recurso que atua como um link de três vias entre a atribuição de política, a máquina e o serviço de Configuração da Máquina. A política cria e monitora recursos de atribuição de convidados conforme necessário. Para obter mais informações sobre a terminologia "convidado" versus "máquina", consulte Por que vejo os termos "Configuração do convidado" e "Gerenciamento automático" em alguns locais? |
| Máquina | Uma máquina habilitada para Arc ou uma VM do Azure. |
Sobre compatibilidade (implementações de SSH Server, etc.)
O Controle de Postura SSH foi projetado para o cenário principal de uso geral do Windows Server de uma única instância de SSH Server de longa execução :
- cujo ciclo de vida é gerenciado pelo sistema init, como o Service Control Manager
- cujo comportamento é regido por sshd_config arquivo, consistente com o comportamento sshd do OpenSSH
- cuja configuração/estado efetivo é revelado pela
sshd -Tsaída, consistente com o comportamento sshd do OpenSSH
Para todos os sistemas operacionais suportados (veja abaixo), este é o caso de uso padrão do SSH Server.
Em princípio, uma máquina poderia ter qualquer número de instâncias de servidor SSH em execução com tempos de vida variáveis, com base em qualquer número de bases de código, e tendo sua configuração de qualquer número de lugares (arquivos de configuração, argumentos de linha de comando, parâmetros de tempo de compilação, etc.). Tais casos estão fora do escopo do Controle de Postura SSH neste momento. Se você estiver interessado em tais casos para o futuro, entre em contato conosco para discutir.
O Controlo de Postura SSH destina-se a ser utilizado em máquinas Windows Server 2019, 2022 e 2025 suportadas pela Política do Azure e Configuração de Máquina -
A compatibilidade com qualquer máquina específica em tempo de execução não pode ser garantida, pois os administradores de sistemas e construtores de imagens são livres para remover componentes do sistema operacional, tornar os sistemas de arquivos somente leitura, etc.
Compatibilidade com sshd_config Incluir diretivas
O Controle de Postura SSH tenta acomodar e fazer uso de Include diretivas em sshd_config, da seguinte forma:
- Para ações de auditoria/leitura: confie no -T sshd para refletir a configuração da rede da perspetiva do sshd, levando em consideração quaisquer Includes.
- Para ações de configuração/gravação:
- Vincule um novo arquivo específico do Controle de Postura SSH ao sshd_config (como um Include). Posteriormente, coloque todas as gravações no arquivo de Controle de Postura SSH vinculado. Isso melhora a higiene do sistema e a rastreabilidade das alterações do sistema.
Compatibilidade com as diretivas sshd_config Match
O Controle de Postura SSH foi projetado para auditar e configurar o comportamento sshd principal. Ele não tenta interagir com blocos condicionais Match (se houver) que podem aplicar diferentes configurações de sshd a populações específicas.
Compatibilidade com vários valores sshd_config
O SSH Posture Control não suporta a utilização de múltiplos valores para a regra 'port', ou seja, definir a regra 'port' para 22 e 33. Esta regra deve ser configurada com um único valor para garantir a funcionalidade e a conformidade adequadas para auditoria e configuração de cenários. Outras regras, como permitir/negar usuários e cifras, podem ter vários valores, desde que sejam adicionados em uma única linha.
Exemplo:
- Um arquivo sshd_config existente inclui uma linha "port:22" e outra linha "port:33".
- A política "SSH de auditoria" é usada para auditar um valor de porta esperado de 33.
- Resultado: A auditoria pode ser aprovada ou falhar de forma imprevisível.
- Recomendação: Não utilize esta funcionalidade em cenários como estes.
Como posso consultar os resultados programaticamente?
Usando consultas do Azure Resource Graph (ARG), você pode integrar dados de atribuição e status em seus próprios fluxos de trabalho. Esses exemplos são usados Search-AzGraph no PowerShell para executar a consulta ARG, mas o PowerShell não é necessário. Você pode usar o ARG de muitos pontos de entrada, incluindo o Portal do Azure, CLI do Azure, chamadas REST, etc.
Na altitude mais alta de sumarização, você pode obter contagens de máquinas por bucket de status de conformidade. Por exemplo:
$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 detalhar de forma que você veja o status geral de conformidade por máquina, você pode usar o seguinte:
$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 detalhar detalhadamente a configuração por configuração, você pode usar o seguinte:
$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 que vejo os termos "Configuração de convidado" e "Gerenciamento automático" em alguns locais?
O serviço Configuração da Máquina também é conhecido como Configuração de Convidado e como Configuração de Máquina de Gerenciamento Automático. Você pode encontrar esses nomes à medida que interage com serviços e documentação. Por exemplo:
- Nos exemplos de consulta do Azure Resource Graph neste artigo, a tabela de dados é chamada
guestconfigurationresourcesde . - No portal do Azure, uma exibição útil para observar resultados é chamada de "Atribuições de convidado".
- No portal do Azure, ao aplicar a extensão de VM relevante para habilitar a Configuração da Máquina, o título da extensão é "Configuração da Máquina de Gerenciamento Automático".
Para efeitos de Controlo de Postura SSH, não existe uma distinção significativa entre "convidado" e "máquina". Máquinas habilitadas para arco e VMs do Azure são qualificadas.
Quais são os identificadores para as definições de política internas?
Em alguns casos, como a criação de atribuições de política com a CLI do Azure, pode ser útil ou necessário fazer referência a uma definição de política por id em vez de nome para exibição.
| nome de exibição | ID |
|---|---|
| Auditar o Controle de Postura SSH em máquinas Windows | /providers/Microsoft.Authorization/policyDefinitions/fe4e11ff-f561-4d4a-877c-256cc0b6470e |
| Configurar o Controle de Postura SSH em máquinas Windows | /providers/Microsoft.Authorization/policyDefinitions/42830b63-79aa-4ea5-85dc-6baa719d7d7c |
Recursos relacionados
- Para obter suporte com problemas, etc., entre em contato com o Suporte da Microsoft
- Para fornecer comentários, discutir solicitações de recursos, etc., entre em contato com: linux_sec_config_mgmt@service.microsoft.com