OpenLDAP en Ubuntu 7.10 – Parte I

Para la buena organizacion empresarial, tanto de usuario, como de grupos y demás, se utiliza el directorio activo de Microsoft, tambien llamado Microsoft Acitve Directory (en ingles suena mejor ;))

¿Que problema tenemos? Pues como todos los productos de microsoft, EL PRECIO. Un Microsoft Windows Server 2003 o 2008 ronda los 700€. Para una empresa grande esta muy bien, pero para el usuario normal, que necesita tener un LDAP para pruebas de acceso o de carpetas compartidas con usuario y contraseñas en un dominio… 700???

Como usuario necesitaba un LDAP gratuito y funcional para los Escritorios Virtuales (solo Verde, Ulteo y Kaviza admiten OpenLDap, tanto Citrix como Red Hat como VMware View, requieren por fuerza Active Directory)

Os digo que es un manual largo y de complejidad media, pero también es verdad que de los cobardes no se dice nada😉

Que vamos a usar:

– Maquina Virtual con Ubuntu Server 7.10 Gutsy Gibbon (Descargar de aquí)

– Nombre de Host de la maquina: dc1-ubuntu.labsvv2.local (definir en la instalación)

– Dominio que queremos: labsvv2.local

– Usuario administrador: root

– Password de Root: 12345

En otro post os comento como instalar un Ubuntu Server en una máquina virtual de VMware, aunque las versiones sean diferentes, el manual sirve 100%.

Lo primero es configurar el nombre de la maquina a “dc1-ubuntu.labsvv2.local

sudo -i  

nano /etc/hosts 

En caso de que no esté,  añadimos  la siguiente linea al final del fichero:

127.0.0.1 dc1-ubuntu.labsvv2.local dc1-ubuntu 

Tambien tenemos que modificar el fichero /etc/hostname

nano /etc/hostanme

Modificamos la linea que aparece y ponemos el nombre de nuestra maquina dc1-ubuntu.labsvv2.local 

De forma que cuando hagamos un ping a  dc1-ubuntu.labsvv2.local

ping   dc1-ubuntu.labsvv2.local

Si obtenemos esta respuesta vamos bien

Si obtenemos otra respuesta, lo mejor es reiniciar el equipo para que los cambios surtan efecto, usando el comando: reboot


CONFIGURAMOS REPOSITORIOS

Ahora configuramos los repositorios. Primero vamos a hacer el backup.

 cp /etc/apt/sources.list /etc/apt/sources.list.original

Vamos a comentar de source.list los repos del CD-ROM y a descomentar los repositorios Extra, teniendo en cuenta que tenemos que cambiar de es.archive a old-releases

 #

# deb cdrom:[Ubuntu-Server 7.10 _Gutsy Gibbon_ – Release i386 (20071016)]/ gutsy main restricted

 #deb cdrom:[Ubuntu-Server 7.10 _Gutsy Gibbon_ – Release i386 (20071016)]/ gutsy main restricted

# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to

# newer versions of the distribution.

 

deb http://old-releases.ubuntu.com/ubuntu/ gutsy main restricted

deb-src http://old-releases.ubuntu.com/ubuntu/ gutsy main restricted

 

## Major bug fix updates produced after the final release of the

## distribution.

deb http://old-releases.ubuntu.com/ubuntu/ gutsy-updates main restricted

deb-src http://old-releases.ubuntu.com/ubuntu/ gutsy-updates main restricted

 

## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu

## team, and may not be under a free licence. Please satisfy yourself as to

## your rights to use the software. Also, please note that software in

## universe WILL NOT receive any review or updates from the Ubuntu security

## team.

deb http://old-releases.ubuntu.com/ubuntu/ gutsy universe

deb-src http://old-releases.ubuntu.com/ubuntu/ gutsy universe

deb http://old-releases.ubuntu.com/ubuntu/ gutsy-updates universe

deb-src http://old-releases.ubuntu.com/ubuntu/ gutsy-updates universe

 

## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu

## team, and may not be under a free licence. Please satisfy yourself as to

## your rights to use the software. Also, please note that software in

## multiverse WILL NOT receive any review or updates from the Ubuntu

## security team.

deb http://old-releases.ubuntu.com/ubuntu/ gutsy multiverse

deb-src http://old-releases.ubuntu.com/ubuntu/ gutsy multiverse

deb http://old-releases.ubuntu.com/ubuntu/ gutsy-updates multiverse

deb-src http://old-releases.ubuntu.com/ubuntu/ gutsy-updates multiverse

 

## Uncomment the following two lines to add software from the ‘backports’

## repository.

## N.B. software from this repository may not have been tested as

## extensively as that contained in the main release, although it includes

## newer versions of some applications which may provide useful features.

## Also, please note that software in backports WILL NOT receive any review

## or updates from the Ubuntu security team.

deb http://old-releases.ubuntu.com/ubuntu/ gutsy-backports main restricted universe multiverse

deb-src http://old-releases.ubuntu.com/ubuntu/ gutsy-backports main restricted universe multiverse

 

## Uncomment the following two lines to add software from Canonical’s

## ‘partner’ repository. This software is not part of Ubuntu, but is

## offered by Canonical and the respective vendors as a service to Ubuntu

## users.

deb http://archive.canonical.com/ubuntu gutsy partner

deb-src http://archive.canonical.com/ubuntu gutsy partner

 

#deb http://security.ubuntu.com/ubuntu gutsy-security main restricted

#deb-src http://security.ubuntu.com/ubuntu gutsy-security main restricted

#deb http://security.ubuntu.com/ubuntu gutsy-security universe

#deb-src http://security.ubuntu.com/ubuntu gutsy-security universe

#deb http://security.ubuntu.com/ubuntu gutsy-security multiverse

ACTUALIZAMOS

Bien, ya tenemos nuestros repositorios  ahora tenemos que recargarlos y actualizar el sistema entero:

 apt-get update

 apt-get upgrade

INSTALAMOS SERVICIO OPENSSH 

Instalamos OpenSSH Server en la maquina, para ello vamos a definir a la misma una IP estática, para que la maquina tenga siempre esa dirección, nosotros le vamos a poner la 10.0.144.92.

Editamos el fichero /etc/network/interfaces 

nano   /etc/network/interfaces 

 Lo editamos para que resulte así:

# This file describes the network interfaces available on your system

# and how to activate them. For more information, see interfaces(5).  

# The loopback network interface auto lo iface lo inet loopback

 # The primary network interface

auto eth0

#iface eth0 inet dhcp

                 iface eth0 inet static        

                address 10.0.144.92        

                netmask 255.255.255.0        

                gateway 10.0.144.254

Reiniciamos la maquina para que los cambios surjan efecto:

reboot 

INSTALAMOS EL SERVIDOR DE TIEMPO EXTERNO 

Para los temas de password es VITAL la sincronización de horas, ya que unos minutos de diferencias pueden hacer que el usuario con una clave valida no se autentifique jamas.

Por ello, vamos a instalar un servicio llamado NTP (network time protocol), que sincronizará la hora del servidor con un servidor de tiempo.

apt-get install ntp

Una vez que se haya instalado, le vamos a indicar la dirección del servidor de tiempo (nosotros vamos a usar ntp.ubuntu.com y pool.ntp.org).

Editamos el fichero /etc/ntp.conf 

nano /etc/ntp.conf

En rojo pongo los cambios que he realizado

# /etc/ntp.conf, configuration for ntpd

 driftfile /var/lib/ntp/ntp.drift

 # Enable this if you want statistics to be logged.

#statsdir /var/log/ntpstats/

 statistics loopstats peerstats clockstats

filegen loopstats file loopstats type day enable

filegen peerstats file peerstats type day enable

filegen clockstats file clockstats type day enable

  

# You do need to talk to an NTP server or two (or three).

server ntp.ubuntu.com

server pool.ntp.org

 

# By default, exchange time with everybody, but don’t allow configuration.

# See /usr/share/doc/ntp-doc/html/accopt.html for details.

restrict -4 default kod notrap nomodify nopeer noquery

restrict -6 default kod notrap nomodify nopeer noquery

 

# Local users may interrogate the ntp server more closely.

restrict 127.0.0.1

restrict ::1

 

# Clients from this (example!) subnet have unlimited access,

# but only if cryptographically authenticated

#restrict 192.168.123.0  mask  255.255.255.0 notrust

 

# If you want to provide time to your local subnet, change the next line.

# (Again, the address is an example only.)

#broadcast 192.168.123.255

 

# If you want to listen to time broadcasts on your local subnet,

# de-comment the next lines. Please do this only if you trust everybody

# on the network!

#disable auth

#broadcastclient

Reiniciamos de nuevo la maquina para que los cambios surjan efecto: reboot

CONFIGURACIÓN DEL DIRECTORIO PARA LOS DATOS DE LDAP Y DE LOS DIRECTORIOS DE LOS HOME DE LOS USUARIOS

Vamos a crear dos directorios, uno para los datos de configuracion de openldap y el segundo para los directorios home de los usuarios.

mkdir /ldap_data   

mkdir /ldaphome

INSTALACIÓN DE OpenLDAP

Vamos a instalar OpenLDAP  y una serie de herramientas, desde los repos:

apt-get install slapd ldap-utils migrationtools

 Durante el proceso de instalación, se nos preguntará para que pongamos un password al usuario “Admin” y que lo confirmemos:

Admin password: 12345

Confirm password: 12345

 Vamos a reconfigurar OpenLDAP para ajustarlo a nuestras necesidades:

dpkg-reconfigure slapd 

Se nos harán diferentes preguntas. A continuacion pongo las respuestas que yo he usado:

  No

DNS domain name: labsvv2.local

Name of your organization:labsvv2.local

Admin password: 12345

Confirm password: 12345

OK

BDB

No

Yes

No 

INSTALACIÓN DE SAMBA

Vamos a instalar SAMBA para que los usuarios de equipos windows puedan participar en nuestro dominio. Por supuesto para compartir ficheros…

Si tu red solo va a estar formada por equipos Linux, puedes saltarte este paso, o si quieres otro equipo tenga la funcion de servidor de ficheros con SAMBA, igualmente lo saltas o lo configuras en el otro equipo.

Nosotros si queremos que nuestro dominio pueda tener tanto usuarios de windows como usuarios de linux, con lo que vamos a configurar SAMBA en el servidor:

apt-get install samba smbldap-tools smbclient samba-doc 

 CONFIGURACIÓN DE OpenLDAP PARA USAR SAMBA

 Por defecto, OpenLDAP no esta configurado para usar SAMBA, así que tenemos que modificar algunas configuraciones para hacerlo posible.

Primero copiamos el fichero de eschema de samba en la localizacion correcta, y lo descomprimimos:

 cp /usr/share/doc/samba-doc/examples/LDAP/samba.schema.gz /etc/ldap/schema/

gzip -d /etc/ldap/schema/samba.schema.gz

Ahora editamos el f ichero de configuración de OpenLDAP para configurar samba:

nano /etc/ldap/sldap.conf

Buscamos en el fichero las lineas que comienzan con “include” y añadimos al final de las mismas, estas dos:

 include         /etc/ldap/schema/samba.schema

include         /etc/ldap/schema/misc.schema

 

En el mismo fichero antes de salir, buscamos la cadena

access to attribute=userPassword,shadowLastChange

y la cambiamos por

access to attrs=userPassword,shadowLastChange,sambaNTPassword,sambaLMPassword

 

Ahora ya podemos o bien reiniciar el equipo:

reboot

o bien reiniciar el servicio:

/etc/init.d/slapd restart 

CONFIGURAMOS SAMBA

Este paso puede resultar un poco complicado, así que, por favor, asegurate de leerlo bien y comprenderlo para saber que queremos hacer. Solo tenemos que editar el fichero /etc/samba/smb.conf. En el se configuran los parametros de nuestro dominio: el nombre, como trabaja con LDAP, etc…

Primero vamos a hacer un backup del fichero, por si tenemos que dar marcha atrás.

cd /etc/samba

cp smb.conf smb.conf.original 

 Ok, vamos a comenzar a editarlo:

nano /etc/samba/smb.conf 

Lo siguiente es guscar cada una de las siguientes variables dentro del fichero y editarlas, para que queden como sigue:

workgroup = labsvv2

 

security = user

 

passdb backend = ldapsam:ldap://localhost/

 obey pam restrictions = no

Ahora copia tal cual las siguientes lineas, despues del parametro “obey pam restrictions = no”

#######################################################################

#COPY AND PASTE THE FOLLOWING UNDERNEATH “OBEY PAM RESTRICTIONS = NO”

#######################################################################

#

#                     Begin: Custom LDAP Entries

#

ldap admin dn = cn=admin,dc=labsvv2,dc=local

ldap suffix = dc=labsvv2, dc=local

ldap group suffix = ou=Groups

ldap user suffix = ou=Users

ldap machine suffix = ou=Computers

ldap idmap suffix = ou=Users

; Do ldap passwd sync

ldap passwd sync = Yes

passwd program = /usr/sbin/smbldap-passwd %u

passwd chat = *New*password* %n\n *Retype*new*password* %n\n *all*authentication*tokens*updated*

add user script = /usr/sbin/smbldap-useradd -m “%u”

ldap delete dn = Yes

delete user script = /usr/sbin/smbldap-userdel “%u”

add machine script = /usr/sbin/smbldap-useradd -w “%u”

add group script = /usr/sbin/smbldap-groupadd -p “%g”

delete group script = /usr/sbin/smbldap-groupdel “%g”

add user to group script = /usr/sbin/smbldap-groupmod -m “%u” “%g”

delete user from group script = /usr/sbin/smbldap-groupmod -x “%u” “%g”

set primary group script = /usr/sbin/smbldap-usermod -g “%g” “%u”

domain logons = yes

#

#                     End: Custom LDAP Entries

#

#####################################################

#STOP COPYING HERE!

#####################################################

 Estas configuraciones anteriores, tenemos que ajustarla, a nuestro nombre de dominio, por ejemplo, si nuestro dominio fuera periquito.palotes.dos, el parametro  “ldap suffix”, seria “ldap suffix = dc=periquito, dc=palotes,dc=dos”

El siguiente paso es FUNDAMENTAL, ya que si no lo modificamos, no podremos meter nada en nuestro dominio. Debemos comentar las siguientes lineas:

invalid users=root

a

; invalid user=root

Y añadimos la linea, para deshabilitar los perfiles moviles de Windows

logon path = 

Reiniciamos los servicios de Samba

/etc/init.d/samba restart

Una vez reiniciado el servicio, es muy imporatante tenemos que darle a SAMBA el password del usuario “admin” de OpenLDAP.

Nota: Cada vez que cambiemos el password a “admin” en OpenLDAP, tenemos que ejecutar el comando y meter el passowrd nuevo, sino no habrá comunicación entre SAMBA y OpenLDAP.

 smbpasswd -w 12345

De nuevo para que todo funcione bien, reiniciamos la máquina: reboot

CONFIGURACIÓN DEL PAQUETE SMBLDAP-TOOLS

 El paquete smbldap-tools es uno de los mas importantes que vamos a configurar. Son una colección de scripts que me permitirán añadir usuarios, grupos y equipos a mi directorio LDAP. Por eso, requiere que lo configuremos con calma. Generalmente todos los errores posteriores que suframos se deberán a que no hemos configurado correctamente este fichero. Así que despacito.

Nos vamos al directorio:

cd /usr/share/doc/smbldap-tools/examples 

Copiamos los ficheros de configuración al directorio correcto y los descomprimimos:

cp smbldap_bind.conf /etc/smbldap-tools/

cp smbldap.conf.gz /etc/smbldap-tools/

gzip -d /etc/smbldap-tools/smbldap.conf.gz

Nos vamos al directorio de smbldap-tools

cd /etc/smbldap-tools/

 Ahora vamos a conseguir lo que se llama Security ID (SID) para nuestro dominio SAMBA. Cuando ejecutemos el comando se nos mostrará en pantalla una cadena de muchos digitos que debemos copiar, ya que lo usaremos más adelante.

net getlocalsid 

 

Vamos a editar el fichero smbldap.conf

nano /etc/smbldap-tools/smbldap.conf 

Igual que antes vamos buscando cada una de las variables y vamos modificandolo según nuestro dominio, SID…

SID=”S-1-5-21-3451600598-2642125782-1705815852″ ##

sambaDomain=”labsvv2″

ldapTLS=”0″

 

suffix=”dc=labsvv2,dc=local”

sambaUnixIdPooldn=”sambaDomainName=labsvv2,${suffix}” ## SE CUIDADOSO CON ESTO!!

userHome=”/ldaphome/%U” ##

userSmbHome=

userProfile=

userHomeDrive=

userScript=

mailDomain=”labsvv2.local”

 

Ya podemos guardar y salir.

Vamos al siguiente fichero de configuración: smbldap_bind.conf 

nano /etc/ smbldap-tools/smbldap_bind.conf

Lo editamos conforme a las caracteristicas de nuestra configuracion:

slaveDN=”cn=admin,dc=labsvv2,dc=local”

slavePw=”12345*”

masterDN=”cn=admin,dc=labsvv2,dc=local”

masterPw=”12345*”

Para finalizar tenemos que cambiar los permisos a los ficheros por seguridad:

 chmod 0644 /etc/smbldap-tools/smbldap.conf

chmod 0600 /etc/smbldap-tools/smbldap_bind.conf

POBLAMOS NUESTRO LDAP USANDO SMBLDAP-TOOLS

Este paso es muy interesante ya que cualquier error en pasos previos los veremos reflejados ahora.

Ejecutamos el comando:

smbldap-populate -u 30000 -g 30000

 Al lanzarlo se nos preguntará el passoword del usuario “admin”

 12345

 

Para comprobar que el dominio esta correcto, solo tenemos que lanzar esta consulta:

ldapsearch -x -b dc=labsvv2,dc=local | less 

Si obenemos una salida como la siguiente imagen,  todo habrá salido perfecto:

 

PERFECTO!! Ya tenemos nuestro OpenLDAP configurado para agregar usuarios y grupos y equipos… En la próxima entrada pondré información de como crear usuarios y meter en nuestro dominio, tanto máquinas Windows como Linux.

Saludos!