viernes, 26 de octubre de 2012
Administración de LDAP
LDAP
Servidor LDAP
LDAP - Lightweight Directory Access Protocol - o
protocolo ligero de acceso a directorios, es un protocolo de aplicación
utilizado para el acceso y mantenimiento de servicios de directorios
distribuidos en entornos de red. este tipo de servicio, también es
considerado como base de datos ya que se pueden realizar consultas sobre
la información contenida en él. Está organizado de manera jerárquica,
siendo el directorio un conjunto de objetos con atributos. Estos
objetos, pasan por ser desde nombres de dominio en sus niveles más altos
hasta usuarios, máquinas, cuentas de correo, unidades organizativas o
cualquier objeto representado en el árbol. Debido a que almacena datos
de usuarios y contraseñas, entre otras cosas, es un medio utilizado para
realizar autenticaciones a servicios.
Instalación
Para realizar la instalación sobre nuestro servidor Ubuntu Server, hemos de instalar los siguientes paquetes:sudo aptitude install slapd ldap-utils
slapd es el demonio usado por LDAP. Es autónomo, no necesita de otros programas ni librerías para su ejecución y es iniciado en el arranque del sistema operativo.
En el transcurso de la instalación únicamente nos pide una contraseña. Para esta práctica, usaremos ldapadmin.
Después de realizar la instalación configuramos el
servicio con la mínima configuración necesaria para que el servidor
LDAP, opere adecuadamente:
sudo dpkg-reconfigure slapd
sudo slaptest
Administración de LDAP
Versiones de LDAP
Es importante remarcar que, dependiendo de la versión
de LDAP, la manera de administrar el servidor varía. En versiones
anteriores, la realización de cambios en el servidor es realizada
modificando el fichero de configuración sladp.conf ubicado en /etc/ldap/slapd.conf.
LA modificacicón de este fichero implica la parada del servidor y
posterior reinicio del mismo. Esto, en sistemas de producción supone un
agravio. Por ello, este método ha sido modificado para que la
administración se pueda realizar en caliente. Para ello se ha dividido la configuración en dos partes; Una para la parte de administración y otra para los datos de la BD.
Administrar LDAP
Existen diversas maneras de administrar el servidor y la base de datos LDAP, tanto a nivel de terminal como gráfica, mediante el uso de aplicaciones web/gráficas.Modo terminal
Breve introducción de los comandos necesarios para la visualización del contenido de la base de datos y de la configuración del servidor, adición de información, esquemas, etcétera
Para realizar una búsqueda de la información relativa a la configuración:
sudo ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b cn=config dn
El comando ldapsearch muestra la información contenido en la base de datos, tanto para la configuración "cn=config",
como de los datos contenidos en la BD. Para poder visualizar el
contenido del DIT (Directory information tree) de configuración "cn=config" es necesario el uso del parámetro -Y ya que es necesaria la autenticación con SASL, e indicarle EXTERNAL para usar el método de autenticación propio del protocolo LDAP. -H indica la URI que en este caso es la raíz "///" y ldapi indica el "camino", ldap + IPC
dn: cn=config -> Configuración global dn: cn=module{0},cn=config -> Modulos dinámicos cargados. dn: cn=schema,cn=config -> Configuración del squema a nivel de sistema. dn: cn={0}core,cn=schema,cn=config -> Esquema del núcleo. dn: cn={1}cosine,cn=schema,cn=config -> Esquemas de LDAP. dn: cn={2}nis,cn=schema,cn=config -> Esquema. dn: cn={3}inetorgperson,cn=schema,cn=config -> Esquema. dn: olcBackend={0}hdb,cn=config -> Configuración del "backend" de la base de datos. dn: olcDatabase={-1}frontend,cn=config -> Configuración del frontend de la base de datos.
dn: olcDatabase={0}config,cn=config -> Configuración de la base de datos del demonio slapd.
dn: olcDatabase={1}hdb,cn=config -> Configuración de la instancia de la base de datos.
Donde olc significa online configuration y {x} es la forma de ordenar las entradas
Para realizar una búsqueda dentro de una instancia creada por el usuario (2º DIT):
ldapsearch -x -LLL -H ldap:/// -b dc=miempresa,dc=com dn
Donde -x indica que no se realizará autenticación SASL, -LLL muestra la información más compactada,
-H la URI sin seguridad "ldap" y -b indica el punto de partida para
realizar la búsqueda por el directorio. Veamos el resultado para una BD
creada cuya entrada de más alto nivel es el nombre de dominio miempresa.com:
Para añadir objetos al árbol LDAP por línea de comandos, ha de crearse un tipo de fichero ldif. Para ello, hacemos lo siguiente:
sudo nano /var/tmp/newuser.ldif
Para evitar conflictos entre los usuarios unix locales y los creados en LDAP se sugiere asignar en el campo uidNumber un número por encima de 10000
Para crear un usuario debemos de tener ya creado con anterioridad un grupo posixGroup, para poder introducir el número posixNumber a nuestro usuario. En este caso ya existen varios grupos. Aquí se utiliza el grupo Domain Users, para ver que número tiene asignado este grupo:
ldapsearch -x -LLL -H ldap:/// -b dc=miempresa,dc=com 'cn=Domain Users'
Una vez creado el fichero ldif, introducimos el usuario al directorio con ldapadd:
ldapadd -x -D cn=admin,dc=miempresa,dc=com -W -f /var/tmp/newuser.ldif
Donde -D binddn indica el usuario con permisos
administrativos - admin es creado por defecto en la instalación - -W
para el password (ldapadmin) y -f para indicar el fichero que contiene
los datos a introducir
ldapsearch -x -LLL -H ldap:/// -b dc=miempresa,dc=com 'uid=daniel'
Esto es lo más básico para hacer búsquedas, añadir y
actualizar datos (ldapmodify). Si se pretende administrar LDAP mediante
consola es necesario aprender a manejar estos comandos y otros muchos
correctamente. Para más información, consultar openldap.org y los man de los comandos, ldapadduser, ldapaddgroup, ldapmodify, ldapadd y otros.
Modo gráfico
Creando Objetos
El hecho de administrar la base de datos por consola
de comandos, puede parecer una ardua tarea. Para ello hay disponibles
diversas utilidades gráficas que simplifican este proceso. En esta
práctica vamos a utilizar una de ellas: PHPLdapAdmin. Para realizar la instalación, introducimos esto en una terminal:
sudo aptitude install phpldapadmin
Una vez instalada la aplicación es necesario la modificación de su fichero de configuración:
sudo nano /etc/phpldapadmin/config.php
En la línea 300 y 326 (Si no se ha modificado config.php) debemos modificar el DN de primer nivel que por defecto es dc=example,dc=com y dn=admin,dc=example,dc=com por los valores que correspondan a nuestra configuración. En este caso es dc=miempresa,dc=com.
Como el servidor no dispone de entorno gráfico y
PHPLdapAdmin es un cliente web, accederemos a él desde otro sistema
cliente. Para conectar al servidor podemos usar OpenSSH. Si no lo
tenemos instalado, ejecutamos el siguiente comando:
sudo aptitude install openssh-server
De este modo podemos acceder vía web a PHPLdapAdmin y
abrir una terminal remota en el servidor para realizar las operaciones
necesarias desde el sistema ciente. Para conectar a la base de datos
desde el navegador web, introducimos en la barra de dirección la ip -
nombre del servidor (si tenemos un servidor DNS activo)/phpldapadmin:
Nos conectamos con el usuario admin y la contraseña ldapadmin.
Aquí podemos ver el árbol del directorio LDAP. Hay
varios grupos que han sido creados con el comando smbldap-populate que
no es más que poblar el directorio con los grupos predefinidos
del controlador de dominio SAMBA. Si el directorio está vacio, lo normal
cuando solo se instala ldap, se debe de crear, al menos un grupo posix ya que necesitamos al menos un gidNumber. Esto es, es necesario añadir el nuevo usuario a un grupo. En este caso se añade al grupo Domain Users. Los sub-árboles ou
son unidades organizativas que como su nombre indica, ayudan a
organizar el directorio. Por ejemplo, Users, Computers, groups, son
unidades organizativas. Dando por hecho que hemos creado un grupo posix y
tenemos una OU, por ejemplo Users, seleccionamos la OU y añadimos
nuevos objetos en ella. En el menú contextual seleccionamos crear objeto hijo y genérico: cuenta de usuario.
Ahora tenemos que rellenar los campos - al menos los obligatorios - y clicar en crear cuenta.
Es necesario modificar al menos el uidNumber para que comience de un número superior a 10000. Pulsamos en actualizar objeto
Autenticación LDAP
Hemos creado usuarios en LDAP. Esto nos posibilita poder hacer login con ellos desde distintos clientes. Para que un cliente Ubuntu pueda logearse es necesaria la instalación de varios paquetes:
sudo apt-get install ldap-auth-client nscd
Debemos modificar el fichero nsswitch.conf para añadir la base de datos de LDAP.
sudo auth-client-config -t nss -p lac_ldap
También es interesante la creación de los directorios personales de forma automática. Para ello, editamos el fichero /etc/pam.d/common-session:
sudo nano /etc/pam.d/common-session
Agregamos la siguiente línea comprobando que figure antes de cualquier entrada pam_ldap y pam_krb5.
session required pam_mkhomedir.so umask=0022 skel=/etc/skel
Solo queda ejecutar el siguiente comando para aplicar las modificaciones:
sudo pam-auth-update
Reiniciamos el proceso nscd para poder autenticarnos con los usuarios de LDAP.
/etc/init.d/nscd restart
Configuración básica Ubuntu Server 12.04
Configuración básica
Configuración de red
Si no has configurado la red en el transcurso de la instalación (paso omitido), es hora de realizar los cambios pertinentes. Para ello, editaremos el fichero interfaces y configuraremos la tarjeta de red:ifconfig -> para ver cual es nuestra interfaz (ethx)
Si no podemos ver la interfaz es posible que esté "down". Hacemos lo siguiente:
ifconfig -a -> lista las interfaces (todas)
ifconfig ethx up -> Levantamos la interfaz.
sudo nano /etc/network/interfaces
Añadimos la configuración de red: auto ethx -Esto variará en función de tu red-
iface ethx inet static
address 192.168.1.2
netmask 255.255.255.0
broadcast 192.168.1.255
network 192.168.1.0
gateway 192.168.1.1
Reiniciamos la interfaz
sudo service networking restart
Actualización del sistema base
Antes de realizar nada, es recomendable la actuailización del sistema a la última versión. Para ello, desde el terminal ejecutaremos: sudo -i
aptitude update && aptitude full-upgrade && aptitude safe-upgrade
Instalación de un entorno gráfico liviano
Un servidor no necesita necesariamente de un entorno
gráfico para trabajar, pero es posible que vayamos a usar servicios del
estilo webadmin que requieren de un navegador. Para no coartar el
funcionamiento del servidor, que es dar servicios a la red, y dado que
el servidor puede ser de recursos limitados, instalaremos un gestor de
ventanas ligero. Existen una gran variedad de ellos, como fluxbox, lxde
(bastante completo), e17, blackbox, awesome etc. Nosotros en este caso
en particular y sin menosprecio del resto, instalaremos Openbox. Para
que el inicio sea automático, instalaremos un display manager. Entre los
más ligeros tenemos xdm y slim. Incluso podríamos pasar si él, solo
necesitaremos instalar xinit. -Si "startx" no corre automáticamente.
Para instalar esto, hacemos lo siguiente:sudo aptitude install xorg slim openbox obconf
Esto ya nos permite instalar un gestor de ficheros como nautilus, thunar etc. Además de un navegador web. Si este entorno no te resulta amigable, podemos configurarlo copiando el archivo de configuración menu.xml a nuestro directorio de usuario y editarlo:
cp /etc/xdg/openbox/menu.xml $HOME/.config/openbox/menu.xml
Tenemos aplicaciones para facilitar esto, instalaremos menumaker feh y tint2 para dejar un escritorio un poco más completo.
sudo wget "http://sourceforge.net/projects/menumaker/files/latest/download" -O menumaker.tar.gz sudo wget "url de una imagen" -O image.ext (extensión) sudo aptitude install feh tint2
Desempaquetamos menumaker y lo ejecutamos:
tar xzvf menumaker.tar.gz
menumaker es una aplicación que lista las aplicaciones y genera un menú contextual. Para ello nos dirigimos al directorio de la aplicación
cd menumaker.(version)
./mmaker OpenBox3
Para poner un fondo de escritorio utilizaremos feh. Para ello tipeamos en el terminal:
feh --bg-scale /ruta/de/la/imagen/image.ext
Ahora hacemos que todo se cargue al inicio:
nano ~/.config/openbox/autostart.sh
Modificamos el script con esto:
#!/bin/sh
# feh stores the last background in .fehbg
eval `cat $HOME/.fehbg` &
tint2 &
if pgrep tint2
then exec openbox
else tint2 && exec openbox
fi
Reiniciamos y comprobamos que todo se carga al inicio.
hostname & hosts
Para cambiar el nombre del equipo debemos editar los archivos "hostname" y "hosts" situados en el directorio /etc.
sudo nano /etc/hostname
Cambiamos el nombre del equipo por servidorLDAP - o lo que creamos conveniente -.
Si nuestra máquina es parte de un dominio u ofrece algún servicio como LDAP, debemos editar el fichero hosts. Si nuestro domino es "midominio.org", añadimos la siguiente línea:
sudo nano /etc/hosts
servidorLDAP.midominio.org -> hostname.domain servidorLDAP -> alias
Ejemplo de fichero "hosts"
Editaremos la línea "127.0.1.1" y guardamos
Para comprobar que los cambios se han realizado correctamente tipearemos los siguientes comandos:
hostname -s -> Debe devolver el nombre de la máquina.
hostname -d -> Debe devolver el nombre del dominio.
hostname -f -> Devolverá el nombre completo.
Suscribirse a:
Entradas (Atom)