Documente Academic
Documente Profesional
Documente Cultură
Cuando se trata de integrar sistemas GNU/Linux con MS-Windows, hay muchos puntos a tener en cuenta, tanto en servicios como en administracin de los mismos. Como por ejemplo es la utilizacin de Samba como servidor principal de dominio o PDC (Prinicipal Domain Controller) para dar servicios de: validacin de usuarios, ficheros, directorios, colas de impresin, etc., a estaciones de trabajo con MS-Windows.
amba es un servidor/cliente de software libre que implementa el protocolo de red para compartir recursos conocido como SMB (Server Message Block), actualmente como CIFS (Common Internet Filesystem). Esto permite que mquinas con GNU/ Linux o Unix acten como servidores o clientes en redes Microsoft, nos permite compartir diferentes tipos de recursos: archivos, directorios, colas de impresin, etc. Aparte de dar servicio a estos recursos la ltima versin (Samba v.3) tambin tiene la posibilidad de validar usuarios actuando como PDC Controlador Principal de Dominio siendo miembro de un dominio existente en la red o bien siendo el servidor maestro del dominio. En infraestructuras complejas en donde la administracin de cuentas de usuario se puede complicar, la configuracin bsica de Samba no nos alcanza y es necesario tener un buen servicio de directorio que unifique todo tipo de cuentas de usuario en una sola base de datos de acceso ligero, con el objetivo de no tener diferentes bases de datos (usuarios Linux, usuarios Windows, ...) que tendramos que administrar por separado. OpenLDAP es una versin libre de LDAP (Lightweight Directory Access Protocol) que se
basa en el estndar ISO X.500 y nos permite organizar de manera jerrquica todo tipo de cuentas, grupos, puntos de montaje, cuentas de equipos, etc. En este artculo vamos a tratar la configuracin y puesta en marcha tanto de Samba como de OpenLDAP y la integracin de los mismos.
linux@software.com.pl
Lo primero de todo es instalar los paquetes referentes a Samba, en este artculo hemos utilizado la distribucin Debian etch. Los paquetes necesarios son: samba, sambacommon y samba-doc que tambin estn disponibles en otras distribuciones como Fedora Core en RPM, Ubuntu, etc. Una vez instalados los paquetes procedemos a la configuracin bsica del servidor, aunque Debian ya preconfigura algunas cosas como por ejemplo el tipo de ejecucin del servicio: daemon o bien a travs del servicio inetd Figura 2, seleccionar si queremos crear una base de datos de usuarios, el nombre del grupo de trabajo/dominio Figura 1. Aparte nos va a pedir una serie de parmetros adicionales de configuracin como: utilizar contraseas cifradas, permitir trabajar con DHCP de manera conjunta con el servidor de nombres WINS. Este ltimo nos permite que el
34
Linux+ 10/2007
servidor DHCP pueda proveer informacin como podemos observar en el Listado 1, es el sobre otros servidores de WINS (Windows primer parmetro: workgroup de la seccin gloInternet Name Service) que haya en la red. bal. Aparte tambin podemos cambiar la des- En cuanto a los recursos por defecto, suele traer Una vez realizada la tarea de instalacin cripcin del servidor con server string y el nomel servicio arranca automticamente, con los bre del equipo (de cara a la red Microsoft) con parmetros por defecto. netbios name. Si queremos contraseas cifradas activamos encrypt passwords. Todos estos parConfiguracin bsica metros son configurados desde la interfaz de Ahora vamos a revisar el fichero de configu- instalacin. racin que nos genera el programa de instaUn parmetro importante es security que lacin de manera automtica y que reside en establece el nivel de seguridad de nuestro servi/etc/samba llamado smb.conf. Este fichero dor Samba, por defecto el nivel es user, esto sigest dividido en una serie de secciones: nifica que para acceder al servidor es necesario validarse usando un usuario existente dentro global: Configuracin global del servidor. de la base de datos de usuarios de Samba es homes: Configuracin del recurso referen- pecificada con otro parmetro, el passdb backend. te al directorio home de cada usuario Hay diferentes niveles de seguridad: printers: Recurso sobre las colas de impresin. user: En este nivel el cliente enva una peticin de iniciar la sesin de manera Cuando revisemos el fichero de configuracin directa, ste proporciona el usuario y conlo que tendremos que mirar es si el nombre trasea. El servidor recoge el usuario/condel dominio/grupo de trabajo es el correcto, trasea y acepta o niega el acceso.
tres recursos bsicos: directorio de cada usuario (homes), impresoras (printers) y el recurso oculto (print$) donde estaran los controladores para Windows de las impresoras. Los parmetros de un recurso pueden ser variados, desde el nombre (nombre de la seccin) hasta usuarios vlidos para lectura/escritura. En el caso de los directorios de cada usuario, en lugar de tener un recurso por usuario tenemos una sola seccin que tiene la configuracin del
Listado 1. Fichero de configuracin bsico: smb.conf
[global] workgroup = LINUXPLUS netbios name = servidor security = user server string = Servidor de red %h log file = /var/log/samba/log.%m max log size = 1000 syslog = 0 panic action = /usr/share/samba/ panic-action %d encrypt passwords = true passdb backend = tdbsam invalid users = root passwd program = /usr/bin/passwd %u passwd chat = *Enter\snew\sUNIX\ spassword:* %n\n *Retype\snew\ sUNIX\ spassword:* %n\n *password\supdated \ssuccessfully* . socket options = TCP_NODELAY ... # Recursos compartidos obey pam restrictions = yes
www.lpmagazine.org
35
Podramos tener algn usuario ya creado dentro del sistema que deseramos habilitarle como usuario Samba, esto lo podemos hacer utilizando el comando smbpasswd (por ejemplo: smbpasswd tomeu) y aadirlo a un grupo existente como por ejemplo: adduser tomeu contabilidad. Seguidamente debemos reiniciar el servicio de Samba para que coja la configuracin smb.conf, en Debian: /etc/init.d/samba restart.
Listado 2. Fichero de configuracin smb.conf (Recursos)
[homes] comment = Home Directories browseable = no writable = yes create mask = 0700 directory mask = 0700 valid users = %S [printers] comment = All Printers browseable = no path = /var/spool/samba printable = yes public = no writable = no create mode = 0700 [print$] comment = Printer Drivers path = /var/lib/samba/printers browseable = yes read only = yes guest ok = no
36
Linux+ 10/2007
www.lpmagazine.org
37
Cuando las infraestructuras son muy grandes y se hace muy pesada la gestin de mltiples cuentas de usuario, grupos, equipos, etc., se hace necesario el uso de servicios que faciliten esa gestin, uno de estos servicios es OpenLDAP una versin libre de LDAP (Lightweight Directory Access Protocol) que nos permite unificar todo tipo de cuentas de usuario en una sola base datos de acceso ligero. LDAP tambin puede servir como directorio de contactos de una empresa, porque aparte tambin nos permite organizar en forma de rbol la estructura de la empresa utilizando unidades organizativas o OU (Organizational Unit) que actan
add user script = /usr/sbin/useradd -d /dev/null -g 100 -s /bin/false "%u" add machine script = /usr/sbin/useradd -d /dev/null -g 100 -s /bin/false "%u"
38
Linux+ 10/2007
Figura 9. Estructura de la base de datos OpenLDAP como carpetas organizando usuarios, grupos, equipos, etc., como podemos ver en la Figura 9. En esta seccin nos vamos a centrar en la puesta en marcha del servicio y la configuracin de Samba para que utilice el OpenLDAP para la gestin de usuarios y dems. Lo primero ser instalar el servidor de OpenLDAP si no tenemos ninguno y las utilidades necesarias, como dijimos al principio trabajamos con la distribucin Debian etch, pero estos paquetes tambin estn disponibles con otras distribuciones de Linux como por ejemplo: Ubuntu, Red Hat, etc. Los paquetes en Debian son: slapd, ldap-utils. Una vez descargados los paquetes vamos a proceder a su configuracin de manera automtica, pero antes nos puede pedir si queremos omitir hacer la configuracin, le decimos que no. Seguidamente nos empezar pidiendo parmetros sobre el nombre del dominio (linuxplus.com en nuestro caso) y nombre de la organizacin, finalmente la contrasea del administrador del directorio LDAP. Una vez instalado y configurado ya tendramos que tener la base de datos LDAP creada y el servicio slapd en marcha, podemos probar de listar el contenido de la base de datos con el comando slapcat que nos va a devolver en principio dos elementos: la raz del rbol y el nodo referente al usuario de administracin.
Para poder integrar Samba con OpenLDAP es necesario unas utilidades llamadas smbldaptools que tambin estn disponibles como paquete de Debian, aparte de configurar Samba para que trabaje con OpenLDAP como base de datos de cuentas de usuario, grupos, etc. Listado 7. Configuracin del fichero smbldap_ bind.conf
slaveDN="cn=admin,dc=linuxplus, dc=com" slavePw="contrasea_ administrador_ldap" masterDN="cn=admin,dc=linuxplus, dc=com" masterPw="contrasea_ administrador_ldap"
www.lpmagazine.org
39
Si no tenemos el samba.schema en /etc/ldap/ schema lo podemos copiar del directorio /usr/ share/doc/samba-doc/examples/LDAP/ que est comprimidocongzip.Lovamosadescomprimir con gunzip samba.schema.gz para su posterior copia a /etc/ldap/schema. Despus vamos a aadir la linea index sambaSID,sambaPrimar yGroupSID,sambaDomainName eq despus de la lnea que contiene index objectClass eq. Este ltimo parmetro configura los ndices por los que indexar la base de datos para poder realizar bsquedas con estos campos. Finalmente vamos a reiniciar el daemon del servidor LDAP con /etc/init.d/slapd restart en nuestro caso con Debian.
Listado 8. Configuracin del fichero smbldap.conf
SID="S-1-5-21-20635753422847459922-2710907528" sambaDomain="LINUXPLUS" slaveLDAP="127.0.0.1" slavePort="389" masterLDAP="127.0.0.1" masterPort="389" ... suffix="dc=linuxplus,dc=com" usersdn="ou=People,${suffix}" computersdn="ou=Computers,${suffi x}" groupsdn="ou=Groups,${suffix}" idmapdn="ou=Idmap,${suffix}" sambaUnixIdPooldn="sambaDomainName= LINUXPLUS,${suffix}" ... hash_encrypt="CRYPT" ... userSmbHome="\\SERVIDOR\%U" userProfile="\\SERVIDOR\%U\profile" userHomeDrive="Z:" userScript="logon.bat" mailDomain="linuxplus.com" ...
Ajustes de Samba
Ahora vamos a aadir los parmetros necesarios para que Samba trabaje con OpenLDAP para la validacin de usuarios, gestin de grupos, equipos, etc. A partir del fichero /etc/samba/ smb.conf vamos hacer una serie de cambios, el primero es el de cambiar el backend de la base de datos de usuarios/contraseas con el parmetro passdb backend, seguidamente configuraremos todos los parmetros referentes a la estructura de cmo estn organizados los datos dentro del
Listado 9. Salida del comando smbldap-populate
OpenLDAP (usuarios, grupos, equipos, etc.) como est en el Listado 6. Cuidado con duplicar parmetros como los de add user script y add machine script que hemos puesto anteriormente, es mejor sustituirlos por los nuevos.
Populating LDAP directory for domain LINUXPLUS (S-1-5-21-2063575342-2847459922-2710907528) (using builtin directory structure) entry dc=linuxplus,dc=com already exist.
adding new entry: ou=People,dc=linuxplus,dc=com adding new entry: ou=Groups,dc=linuxplus,dc=com adding new entry: ou=Idmap,dc=linuxplus,dc=com adding new entry: ou=Computers,dc=linuxplus,dc=com adding new entry: uid=administrador,ou=People,dc=linuxplus,dc=com adding new entry: uid=nobody,ou=People,dc=linuxplus,dc=com adding new entry: cn=Domain Admins,ou=Groups,dc=linuxplus,dc=com adding new entry: cn=Domain Users,ou=Groups,dc=linuxplus,dc=com adding new entry: cn=Domain Guests,ou=Groups,dc=linuxplus,dc=com
adding new entry: cn=Domain Computers,ou=Groups,dc=linuxplus,dc=com adding new entry: cn=Administrators,ou=Groups,dc=linuxplus,dc=com adding new entry: cn=Account Operators,ou=Groups,dc=linuxplus,dc=com adding new entry: cn=Print Operators,ou=Groups,dc=linuxplus,dc=com adding new entry: cn=Replicators,ou=Groups,dc=linuxplus,dc=com adding new entry: cn=Backup Operators,ou=Groups,dc=linuxplus,dc=com adding new entry: sambaDomainName=LINUXPLUS,dc=linuxplus,dc=com
40
Linux+ 10/2007
que la fase de configuracin de OpenLDAP haya ido bien porque si no smbldap-populate nos va a fallar. En la ejecucin del smbldap-populate va a realizar operaciones dentro de la base de datos OpenLDAP, creando los grupos requeridos por Samba para la administracin del dominio y el usuario administrador del dominio. As como cuando hemos configurado Samba como PDC pero con las cuentas del sistema utilizamos el usuario root para unirnos al dominio, esta vez vamos a utilizar el usuario administrador y contrasea que nos pedir al final de la ejecucin. Esto tambin quiere decir que el usuario que habamos creado al principio de pruebas tampoco nos va a servir porque ahora Samba utiliza LDAP como base de datos para las cuentas de usuario. Lo ltimo que nos queda hacer es que el sistema tambin utilice el OpenLDAP para leer los grupos y usuarios en lugar de las bases de datos /etc/passwd y /etc/shadow. Esto lo vamos hacer instalando el paquete nss_ldap en nuestro caso el paquete libnss-ldap para Debian, en la instalacin nos va a pedir la direccin del servidor LDAP (ldap://127.0.0.1/ en nuestro caso), el base DN (dc=linuxplus,dc=com en nuestro caso la raz de LDAP), la versin que utilizamos (versin 3), no necesitamos usuario para acceder a la base de datos, damos privilegios especiales de LDAP para root, cuenta de administracin de la base de datos LDAP (cn=admin, dc=linuxplus, dc=com en nuestro caso) y su contrasea. Una vez configurado cambiaremos los parmetros especificados en el Listado 10 del fichero /etc/nsswitch.conf. Es muy importante recordar que a partir de esta operacin los usuarios y grupos creados anteriormente con adduser (resp. addgroup) ya no estn operativos y es mejor eliminarlos con userdel y groupdel para volverlos a crear dentro del OpenLDAP. La gestin de cuentas se puede o bien hacer manualmente con las herramientas de consola o bien visuales, del estilo LDAP Admin for Windows (Figura 10) que se puede descargar de manera gratuita de http:// ldapadmin.sourceforge.net/.
Por ejemplo queremos crear los grupos que tenamos al principio: gestion y contabilidad, usando la herramienta ldapadd de la siguiente forma: crearemos un fichero de texto como el del Listado 11 y ejecutamos la siguiente lnea como root: ldapadd -x -D 'cn=admin, dc=linuxplus,dc=com' -W -f contabilidad.ldif. Tenemos que tener en cuenta que el gidNumber puede ser mayor o igual a 1000 para que no entre en conflicto con ningn otro. El fichero est compuesto por diferentes campos que nos determinan la situacin del nuevo objeto dentro de la base de datos con dn, el nombre del objeto con cn y despus el tipo o tipos de objeto, en nuestro caso es un objeto tipo posixGroup (grupo de sistema), sambaGroupMapping (grupo de Samba). Cada tipo de objeto tiene su conjunto de campos propios, como por ejemplo el posixGroup nos proporciona el campo gidNumber y el sambaGroupMapping los campos sambaGroupType y sambaSID. El campo sambaSID est compuesto por el SID local cogido con net getlocalsid y aadiendo el RID que es igual a 2*gidNumber+ 1001. Pero es mejor utilizar las herramientas smbldap-tools que ya llevan utilidades para crear y borrar todo tipo de usuarios y grupos adems ya se encarga de darle un GID correlativo y un RID automticamente. Por ejemplo smbldap-groupadd -a contabilidad nos dar el mismo resultado que con ldapadd pero sin tener que especificar todos los parmetros que son necesarios, basta con el nombre del grupo. De la misma forma podemos crear un usuario nuevo con smbldap-useradd -a -G contabilidad tomeu y asignarle una contrasea con smbldap-passwd tomeu. Es necesario que una vez hecho el cambio a OpenLDAP volver a unir el equipo que hemos utilizado anteriormente al dominio de la misma manera que hemos hecho anteriormente, con la diferencia de que cuando nos pregunte por la cuenta que tenga privilegios para unirse al dominio usaremos la cuenta que ha creado la utilidad smbldap-populate, la de administrador con su contrasea correspondiente.
www.lpmagazine.org
41