Autenticación de OpenBSD contra Active Directory

24

Editar: Reformateado esto como Q&A. Si alguien puede cambiar esto de Community Wiki a una pregunta típica, probablemente también sea más apropiado.

¿Cómo puedo autenticar OpenBSD contra Active Directory?

sh-beta
fuente
¡Muy agradable! Eso se ve muy completo y bien escrito. No uso OpenBSD, pero las partes de AD se ven perfectas.
Evan Anderson
+1 para una buena guía, aunque en realidad no es una pregunta.
David Schmitt
Debe cambiar esto a un formato de Preguntas y respuestas.
Doug Luxem
Cambiado, aunque todavía es un Wiki de la comunidad. Si alguien más puede cambiar eso, adelante.
sh-beta

Respuestas:

17

Prefacio

La autenticación contra Active Directory con Kerberos es bastante simple en sistemas que usan PAM, pero OpenBSD no lo hace y lo hace más difícil. Desde un tcpdump, parece que los sistemas PAM solo están realizando una autenticación previa, mientras que el sistema bsd_auth de OpenBSD está utilizando todo el proceso de autenticación Kerberos.

De todos modos, esto me llevó un tiempo comprender, así que espero que algunas instrucciones concisas te ahorren tiempo.

Algunas notas rápidas antes de comenzar:

  • Los usuarios deben existir en el sistema OpenBSD antes de intentar iniciar sesión. No son autocreadas.
  • Si quieres usuarios creados automáticamente, busca en Samba / Winbind. No he tenido más que problemas (bloqueos inexplicables, spam de registro grave, autenticación poco confiable), por lo que solo lo uso cuando tengo que hacerlo.
  • Esto se probó en OpenBSD 4.5 y Windows Server 2003. Estoy bastante seguro de que funcionará con Win2k, pero YMMV.
  • Esta versión de OpenBSD usa Heimdal 0.7.2. Todo aquí aparte de las rutas y el material login.conf probablemente funcionará en otros * nixes que ejecuten el mismo Heimdal, pero nuevamente, YMMV.

Instrucciones

Estos pasos suponen que está intentando autenticar [email protected] en el dominio EXAMPLE.COM. El controlador de dominio es pdc.EXAMPLE.COM.

  1. Cree una cuenta de usuario de Active Directory llamada myhost (eso no es un error tipográfico, estas instrucciones no funcionarán con una cuenta de computadora). Desactive la caducidad de la contraseña y no permita que el usuario cambie su propia contraseña. Establezca la contraseña a lo que quiera: se cambiará pronto.

  2. Probablemente sea una buena idea crear la cuenta de usuario bajo una nueva unidad organizativa, eliminarla del grupo de usuarios del dominio y agregarla a un grupo dedicado. Todo esto es cuestión de gustos y de su diseño de seguridad.

  3. En pdc.EXAMPLE.COM, descargue e instale las herramientas de soporte de Windows Server (específicamente, necesitará ktpass.exe)

  4. En pdc.EXAMPLE.COM, ejecute:

    ktpass -out c: \ temp \ myhost.keytab -princ host/[email protected] -mapuser myhost -pType KRB5 _NT_PRINCIPAL + rndpass

    Esto actualiza la contraseña del usuario myhost a algo aleatorio (+ rndpass), asigna el principal de Kerberos "host/[email protected]" al usuario "myhost" en Active Directory, y luego descarga la información de la clave principal y privada en el -out archivo de tabla de claves.

  5. Copie de forma segura c: \ temp \ myhost.keytab a myhost y elimine el archivo de pdc.EXAMPLE.COM

  6. En myhost, agregue la pestaña de teclas AD a su pestaña principal:

    ktutil copy /path/to/myhost.keytab /etc/kerberosV/krb5.keytab

  7. Configure /etc/krb5.conf. A continuación se muestra el mínimo que necesita. Hay muchas opciones disponibles, eche un vistazo a la página de manual para obtener más detalles. Esto solo establece el sesgo de reloj máximo aceptable en 5 minutos, hace que EXAMPLE.COM sea el reino predeterminado y le dice a Kerberos cómo traducir entre los dominios DNS y Kerberos.

    [libdefaults]
    clockskew = 300
    default_realm = EJEMPLO.COM

    [reinos]
    EXAMPLE.COM = {
    default_domain = EXAMPLE.COM
    }

    [dominio_dominio]
    .EXAMPLE.COM = EJEMPLO.COM

  8. Verifique que puede obtener un boleto:

    # kinit [email protected]
    [email protected]'s Password:
    # klist
    Credentials cache: FILE:/tmp/krb5cc_0
    Principal: [email protected]

    Issued Expires Principal
    Jun 4 21:41:05 Jun 5 07:40:28 krbtgt/[email protected]

  9. Modifique /etc/login.conf para usar la autenticación Kerberos. Su configuración exacta de login.conf variará dependiendo de cómo use su sistema, pero para pasar de una instalación sencilla a usar Kerberos, simplemente edite y comente esta línea en la clase de inicio de sesión predeterminada:

    :tc=auth-defaults:\

    Y agregue arriba:

    :auth=krb5-or-pwd:\

    Esto comprueba Kerberos primero a menos que el usuario sea root. Si Kerberos falla, usará contraseñas locales.

  10. Agregue los usuarios que desea autenticar en este host. Deje las contraseñas en blanco a menos que desee que puedan usar Active Directory y las contraseñas locales (no recomendado).

    Puede poner en blanco las contraseñas de los usuarios existentes "chpass <user>" y reemplazar el valor de "Contraseña cifrada:" con un asterisco (*)

  11. Prueba de SSH y Sudo. Ambos deberían funcionar perfectamente con sus credenciales de Active Directory.

Eso es todo al respecto.

Campo de golf

Un par de sitios útiles:

sh-beta
fuente
Parece que 2008 R2 tiene ktpass.exe incorporado. Quizás 2008 también, no puedo decir con certeza en esta etapa. Si alguien puede aclarar, eso sería genial.
Aaron Mason el
Además, para hacer esto con 5.7 en adelante, necesitará instalar el paquete Heimdal: se eliminó de la base en 5.6.
Aaron Mason el
Anexo al comentario anterior: también tendrá que instalar el paquete login_krb5 y copiar el login_krb5-or-pwdpara /usr/libexec/authtambién los archivos de configuración y la tabla de claves ahora están dentro /etc/heimdaly no /etc/kerberosVcomo en versiones anteriores de OpenBSD.
Aaron Mason
5

Una actualización de las instrucciones anteriores, ya que algunas cosas han cambiado desde entonces.

En OpenBSD 5.6, se tomó la decisión de eliminar a Heimdal de la distribución base debido a las preocupaciones sobre la calidad del código y a que nadie estuviera dispuesto a pasar el tiempo para auditarlo. En 5.7 se puso a disposición como un paquete (para 5.6 necesitará compilar desde la fuente o descubrir cómo volver a habilitarlo en la fuente). Entonces, antes de seguir las instrucciones anteriores, se deberán completar los siguientes pasos adicionales:

-3. Instale los paquetes heimdaly login_krb5desde su espejo favorito.

-2. Copiar /usr/local/libexec/auth/login_krb5*a /usr/libexec/auth.

-1. Si tiene la intención de utilizar mucho las herramientas heimdal, agréguelo /usr/local/heimdal/bina la ruta del sistema. De lo contrario, asegúrese de hacer referencia a las herramientas con su ruta completa al usarlas.

Además, los archivos krb5.confy krb5.keytabentran /etc/heimdalahora.

Aaron Mason
fuente