Tabla de Contenidos
Instalar paquetes
- samba (el paquete principal de samba)
- samba-doc (la documentación que incluye el samba.schema para openldap)
- winbind
libnss-ldap (nss-ldap permite usar LDAP como base de datos de usuarios y nombres en linux)
libpam-ldap (pam-ldap permite usar LDAP para autenticación en linux)
- nscd (name service cache daemon)
- smbldap-tools (scripts útiles... igual me parece que no nos van a funcionar salvo que los modifiquemos)
sudo apt-get install samba samba-doc winbind sudo apt-get install libnss-ldap # poner ldapuri: ldap://ldap.mydomain/ # poner searchbase: o=myorganization # use ldap version 3 # Make local root Database admin: Yes # Does ldap database require login: Yes # LDAP account for root: cn=admin,cn=config # LDAP root account password: ***** # Unprivileged database user: uid=samba,ou=daemons,o=myorganization # Password for database login account:***** sudo apt-get install nscd nss_updatedb sudo apt-get install smbldap-tools
Reconstruir el .deb de winbind (recompilar samba)
¡¡¡¡AAARRRGHH!!!!
La versión actual de samba en ubuntu jaunty (3.3.2-1ubuntu3.1) no tiene el módulo idmap_ldap que necesitamos para poder administrar los uid/gid desde samba1, así que tenemos que /RecompilarSamba y reinstalar el winbind.
Configurar autenticación ldap en linux
sudo pam-auth-update
- Unix Authentication (Yes)
- LDAP Authentication (Yes)
Poner en /etc/auth-client-config/profile.d/ldap-auth-config lo siguiente:
[lac_ldap]
nss_passwd=passwd: files ldap [NOTFOUND=return] db
nss_group=group: files ldap [NOTFOUND=return] db
nss_shadow=shadow: files ldap
nss_netgroup=netgroup: nis
pam_auth=auth sufficient pam_ldap.so
auth required pam_unix.so nullok_secure use_first_pass
pam_account=account sufficient pam_ldap.so
account required pam_unix.so
pam_password=password sufficient pam_ldap.so
password required pam_unix.so nullok obscure min=4 max=8 md5
pam_session=session required pam_unix.so
session required pam_mkhomedir.so skel=/etc/skel/
session optional pam_ldap.so
session optional pam_foreground.soY ejecutar el comando:
sudo auth-client-config -a -p lac_ldap
Preparando el PDC
Preparar un directorio para usar como NETLOGON
sudo mkdir -pv /var/lib/samba/netlogon
Editar /etc/samba/smb.conf.
Ejemplo para el PDC (Primary Domain Controller): /smb.conf-PDC
Password del administrador LDAP secrets.tdb
La password del administrador ldap (ldap admin dn) y de idmap config:ldap_user_dn se cargan por línea de comandos:
sudo smbpasswd -w <clave_de_ldap_admin_dn> sudo net idmap secret MIDOMINIO <clave_de_idmap_config_MIDOMINIO:ldap_user_dn> sudo net idmap secret alloc <clave_de_idmap_alloc_config:ldap_user_dn>
y se guarda en /var/lib/samba/secrets.tdb
Si bien a smbpasswd se le puede dar la opción -W (mayúscula) para que pida la clave por línea de comandos, net idmap secret no tiene esa opción, así que tenemos que poner la clave en la línea de comandos
Crear usuarios y dominios "built-in" de samba
Asegurarse de que winbind esté corriendo pero samba no y hacer un net sam provision:
sudo invoke-rc.d samba stop sudo invoke-rc.d winbind restart sudo net sam provision
Ponerle una clave al usuario "Administrator"
sudo invoke-rc.d samba start sudo smbpasswd Administrator
Obtener el SID del dominio
sudo net getdomainsid
DOMAINSID=`sudo net getdomainsid | grep domain | cut -d ' ' -f 6`
LOCALSID=`sudo net getlocalsid | cut -d ' ' -f 6`
# VERIFICAR que hayan quedado bien los SIDs en las variables de entorno
echo DOMAIN SID: ${DOMAINSID}
echo LOCAL SID: ${LOCALSID}En el PDC el SID local y el del dominio deben ser iguales.
Preparando un BDC
Un BDC (Backup Domain Controller) debe compartir la base de datos de usuarios con el PDC. La única forma de hacer esto en samba (al menos hasta la versión 3.3) es que la base de datos esté en LDAP. Además, tanto el PDC como todos los BDC deben ser samba (no se pueden poner Windows NT4 Domain Controllers mezclados con samba).
Diferencias en el smb.conf
El armado de un BDC es prácticamente igual al del PDC. Al armar el archivo de configuración de /etc/samba/smb.conf sin embargo, hay que prestar atención a lo siguiente:
El workgroup (que representa el nombre del dominio) debe ser el mismo.
El netbios name (y los netbios aliases si los hubiere), deben ser distintos (ya que son equipos distintos, sus nombres deben ser distintos).
La diferenciación entre un PDC y un BDC está dada, principalmente, por el atributo domain master, que en el PDC era yes y en un BDC debe ser no.
Sólo puede haber un servidor WINS. Como en nuestro ejemplo configuramos el PDC como servidor WINS (usando wins support = yes y wins server = nada), entonces en el BDC ponemos:
wins support = no
wins server = la IP del server WINS
wins proxy = yes
secrets.tdb
En el BDC también hay que guardar las claves en secrets.tdb del mismo modo que en el PDC
unirse al dominio (join)
Asegurarse de que el servicio samba está corriendo tanto en el PDC como el nuevo BDC y hacer (suponiendo que el PDC se llama miserver:
sudo net rpc join -S miserver -UAdministrator
Esto debería pedir la clave de Administrator y luego mostrar:
Joined domain MIDOMINIO.
SID del dominio
Ahora (una vez que se unió al dominio) es necesario guardar el SID de dominio (con formato S-1-5-21-XXXXXXXXX-YYYYYYYYYY-ZZZZZZZZZZ) en secrets.tdb:
sudo net rpc getsid
que debería mostrar:
Storing SID S-1-5-21-XXXXXXXXX-YYYYYYYYYY-ZZZZZZZZZZ for Domain MIDOMINO in secrets.tdb
con el mismo número que hay en el PDC.