Bienvenido(a) a Grupo Linuxero del Bajío domingo, agosto 25 2019 @ 09:14 CEST

Usuarios Windows en Linux

  • Autor:
  • Lecturas 4,589
Artículos

Hace unos días me pidieron hacer un servidor de correo electrónico, pero con la novedad de que la base de datos de usuarios estaba en un servidor PDC (Primary Domain Controller) con Windows NT4. Cinco mil usuarios no son fáciles de migrar y además ellos están muy apegados a su PDC, y que tienen otras aplicaciones que dependen de esta autenticación.

La solución la dió winbind.

Winbind es un conjunto de programas de software, que forman parte del proyecto Samba, que permiten la unificación de entrada a sistemas heterogeneos tipo Unix y Windows NT. Es decir, utilizando este chunche podremos entrar a nuestro ambiente de GNU/Linux utilizando un nombre de usuario y una contraseña almacenada en un dominio de NT.

Este conjunto de programas y bibliotecas de software consisten en:

  • El demonio winbindd, quien se encarga de comunicarse, a través de los MSRPC, con el servidor primario de dominio (donde se encuentra la base de datos de usuarios) y solicitar peticiones de autenticación.
  • La biblioteca dinámica libnss_winbind.so, que será cargada por el Name Service Switch (NSS) de GNU/Linux. El NSS es la forma como muchos Unixes hacen las búsquedas de nombres de usuario, contraseñas, grupos, computadoras en la red, etc.
  • Otra biblioteca dinámica pam_winbind.so, quién se encarga de autenticar a los usuarios a través del sistema de Pluggable Authentication Module (PAM).

Una vista de esta arquitectura sería más o menos así:

 -----     --------------     --------------     --------       ---
|login|-->|Subsistema PAM|-->|Subsistema NSS|   |winbindd|-~~->|PDC|
 -----     --------------     --------------     --------       ---
                 |                  |               ^
                 |                  |		    |
            --------------    -----------------     |
           |pam_winbind.so|  |libnss_winbind.so|----+
            --------------    -----------------

Ahora a instalar. ¿Distribución? Debian. Da la anécdota que instalé el paquete Samba que viene con la distribución, pero a la hora de estar meneándole, salió un error bastante extraño que tenía pocas explicaciones en la red, y la única respuesta existente es: instala la versión oficial. Merde! yo no quería bajar y compilar (política personal: usa las virtudes de la distribución), pero descubrí que el proyecto Samba ofrece paquetes para Sarge, así que ni tardo ni perezoso, agregué el repositorio en mi source.list y el error ya no ocurrió. Yo ataño esto a que el paquete oficial de la distribución es anterior a la versión ofrecida por el proyecto Samba.

Luego los pasos son triviales:

1. Modificar el archivo /etc/nsswitch.conf para que contenga esta forma:

passwd: compat winbind
group:  compat winbind
shadow: compat

2. Modificar el archivo /etc/samba/smb.conf para que contenga esta información:

Nota: con este solo contenido es suficiente para que el chisme haga su chamba.

[global]
# separate domain and username with '', like DOMAINusername
winbind separator = 
# use uids from 10000 to 20000 for domain users
idmap uid = 10000-20000
# use gids from 10000 to 20000 for domain groups
idmap gid = 10000-20000
# allow enumeration of winbind users and groups
winbind enum users = yes
winbind enum groups = yes
# give winbind users a real shell (only needed if they have telnet access)
template homedir = /home/winnt/%D/%U
template shell = /bin/bash

3. Arrancar los demonios smbd y nmbd y firmar a la computadora dentro del dominio NT.

# /etc/init.d/samba restart
# net rpc join -S PDC -U Administrator

4. Arrancar el servicio de winbind

# /etc/init.d/winbind restart

Después de esto podemos probar que nuestro sistema ya ve a los usuarios y los grupos de NT como usuarios de GNU/Linux.

# getent passwd
...
# getent group
...

5. Configurar los servicios PAM que se autenticarán con el PDC, haciendo que los archivos de configuración dentro de /etc/pam/ luzcan estos atributos en la sección de auth:

auth       required     /lib/security/pam_securetty.so
auth       required     /lib/security/pam_nologin.so
auth       sufficient   /lib/security/pam_winbind.so
auth       required     /lib/security/pam_pwdb.so use_first_pass shadow nullok

Sin embargo, me encontraba en este punto, cuando llegó el encargado de la red y me dijo: "Jáquez, creo que mejor no hacemos la autenticación con el NT. Prefiero mantener ambas directorios de usuarios separados. Me da más seguridad y flexibilidad. Mejor hagámoslo por LDAP, como habías sugerido." :$

Así que ahora he vuelto a mi bien amado qmail-ldap... Al menos la experiencia fue bonita, aunque nunca concluí, pero los resultados intermedios fueron agradables.

Bibliografía extra: http://faculty.acu.edu/~westk/winbind.html.