Integración Ubuntu Linux con "Active Directory" I: Unir máquina
El directorio activo de Microsoft es simplemente una integración completa del estándar de directorio LDAP con autenticación Kerberos y resolución DNS, ligeramente modificado, al estilo Microsoft, para
complicar las cosas.
Desde hace tiempo quería probar si se podía integrar fácilmente una máquina Linux con un servidor de dominio Windows, para que cualquier usuario del dominio pueda acceder a la máquina y, pese a que la documentación disponible está desfasada, sí, es posible, y dentro de lo que cabe bastante sencillo. En los artículos consultados se propone el uso de herramientas de terceros, pero el procedimiento que voy a describir hace uso únicamente de samba y de algunas herramientas de autenticación necesarias también incluidas en los repositorios.
Empecemos con el proceso. Se describe la integración con Windows Server 2003 y 2008 (supongo que también funcionará con el 2000) para Ubuntu 10.04, 12.04 y 14.04. El resto de distribuciones desde hace un par de años seguirán un proceso muy similar, exceptuando la instalación de paquetes y la ubicación de algunos archivos. Otras anteriores seguirían un procedimiento más laborioso en la segunda parte del artículo.
Tendremos por tanto un dominio midominio.com con un servidor Windows llamado servidor y una máquina linux que se llama ubuntu.
Lo primero es instalar los programas necesarios:
sudo apt-get install winbind samba krb5-user libpam-mount
En la 14.04:
sudo apt-get install winbind samba krb5-user libpam-mount libpam-winbind libnss-winbind acl
Durante la configuración postinstalación se pide el nombre del reino predeterminado. Se introducirá en mayúsculas el nombre del dominio. Según versión también preguntará el servidor de kerberos y el servidor administrativo, que corresponden a la máquina del servidor de dominio Windows servidor.MIDOMINIO.COM.
Los datos anteriores se guardan en el archivo /etc/krb5.cnf. En caso de que no se pregunten en la postinstalación, habrá que editar dicho archivo e introducirlo manualmente en cada una de las secciones siguientes. En cualquier caso, puede confirmarse que los datos son correctos:
[libdefaults] default_realm =MIDOMINIO.COM [realms] MIDOMINIO.COM = { kdc = servidor.MIDOMINIO.COM admin_server = servidor.MIDOMINIO.COM default_domain = MIDOMINIO.COM } [domain_realm] .midominio.com = MIDOMINIO.COM midominio.com = MIDOMINIO.COMEn la 14.04 no parece ser necesario el bloque domain_realm. En la configuración de la interfaz de red hay que indicar el dominio de búsqueda. Si se usa NetworkManager se indicará gráficamente en la pestaña Ajustes de IPV4, pero si se trata de un servidor sin entorno de escritorio instalado, se editará /etc/resolv.conf y se añadirá la IP del servidor DNS si no estuviera ya indicado (puede ser distinto al servidor de dominio Windows), y el dominio de búsqueda:
domain midominio.com search midominio.com nameserver 192.168.1.10En Ubuntu 14.04 sin entorno de escritorio, en lugar de resolv.conf se modificará el archivo /etc/resolvconf/resolv.conf.d/base y posteriormente se actualizará:
sudo resolvconf -u
Se indica también el nombre y dirección IP en la red de la máquina propia en /etc/hosts:127.0.1.1 ubuntu 192.168.1.29 ubuntu ubuntu.midominio.comEn un directorio Windows es muy importante la sincronización horaria debido a la autenticación por kerberos, por lo que hay que configurar como servidor horario el mismo servidor que tenga el servidor de dominio, o al propio servidor de dominio. Se edita /etc/default/ntpdate:
NTPSERVERS="servidor.midominio.com" NTPOPTIONS="-u"La segunda opción evita usar puertos privilegiados.
Ya está preparada la configuración básica. Vamos a empezar a tocar la de Samba, que se ha de configurar como cliente de ADS.
Primero es recomendable hacer un respaldo del archivo original para evitar problemas y como referencia, ya que es una buena fuente de información sobre los parámetros existentes:
cd /etc/samba
mv smb.conf smb.conf.orig
He preparado un archivo funcional smb.conf que puede usarse como base. Atención a workgroup, que ha de llevar guión, y a las mayúsculas:
[global] workgroup = MIDOMINIO-COM realm = MIDOMINIO.COM server string = Servidor %h (Samba, Ubuntu) security = ADS map to guest = Bad User obey pam restrictions = Yes pam password change = Yes passwd program = /usr/bin/passwd %u passwd chat = *Introduzca\snueva\s*\sclave:* %n\n *Repita\snueva\s*\sclave:* %n\n *clave\sactualizada\scorrectamente* . unix password sync = Yes restrict anonymous = 2 syslog = 0 log file = /var/log/samba/log.%m max log size = 1000 announce version = 4 announce as = NT Workstation os level = 0 local master = No domain master = No dns proxy = No usershare allow guests = Yes panic action = /usr/share/samba/panic-action %d template shell = /bin/bash winbind cache time = 10 winbind enum users = Yes winbind enum groups = Yes winbind use default domain = Yes winbind refresh tickets = Yes winbind offline logon = Yes invalid users = rootEn Ubuntu 14.04 cambia ligeramente. En lugar de security = ADS:
server role = member server
A continuación, según versión, se añadirá también:
- En Ubuntu 10.04
idmap uid = 167771-335549 idmap gid = 167771-335549 passdb backend = tdbsam- En Ubuntu 12.04 y 14.04:
idmap config * : range = 167771-335549 idmap config * : backend = tdb
Lo siguiente viene por defecto en el original y se añadirá al final:
[printers] comment = All Printers path = /var/spool/samba create mask = 0700 printable = Yes print ok = Yes browseable = No [print$] comment = Printer Drivers path = /var/lib/samba/printersSi se configura una copia del original o se realiza cualquier otro cambio, es recomendable, por no decir imprescindible, utilizar la utilidad de verificación de samba:
testparm
Lo que devuelve será la configuración corregida en su caso y podrá sustituirse el actual smb.conf por lo que devuelva.
Vamos a empezar a probar lo que hemos configurado. Probemos Kerberos:
sudo kinit Administrador@MIDOMINIO.COM
Para lo anterior y para los casos siguientes puede usarse cualquier otra cuenta con permisos de administración del dominio en lugar de Administrador.
Si todo va bien, no debe mostrar ningún mensaje. Para visualizar los tiques kerberos almacenados:
sudo klist
Y ahora vamos a meter de una vez la máquina en el dominio:
en el dominio:
sudo net ads join -U administrador
Para los dominios NT en lugar de ads se hubiera usado domain. Introducido esto, el sistema contestará:
Using short domain name -- MIDOMINIO-COM Joined 'UBUNTU' to realm 'midominio.com' DNS Update for ubuntu.midominio.com failed: ERROR_DNS_GSS_ERROR DNS update failed!El error DNS es normal si el servidor de dominio no es servidor DNS, ya que lógicamente no ha podido actualizar el registro DNS de la máquina.
Para el caso de querer abandonar el dominio se introduciría algo muy similar a lo anterior:
net ads leave -U Administrador
Una vez introducida la máquina en el dominio, se puede probar la conexión con el directorio activo:
sudo net ads testjoin
Desde el servidor Windows ya constará la máquina como miembro y podrá organizarse en el grupo que convenga. En la segunda parte del artículo se indicará cómo configurar la máquina Linux para que valide usuarios contra el dominio.
2 comentarios:
Interesante articulo, lo he segui y funciona todo, he usado ubuntu 12.04 y Windows 2008.
Pero tengo una pregunta, si quiero tener carpetas compartidas en el samba con los usuarios y grupos de Linux, como puedo hacer.
Gracias de nuevo.
Al autenticarse frente al dominio los usuarios deben ser los de éste. No recuerdo si he probado a hacer lo que dices, pero sólo sería válido desde máquinas que no fueran windows.
Publicar un comentario