Sob a licença BSD, o Google lançou o código-fonte do HIBA, Host Identity Based Authorization, um mecanismo de autorização de identidade para SSH.
Há poucos dias o Google anunciou em um post de blog a notícia do lançamento do código-fonte do projeto HIBA (Host Identity Based Authorization), que propõe a implementação de um mecanismo de autorização adicional para organizar o acesso do usuário por SSH em relação aos hosts (verificação se o acesso a um recurso específico é permitido ou não ao autenticar usando chaves públicas).
A integração com OpenSSH é fornecida especificando o driver HIBA na diretiva AuthorizedPrincipalsCommand em /etc/ssh/sshd_config. O código do projeto é escrito em C e é distribuído sob a licença BSD.
Google lançou o código-fonte do HIBA, Host Identity Based Authorization
O HIBA usa mecanismos de autenticação baseados em certificado OpenSSH padrão para gerenciamento flexível e centralizado da autorização do usuário em relação aos hosts, mas não requer alterações periódicas nos arquivos authorized_keys e authorized_users no lado dos hosts em que está conectado.
Em vez de armazenar uma lista de chaves públicas válidas e condições de acesso em arquivos autorizados (chaves | usuários), o HIBA integra informações de ligação de host diretamente nos próprios certificados.
Em particular, extensões foram propostas para certificados de host e certificados de usuário, que armazenam parâmetros de host e condições para conceder acesso de usuário.
“Embora o OpenSSH forneça muitos métodos, desde uma simples senha até o uso de certificados, cada um deles apresenta desafios.
Vamos começar esclarecendo a diferença entre autenticação e autorização. A primeira é uma forma de mostrar que você é a entidade que afirma ser. Isso geralmente é feito fornecendo a senha secreta associada à sua conta ou assinando um desafio que mostra que você tem a chave privada correspondente a uma chave pública. A autorização é uma forma de decidir se uma entidade tem ou não permissão para acessar um recurso, geralmente feita após a autenticação ocorrer.”
A verificação do lado do host é iniciada chamando o driver hiba-chk especificado na diretiva AuthorizedPrincipalsCommand. Este manipulador decodifica as extensões integradas nos certificados e, com base nelas, toma a decisão de conceder ou bloquear o acesso. As regras de acesso são definidas centralmente no nível da autoridade de certificação (CA) e são integradas aos certificados no estágio de sua geração.
No lado do centro de certificação, há uma lista geral de permissões disponíveis (hosts aos quais você pode se conectar) e uma lista de usuários que podem usar essas permissões. O utilitário hiba-gen foi proposto para gerar certificados com informações de permissão incorporadas e a funcionalidade necessária para criar uma autoridade de certificação foi movida para o script hiba-ca.sh.
Durante a conexão do usuário, as credenciais especificadas no certificado são confirmadas pela assinatura digital da autoridade certificadora, permitindo que todas as verificações sejam realizadas inteiramente no lado do host de destino ao qual a conexão é feita, sem contato com serviços externos. A lista de chaves públicas de CA que certificam certificados SSH é especificada pela diretiva TrustedUserCAKeys.
“O HIBA define duas extensões para certificados SSH:
- A identidade HIBA, anexada aos certificados do host, lista as propriedades que definem este host. Eles serão usados como critérios para conceder acesso.
- A concessão HIBA, anexada aos certificados do usuário, lista as restrições que um host deve atender para ter acesso concedido.
“
Além de vincular diretamente os usuários aos hosts, o HIBA permite definir regras de acesso mais flexíveis. Por exemplo, os hosts podem ser associados a informações como localização e tipo de serviço e, ao definir as regras de acesso do usuário, permitem conexões a todos os hosts com um determinado tipo de serviço ou a hosts em um local específico.
Por fim, se você tiver interesse em saber mais sobre a nota, poderá conferir os detalhes no seguinte endereço.