Google libero el código fuente de HIBA, un mecanismo de autorizacion de identidad para SSH
Hace pocos dias Google dio a conocer mediante una publicación de blog la noticia de la liberación del código fuente del proyecto HIBA (Host Identity Based Authorization), que propone la implementación de un mecanismo de autorización adicional para organizar el acceso de los usuarios a través de SSH en relación con los hosts (comprobando si se permite o no el acceso a un recurso específico al realizar la autenticación utilizando claves públicas).
La integración con OpenSSH se proporciona especificando el controlador HIBA en la directiva AuthorizedPrincipalsCommand en /etc/ssh/sshd_config. El código del proyecto está escrito en C y se distribuye bajo la licencia BSD.
Sobre HIBA
HIBA utiliza mecanismos de autenticación estándar basados en certificados OpenSSH para una gestión flexible y centralizada de la autorización del usuario en relación con los hosts, pero no requiere cambios periódicos en los archivos authorized_keys y authorized_users en el lado de los hosts a los que está conectado.
En lugar de almacenar una lista de claves públicas válidas y condiciones de acceso en archivos autorizados (claves | usuarios), HIBA integra la información de enlace del host directamente en los propios certificados. En particular, se han propuesto extensiones para certificados de host y certificados de usuario, que almacenan parámetros de host y condiciones para otorgar acceso de usuario.
Si bien OpenSSH proporciona muchos métodos, desde una simple contraseña hasta el uso de certificados, cada uno de ellos por sí solo presenta desafíos.
Comencemos por aclarar la diferencia entre autenticación y autorización . La primera es una forma de demostrar que usted es la entidad que dice ser. Por lo general, esto se logra proporcionando la contraseña secreta asociada con su cuenta o firmando un desafío que demuestre que posee la clave privada correspondiente a una clave pública. La autorización es una forma de decidir si una entidad tiene permiso o no para acceder a un recurso, generalmente se realiza después de que ocurre la autenticación.
La verificación del lado del host se inicia llamando al controlador hiba-chk especificado en la directiva AuthorizedPrincipalsCommand. Este manejador decodifica las extensiones integradas en los certificados y, basándose en ellas, toma la decisión de otorgar o bloquear el acceso. Las reglas de acceso se definen de forma centralizada a nivel de la autoridad de certificación (CA) y se integran en los certificados en la etapa de su generación.
En el lado del centro de certificación, hay una lista general de permisos disponibles (hosts a los que puede conectarse) y una lista de usuarios que pueden usar estos permisos. Se ha propuesto la utilidad hiba-gen para generar certificados con información integrada sobre permisos, y la funcionalidad necesaria para crear una autoridad de certificación se ha trasladado al script hiba-ca.sh.
Durante la conexión del usuario, las credenciales especificadas en el certificado son confirmadas por la firma digital de la autoridad de certificación, lo que permite que todas las verificaciones se realicen íntegramente en el lado del host de destino al que se realiza la conexión, sin contactar con servicios externos. La lista de claves públicas de la CA que certifica los certificados SSH se especifica mediante la directiva TrustedUserCAKeys.
HIBA define dos extensiones para los certificados SSH:
La identidad HIBA, adjunta a los certificados de host, enumera las propiedades que definen a este host. Se utilizarán como criterio para otorgar acceso.
La concesión de HIBA, adjunta a los certificados de usuario, enumera las restricciones que un host debe cumplir para que se le conceda el acceso.
Además de la vinculación directa de usuarios a hosts, HIBA permite definir reglas de acceso más flexibles. Por ejemplo, los hosts se pueden asociar con información como la ubicación y el tipo de servicio, y al definir las reglas de acceso de los usuarios, permitir conexiones a todos los hosts con un tipo de servicio determinado oa los hosts en una ubicación específica.
Finalmente si estás interesado en conocer más al respecto sobre la nota, puedes consultar los detalles en el siguiente enlace.