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 em distros Linux suportados, incluindo Ubuntu, Red Hat, Azure Linux e muito mais. 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 o da superfície de ataque do gerenciamento remoto baseado em sshd
- Garanta uma configuração de 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 Razões 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, que são alinhados à linha de base de segurança do Azure para Linux.
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 ede 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 comportamento de somente auditoria (também conhecido como "Auditoria") ou comportamento de 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 de auditoria | **Audit** SSH Posture Control on Linux machines |
auditIfNotExists | 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. Assim, espere ver estados de não conformes relatados. |
| de comportamento de auditoria e configuração | **Configure** SSH Posture Control on Linux machines |
deployIfNotExists | Como acima, você pode esperar ver estados de não compatíveis relatados inicialmente. Posteriormente, as máquinas serão reconfiguradas para corresponder à política, resultando em eventuais estados de em conformidade. |
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,permitRootLogin, etc.) não permitem os logins necessários - O
portque você configura para sshd é bloqueado por outros controles em seu ambiente (políticas SELinux, regras de firewall de host, regras de firewall de rede, etc.)- Observe que muitas distros da família Red Hat têm políticas SELinux em vigor por padrão, que impedem o sshd de usar portas diferentes de 22.
- Para evitar ultrapassar os limites da equipe corporativa, o Controle de Postura SSH configurou apenas o sshd. Atualmente, ele não tenta modificar políticas SELinux na máquina, regras de firewall, 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 .
Cada regra tem um valor de configuração padrão, alinhado à linha de base de segurança do Azure para Linux.
A maioria das regras pode receber valores personalizados, por meio da atribuição de políticas parâmetros 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 permitir que e negar listas se cruzem.
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 padrão | Nome do parâmetro | Nome de exibição do parâmetro |
|---|---|---|---|
| Verifique se as permissões em /etc/ssh/sshd_config estão configuradas | 600 | <nota de rodapé 1> | Permissões de acesso para sshd_config |
| Verifique se IgnoreRhosts está definido | Sim | ignoreHosts |
Ignorar rhosts e shosts |
| Verifique se LogLevel está definido | INFORMAÇÃO | logLevel |
Nível de verbosidade do log |
| Certifique-se de que MaxAuthTries está definido | 6 | maxAuthTries |
Número máximo de tentativas de autenticação |
| Verifique se os usuários permitidos para acesso SSH estão configurados | @ <ver nota 5> | allowUsers |
Usuários permitidos para SSH |
| Verifique se os usuários negados para acesso SSH estão configurados | raiz | denyUsers |
Usuários negados para SSH |
| Verifique se os grupos permitidos para acesso SSH estão configurados | * | allowGroups |
Grupos permitidos para SSH |
| Verifique se os grupos negados para acesso SSH estão configurados | raiz | denyGroups |
Grupos negados para SSH |
| Verifique se HostbasedAuthentication está definido | Não | hostBasedAuthentication |
Autenticação baseada em host |
| Certifique-se de que PermitRootLogin está definido | Não | permitRootLogin |
Se o root pode fazer login usando ssh |
| Verifique se PermitEmptyPasswords está definido | Não | permitEmptyPasswords |
Se o servidor permite o login em contas com cadeias de caracteres de senha vazias |
| Certifique-se de que ClientAliveCountMax está definido | 0 | clientAliveCountMax |
O número de mensagens vivas do cliente que podem ser enviadas sem que o sshd receba mensagens de volta do cliente |
| Certifique-se de que ClientAliveInterval está definido | 3600 | clientAliveInterval |
Intervalo de tempo limite em segundos após o qual, se nenhum dado tiver sido recebido do cliente, o sshd enviará uma mensagem para solicitar uma resposta |
| Certifique-se de que os MACs estão configurados | <nota de rodapé 2> | <nota de rodapé 3> | A lista de algoritmos de código de autenticação de mensagem (MAC) disponíveis |
| Verifique se um banner está configurado | <nota de rodapé 4> | banner |
O conteúdo do arquivo de faixa que é enviado ao usuário remoto antes que a autenticação seja permitida |
| Certifique-se de que PermitUserEnvironment está definido | Não | permitUserEnvironment |
Se as opções ~/.ssh/environment e environment= em ~/.ssh/authorized_keys são processadas pelo sshd |
| Verifique se as cifras estão configuradas | AES128-CTR,AES192-CTR,AES256-CTR | ciphers |
A lista de cifras permitidas |
| Verifique se a porta SSH está configurada | 22 | port |
A porta SSH |
| Garantir que o protocolo de práticas recomendadas seja usado | 2 | <nenhum parâmetro> | <nenhum parâmetro> |
Notas de rodapé da tabela:
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- Nota: isto é apresentado aos utilizadores finais como:
####################################################################### Authorized access only! If you are not authorized to access or use this system, disconnect now! #######################################################################No
allowUserso valor padrão "@" representa todas as contas na máquina
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.
| Designação | Descrição | Inadimplência |
|---|---|---|
| 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 Seleção 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 de . Sua atribuição de política vincula uma definição de política
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 Linux". |
| de 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. |
| de 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? |
| Machine | Uma máquina habilitada para Arc ou uma VM do Azure. |
Sobre compatibilidade (distros, implementações de SSH Server, etc.)
O SSH Posture Control foi projetado para o cenário Linux de uso geral convencional de uma única instância do SSH Server de
- cujo ciclo de vida é gerenciado pelo sistema init sush como systemd
- cujo comportamento é supervisionado por sshd_config arquivo, consistente com o comportamento sshd do OpenSSH
- cuja configuração/estado efetivo é revelado pela saída
sshd -T, consistente com o comportamento sshd do OpenSSH
Para todas as distros suportadas (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, por favor, entre em contato conosco para discutir.
O Controlo de Postura SSH destina-se a ser utilizado nas distribuições Linux suportadas pela Política do Azure e pela Configuração de Máquina, excluindo aquelas que estavam em suporte alargado no momento do desenvolvimento. Especificamente, estão em vigor a partir 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 [en]
- CentOS 7,3
- CentOS 8
- RHEL 7,4
- RHEL 8
- RHEL 9
- Linux rochoso 9
- SLES 15
Na medida do possível, o Controle de Postura SSH é testado com composições de sistema específicas amplamente utilizadas das distros acima. Por exemplo, composições de imagens do sistema operacional publicadas por mantenedores de distro na galeria do Azure. 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, bloquear ações do agente com o SELinux, 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:
- Se a implementação do sshd na máquina suportar Includes, vincule um novo arquivo específico do SSH Posture Control 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.
- Se a implementação sshd na máquina não suportar diretivas Include, escreva quaisquer alterações de configuração diretamente no sshd_config.
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 de Match condicionais (se houver) que podem aplicar diferentes configurações de sshd a populações específicas.
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. Estes exemplos usam 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 "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 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 "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 detalhar detalhadamente a configuração por configuração, você pode usar o seguinte:
$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 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 Guest Configuration e como Automanage Machine Configuration. 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
guestconfigurationresources. - 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.
| displayName | ID |
|---|---|
| Auditoria SSH Posture Control em máquinas Linux | /providers/Microsoft.Authorization/policyDefinitions/a8f3e6a6-dcd2-434c-b0f7-6f309ce913b4 |
| Configurar o Controle de Postura SSH em máquinas Linux | /providers/Microsoft.Authorization/policyDefinitions/e22a2f03-0534-4d10-8ea0-aa25a6113233 |
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