55 votos

La clave SSH de la autenticación mediante LDAP

En resumen:

Como una forma de hacer SSH clave de autenticación a través de LDAP.

Problema:

Hacemos uso de LDAP (slapd) para los servicios de directorio y recientemente hemos trasladado a la utilización de nuestro propio AMI para la construcción de instancias. La razón por la AMI bits que es importante es que, idealmente, nos gustaría ser capaz de iniciar sesión con SSH a través de la autenticación de clave tan pronto como se está ejecutando la instancia y no tener que esperar a que nuestros un poco lento de configuración de la herramienta de administración de la patada inicial de una secuencia de comandos para agregar las claves correctas para la instancia.

El escenario ideal es que, cuando la adición de un usuario LDAP añadimos su clave y que sería inmediatamente será capaz de iniciar sesión.

La autenticación de la clave es un debe , porque basado en contraseña de inicio de sesión es menos seguro y molestos.

He leído esta pregunta que sugiere que hay un parche para la llamada OpenSSH OpenSSH-lpk para hacer esto, pero esto ya no es necesario con OpenSSH server >= 6.2

Añadido un sshd_config(5) opción de AuthorizedKeysCommand a admitir la recuperación de authorized_keys de un comando en adición a (o en lugar de) desde el sistema de archivos. El comando se ejecuta bajo una cuenta especificada por un AuthorizedKeysCommandUser sshd_config(5) opción

¿Cómo puedo configurar OpenSSH y LDAP para implementar esto?

61voto

MobX Puntos 913

Actualización de LDAP para incluir el OpenSSH-LPK esquema

Primero tenemos que actualizar LDAP con un esquema para añadir el sshPublicKey de atributo para los usuarios:

dn: cn=openssh-lpk,cn=schema,cn=config
objectClass: olcSchemaConfig
cn: openssh-lpk
olcAttributeTypes: ( 1.3.6.1.4.1.24552.500.1.1.1.13 NAME 'sshPublicKey'
    DESC 'MANDATORY: OpenSSH Public key'
    EQUALITY octetStringMatch
    SYNTAX 1.3.6.1.4.1.1466.115.121.1.40 )
olcObjectClasses: ( 1.3.6.1.4.1.24552.500.1.1.2.0 NAME 'ldapPublicKey' SUP top AUXILIARY
    DESC 'MANDATORY: OpenSSH LPK objectclass'
    MAY ( sshPublicKey $ uid )
    )

Crear un script que las consultas LDAP para una clave pública de un usuario:

El script debe de salida de las claves públicas para que el usuario, por ejemplo:

ldapsearch '(&(objectClass=posixAccount)(uid='"$1"'))' 'sshPublicKey' | sed -n '/^ /{H;d};/sshPublicKey:/x;$g;s/\n *//g;s/sshPublicKey: //gp'

Actualización sshd_config a seleccione la secuencia de comandos en el paso anterior

  • AuthorizedKeysCommand /path/to/script
  • AuthorizedKeysCommandUser root

Bono: Actualización sshd_config para permitir la autenticación de contraseña de internos RFC1918 redes como se ve en esta pregunta:

Sólo permitir la autenticación de contraseña al servidor SSH desde la red interna

Enlaces útiles:

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: