lunes, 13 de agosto de 2012

Servidor centralizado de Log's (Loganalyzer)


Syslog es un estándar de facto para el envío de mensajes de registro en una red informática IP. Por syslog se conoce tanto al protocolo de red como a la aplicación o biblioteca que envía los mensajes de registro.

Un mensaje de registro suele tener información sobre la seguridad del sistema, aunque puede contener cualquier información. Junto con cada mensaje se incluye la fecha y hora del envío.

El protocolo syslog es muy sencillo: existe un ordenador servidor ejecutando el servidor de syslog, conocido como syslogd (demonio de syslog). El cliente envía un pequeño mensaje de texto (de menos de 1024 bytes).

Los mensajes de syslog son enviados vía UDP,
por el puerto 514, en formato de texto plano.

6.1. INSTALACIÓN DEL SERVIDOR

Primeramente para el correcto funcionamiento de LogAnalizer, es necesario comprobar que los servicios: Web con soporte PHP, MySQL y Apache esten funcionando correctamente o en su defecto instalarlos, ya que LogAnalizer trabajar en un entorno web:

# apt-get install apache2-mpm-prefork mysql-server mysql-admin php5 php5-mysql php5-gd php5-mcrypt php5-imagick

6.1.1. INSTALACIÓN DEL SERVICIO RSYSLOG

Comprobados los servicios indicados anteriormente, se procede a instalar el servicio rsyslog con soporte para bases de datos MySQL y para el protocolo RELP (Reliable Event Logging Protocol:

# apt-get install rsyslog-mysql rsyslog-relp

6.1.2. CONFIGURACIÓN DEL SERVICIO RSYSLOG

El primero paso será aceptar los mensajes syslog por el puerto 514 tanto TCP como UDP, lo cual será necesario para mantener la compatibilidad con la mayoría de los dispositivos de red que emplean o pueden utilizar un servidor centralizado de logs. Para ello, se debe descomentar las siguientes lineas en el archivo /etc/rsyslog.conf
#provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514

# provides TCP syslog reception
$ModLoad imtcp
$InputTCPServerRun 514

El segundo paso será habilitar el soporte para el protocolo RELP. Este protocolo se encarga de transmitir y recibir registros syslog por la red de forma más segura que a través de TCP. Para ello, se debe crear el archivo /etc/rsyslog.d/relp.conf con la siguiente información:

$ModLoad imrelp
$InputRELPServerRun 10514

El tercer paso consiste en asegurar la viabilidad del servidor centralizado de logs creando un sistema de buffering ya que deberá asumir una gran cantidad de datos de syslog a la base de datos. Para ello, lo primero que se debe realizar es crear un directorio donde se almacenarán los archivos en cola que sean necesarios:

# mkdir -p /var/rsyslog/queue

Posteriormente, se debe añadir al final archivo /etc/rsyslog.conf, las siguientes líneas:

# Sistema de buffering:
$WorkDirectory /var/rsyslog/queue # directorio por defecto de los ficheros encolados
$ActionQueueType LinkedList # usar proceso asincrono
$ActionQueueFileName dbq ; # establece el nombre de fichero y tambien activa el modo disco
$ActionResumeRetryCount -1 ; # reintentos infinitos en caso de fallo de insercion

Una vez guardados los cambios, reiniciar el servicio de syslog:

# /etc/init.d/rsyslog restart


6.2. INSTALACIÓN DEL PAQUETE LogAnalyzer

Ahora se procederá a instalar el software que permitirá ver los datos almacenados en la base de datos vía Web, desde cualquier equipo de la red. Para ello, lo primero que se hará es bajar el software, descomprimirlo y copialo al directorio donde se aloja el servidor web.

# wget http://download.adiscon.com/loganalyzer/loganalyzer-3.4.4.tar.gz

# tar xvzf loganalyzer-3.4.4.tar.gz

# cd loganalyzer-3.4.4
# mkdir /var/www/logs
# cp -R src/* /var/www/logs/
# cp contrib/* /var/www/logs/
# cd /var/www/logs/

Ahora se procederá a asignar atributos de ejecución a 2 scripts que vienen en el paquete y posterior a ejecutar uno de ellos:

# chmod +x configure.sh secure.sh
# ./configure.sh

Para activar la autenticación del software LogAnalyzer, se necesita crear una base de datos vacía para almacenar los usuarios y sus privilegios. Se puede indicar cualquier nombre para la base de datos. Para este tutorial, se usará el nombre Usuarios_LogAnalyzer y el usuario admin con la contraseña 123456. Entonces para crear la base, ejecutar las siguientes instrucciones:

# mysql -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g. 
Your MySQL connection id is 37 
Server version: 5.1.63-0+squeeze1 (Debian) 

Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved. 

Oracle is a registered trademark of Oracle Corporation and/or its 
affiliates. Other names may be trademarks of their respective 
owners. cd ..cd s

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. 

mysql> 

Una vez que se ha conectado al servidor mysql, se procede a crear la base de datos

mysql> create database Usuarios_LogAnalyzer;
mysql> grant all on Usuarios_LogAnalyzer.* to root@'localhost' identified by '123456';

6.3. CONFIGURACIÓN DE LogAnalyzer

Para configurar el software, se debe abrir en un navegador de internet y escribir la siguiente URL: http://xxx.xxx.xxx.xxx/logs/install.php
Ahora se explicarán las opciones a configurar más destacables en el asistente de configuración.
  • Message character limit for the main view = 80 (default)
Cambiarlo a 0 para que aparezca el mensaje entero.
  • Enable the user database.
Al habilitar, aparecen nuevos campos a los que se debe llenar con los siguientes datos:
Server: localhost
Port: 3306
Name: Usuarios_LogAnalyzer
User: root
Pass: ******
En el siguiente paso, se creará las tablas y datos necesarios.
  • Se ha de crear por defecto el usuario administrador del software así que se recomienda que se tenga cuidado con los datos que se configuran ya que es imprescindible para gestionarlo.
  • En el paso de la configuración de la base de datos de logs
Name: Cualquier nombre “Server Log”
Source Type = MYSQL Native
Select View = Syslog Fields
Table type = MonitorWare
Database Host = localhost
Database Name = Syslog
Database Tablename = SystemEvents
Database User = rsyslog
Database Pass = (La password anterior ******)
Enable Row Counting = no



Si todo se ha hecho bien, se verá los registros del servidor centralizado de logs.

6.4. CONFIGURACIÓN DE CLIENTES PARA ENVÍO DE LOGS AL SERVIDOR CENTRALIZADO

A la hora de configurar los clientes que van a enviar los logs al servidor central, únicamente se tiene que especificar qué logs van a ir al servidor central, esto se lo hace en el archivo de configuración /etc/syslog.conf
Una línea estandar es esta por ejemplo, en la que se envía a /var/log/messages los logs de cron, info, mail, etc:

*.info;mail.none;authpriv.none;cron.none                /var/log/messages

Para que estos logs se dejen de almacenar en el log local y pasen al remoto, únicamente hay que indicar con @ el hostname/ip del servidor syslogd. Si por ejemplo el servidor syslogd tiene el hostname syslogd01:
*.info;mail.none;authpriv.none;cron.none             @syslogd01

Reinicar syslogd y automáticamente se comenzarán a enviar los logs al servidor centralizado:

# /etc/init.d/syslogd restart

Copias de seguridad (Backuppc)



Existen varias soluciones para Sistemas de Respaldo de archivos en red, para lo cual, se ha escogido a Backup por tratarse de un Sistema empresarial de alto rendimiento para realizar backups de PCs bajo Linux con Interfaz Gŕafica. BackupPC es un software que permitire hacer copias de seguridad automáticas de todos los equipos que hayan en la red local. Está pensado para ser instalado en un servidor que, idealmente, se dedicaría solo a eso, aunque no es imprescindible.

5.1. RESPALDAR COPIAS DE SEGURIDAD CON BACKUPPC

BackupPC funciona a través de los protocolos SMB y SSH+rsync. Desde este servidor accederá al resto de equipos de la red cuando sea necesario para realizar las copias de seguridad. Gracias al uso de compresión ya que no guarda los ficheros iguales más de una vez se consigue reducir bastante el espacio necesario en disco para almacenar todos los datos.

El proceso de copia se realiza a través de una clave de cifrado y previa autentificación del usuario de acceso al servicio a través de una clave privada, lo que le garantiza que la información se almacena de forma segura y no es accesible más que por el usuario del servicio.

Para instalar backuppc, se debe ejecutar la siguiente instrucción:

# apt-get install backuppc

Entonces con la instrucción anterior, se instalará Backuppc y todas sus dependencias incluyendo el servidor Apache.

Los respaldos del equipo host, se realizan a través de el comando rsync en combinación con el comando ssh, desde el servidor que aloja a Backuppc. Para poder realizar cualquier operación es necesario generar una firma digital (id_dsa.pub), sin clave de acceso, para el usuario backuppc del servidor que hospeda BackupPC, la cual se copia en la cuenta del usuario root del equipo remoto a respaldar, en el archivo ~/.ssh/authorized_keys2, archivo que deberá tener permisos de solo lectura para el usuario propietario, para lo cual se debe cambiar al usuario backuppc especificando /bin/bash como shell.

# su -s /bin//bash backuppc

Luego, cambiar (o crear si no está creado) al directorio .ssh alojado en el home del usuario bakuppc, y generar la firma digital utilizando el siguiente comando:

$ ssh-keygen -t dsa

Cuando se solicite una clave de acceso o passphrase, simplemente dar un ENTER para dejarla en blanco. Un ejemplo de la salida al ejecutar el comando anterior podría ser la siguiente:

Generating public/private dsa key pair.
Enter file in which to save the key (/var/lib/backuppc/.ssh/id_dsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /var/lib/backuppc/.ssh/id_dsa.
Your public key has been saved in /var/lib/backuppc/.ssh/id_dsa.pub.
The key fingerprint is:
2c:73:30:fe:52:21:a5:82:78:49:57:cd:37:af:36:df backuppc@servidor

Luego, se debe copiar la clave generada en el archivo id_dsa.pub del servidor de backuppc en el directorio .ssh del usuario root del equipo host a respaldar, al archivo authorized_keys2. Suponiendo que el directorio /root/.ssh del equipo host ya existe, entonces se procede a copiar la clave pública:

# scp id_dsa.pub root@host:/root/.ssh

Luego, concatenar el contenido de id_dsa.pub en authorized_keys2, para lo cual, acceder al equipo host a respaldar.

ssh root@xxx.xxx.xxx.xxx
root@xxx.xxx.xxx.xxx's password: 
Linux host 2.6.32-5-xen-amd64 #1 SMP Sun May 6 08:57:29 UTC 2012 x86_64 

The programs included with the Debian GNU/Linux system are free software; 
the exact distribution terms for each program are described in the 
individual files in /usr/share/doc/*/copyright. 

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent 
permitted by applicable law. 
Last login: Thu Jul  5 10:34:26 2012 from 172.16.1.135 
root@host:~# cat ~/.ssh/id_dsa.pub > ~/.ssh/authorized_keys2

A partir de este punto, solo bastará seleccionar al equipo host o remoto a respaldar desde la interfaz de administración de BackupPC e iniciar un primer respaldo haciendo clic en el botón Comenzar copia de seguridad completa.

Para comenzar con la administración del servidor Backuppc en un entorno gráfico, ingresar con cualquier navegador hacia http://server.backuppc/backuppC, (donde server.backuppc es el nombre del servidor donde se instaló el paquete backuppc) o bien con su IP, y autenticar como el usuario backuppc. Hacer clic en Edit hosts (Editar anfitriones) e ingresar algunas direcciones IP de los equipos a respaldar.


Desde la interfaz de administración de BackupPC, editar la configuración del anfitrión remoto, seleccionando el HOST Linux a respladar en la parte izquierda, y confirmar que se ha definido como método “XferMethod” rsync. RSYNC es un sistema de respaldos incrementales minimizando el tráfico de datos. Básicamente rsync no copiara todos los datos o árbol de directorios cada vez que sincronice sino que copiara los archivos modificados del origen conforme a su destino, hace esto mediante un algoritmo de sincronización de directorios. Estas transferencias o sincronizaciones se pueden realizar dentro del mismo disco duro (entre directorios locales) o entre dispositivos en red utilizando protocolos TCP/IP.
Luego se deberá añadir los directorios del Host remoto que se desea respaldar en la sección “RsyncShareName”


Una vez añadido los directorios a respaldar y configurados los hosts, se debe reiniciar el servidor para aplicar los cambios, iendo a la opción Admin Options del Servidor Backuppc, y seleccionando el botón Reload:


Al terminar todo lo anterior, ya se puede iniciar el primer respaldo haciendo clic en la opción “host Home” del menú izuierdo y posterior a esto clic sobre el botón de Comenzar copia de seguridad completa. Si ocurren errores, éstos serán registrados y se mostrará un mensaje en la página principal del equipo, en la sección Host Summary del servidor Backuppc. Por lo general los errores más comunes se deben a nombre de usuario incorrecto, clave de acceso incorrecta o nombre de recurso incorrecto.




5.2. RESTAURAR COPIAS DE SEGURIDAD

Para restaurar las copias de seguridad, basta con seleccionar el Host en la lista de la parte izquierda, y seleccionar la opción Browse backups, una vez seleccionada la opción aparecerá en la parte derecha una lista en el punto 3, donde se puede escoger el backup de la fecha que se desea restaurar, previa selección de los archivos o directorios.


Una vez seleccionados los archivos o directorios a restaurar, solo basta con clicear el botón que se encuentra al final de la lista de archivos Restore selected files, y a continuación, se escoge el método a restaurar, que puede ser, la restauración directa de los archivos o directorios en el mismo equipo Host, o sino bajar los archivos/directorios a un archivo Zip o Tar para su posterior transporte en un dispositivo de almacenamiento.


Añadir leyenda





Establecimiento de cuotas de disco para usuarios (quota)


Las cuotas son utilizadas para limitar a usuarios o grupos de éstos el consumo de espacio en disco. Sin las cuotas, uno o más usuarios podrían subir archivos al servidor y ocupar todo el espacio libre dentro de su partición, una vez que tal espacio afectado esté lleno, otros usuarios ya no podrán accesar al disco. De hecho, ésta es también una de las razones por la que se aconseja hacer varias particiones del disco duro y montar diferentes directorios en ellas. Por ejemplo, si se cuenta sólo con una partición para el directorio raiz "/" y no se tuviera cuotas, un usuario podría saturar su directorio de usuario y al mismo tiempo, la partición completa para el sistema Al llegar a este punto, el sistema se vuelve inestable e incluso, podría resultar inaccesible para todo mundo incluído el superusuario.

Las cuotras pueden ser impuestas por inodos o por bloques de discos. Debido a que cada archivo del sistema requiere de un inodo, en caso de limitar con este criterio, lo que realmente se hace es controlar el número de archivos que un usuario puede alojar en su cuenta. Por otro lado, los bloques de discos se encuentran definidos por su tamaño, cada bloque de disco corresponde a un 1KB, entonces por ejemplo si se limitan 100.000 bloques, se estaría limitando 100 Mb. Así, al utilizar este último criterio lo que se hace es restringir la cantidad de espacio en disco al usuario.

Para poder utilizar cuotas, se requiere que el kernel del sistema las soporte. Para comprobar si el kernel del sistema actual soporta o no quotas, ejecutar la siguiente instrucción:
# cat /boot/config-`uname -r` |grep CONFIG_QUOTA
El sistema arrojará la siguiente respuesta:
CONFIG_QUOTA=y
CONFIG_QUOTACTL=y
CONFIG_QUOTA_NETLINK_INTERFACE=y


El "=y" indica que el kernel del sistema actual está configurado para soportar cuotas. En el caso de obtener una respuesta "=n", se debe reconfigurar el kernel y añadir este soporte.


En distribuciones como Debian y sus derivados, se debe instalar el paquete quota:

# apt-get install quota

El siguiente paso consiste en activar las cuotas en el archivo /etc/fstab. Este archivo es el que guarda la información sobre los dispositivos a montar y los respectivos puntos de montaje y en él se indican ciertas otras opciones (en la columna options), entre ellas activar las cuotas para usuario (usrquota) o para grupo (grpquota). Entonces, se procede a editar dicho archivo:

# nano /etc/fstab

Y agregar ,usrquota,grpquota seguido del último parámetro de la columna options en la partición que se desea establecer soporte para cuotas. Por ejemplo:

/dev/sda2 /home ext3 defaults,usrquota,grpquota 0 2

Cabe señalar que en el caso de que no se tenga una partición especial para /home, se debe añadir el usrquota o grpquota en el directorio raiz /.

Ahora, debemos remontar nuestra partición (o bien reiniciar el sistema), para ello basta un
# mount -o remount /home

Seguido de esto, crear el archivo aquota.user (o aquota.group) antes de poder activar las cuotas. Se lo puede hacer de la siguiente manera:

# quotacheck -fcugm /home

De este modo los archivos aquota.user y aquota.group son creados en el directorio configurado. Ahora es hora de especificar las cuotas, para ello se hace uso de la instrucción edquota, con lo que se abrirá un editor de texto y aparecerán los parámetros de quota del usuario indicado:

# edquota user1

Disk quotas for user user1 (uid 1001):
  Filesystem         blocks       soft       hard     inodes     soft     hard
  /dev/sda3          20000       25000       30000        20        0        0
Donde:

  • blocks : Indica la cantidad de bloques (recordando que cada bloque equivale a un 1 Kb) utilizados por el usuario en su carpeta /home.
  • soft : Este parámetro debe establecerce en bloques, que a la vez, es el que indica cuando se lanze una advertencia al usuario para indicarle que se está acercando al límite de cuota de disco establecido en hard.
  • hard : Cómo se indico anteriormente, este parámetro es el que establece (en bloques igualmente) el límite del usuario.
  • inodes : Este parámetro es el que indica cuantos inodes (recordando que un inodes corresponde a un archivo) tiene el usuario en su espacio asignado.

Una vez configurado los parámetros deseados, se puede ver un reporte de las cuotas asignadas a todos los usuarios de la siguiente manera:

# repquota -u /

*** Report for user quotas on device /dev/sda3
Block grace time: 7days; Inode grace time: 7days 
                        Block limits                File limits 
User            used    soft    hard  grace    used  soft  hard  grace 
---------------------------------------------------------------------- 
root      --  660364       0       0          20462     0     0       
user1     --   20000   25000   30000             20     0     0       
user2     --   15599       0       0   15     0     0

Otra forma útil de establecer una cuota es con la herramienta quotatool como se muestra a continuación (previa instalación de quotatool):

# quotatool -u user1 -bq 30M -l '30Mb' /

Si se desea duplicar la configuración de la cuota de un usuario a otro, basta con ejecutar la siguiente instrucción:

# edquota -up user1 user2

Para verificar:

# repquota -u /

*** Report for user quotas on device /dev/sda3
Block grace time: 7days; Inode grace time: 7days 
                        Block limits                File limits 
User            used    soft    hard  grace    used  soft  hard  grace 
---------------------------------------------------------------------- 
root      --  660364       0       0          20462     0     0       
user1     --   20000   25000   30000             20     0     0       
user2     --   15599   25000   30000   15     0     0


Servidor LDAP (slapd)


1. LDAP

2. SERVIDOR LDAP


LDAP (Lightweight Directory Access Protocol), Protocolo de Acceso Ligero a Directorios es un protocolo de tipo cliente-servidor para acceder a un servicio de directorio. Un servidor LDAP es un servidor de datos optimizado para la realización rápida de consultas de lectura y orientado al almacenamiento de datos de usuarios a modo de directorio.


La principal utilidad de un directorio LDAP es como servidor de autentificación para los distintos servicios de un sistema informático como puedan ser: autentificación para entrar en un PC, para entrar en una aplicación web, para acceder a un servidor ftp, para acceder a servidores de correo entrante POP3 y saliente SMTP, etc.


3. SISTEMA OPERATIVO


La presente instalación, se la hará en un Sistema Operativo Linux, Distribución Debian, Versión 6 (Squeeze).


4. PAQUETES INSTALADOS


slapd, ldaputils, phpldapadmin

5. INSTALACIÓN DEL SERVIDOR LDAP


Se comenzará instalando en el servidor con los paquetes slapd y ldap-utils.


Para instalar únicamente el servidor y sus utilidades ejecutar:

# apt-get install slapd ldap-utils


Si hay algún inconveniente con la instalación debido a falta de dependencias, ejecutar lo siguiente, ya que se trata de todos los paquetes de los cuales depende en servidor ldap:


# apt-get install slapd ldap-utils php5-ldap phpldapadmin libnss-ldapd libpam-ldapd libsasl2-modules-ldap sasl2-bin db4.8-util


Seguido de esto, el asistente solicitará una contraseña para el administrador del servidor, para lo cual se introduce una contraseña y en el siguiente paso vuelve a pedirla para verificarla.




Durante la instalación, se presentarán algunas pantallas que permitirán configurar una serie de parámetros, pero en el caso que no aparecieran las pantallas de configuración y al final nos lance a la terminal nuevamente, hay que ejecutar la configuración del servidor LDAP de la siguiente manera:


# dpkg-reconfigure slapd


El primer paso será seleccionar NO, para volver a configurar el servidor


Introducir el nombre del dominio que usará LDAP.


5.1. INSTALACIÓN Y CONFIGURACIÓN DEL CLIENTE


apt-get install libnss-ldapd libpam-ldapd nscd nslcd


5.2. ADMINISTRAR OBJETOS DE DIRECTORIO (USUARIOS Y GRUPOS)


En esta sección se explicará como administrar objetos del directorio LDAP desde la consola de Linux Debian.

Lo primero que se debe hacer es crear un archivo con extensión .LDIF. Luego se creará una “Unidad Organizacional”, para lo cuál el archivo que se haya creado, debe contener lo siguiente:


dn: ou=Usuarios,dc=dominio,dc=com
objectclass: top
objectclass: organizationalUnit
ou: Usuarios

Antes de proceder a agregar el objeto al directorio LDAP, se debe detener el servidor LDAP de la siguiente manera:


# /etc/init.d/slapd stop


Ahora si se procederá a añadir el objeto al servidor, de la siguiente manera:


# slapadd -v -l -c /directorio/archivo.ldif

El servidor debe responder con la siguiente salida:

added ou= Nombre_Grupo, dc=dominio,dc=com”


De igual manera se va a crear un archivo persona.ldif, que contendrá únicamente el nombre y apellido de un persona y los datos de una cuenta el usuario y contraseña.


dn: uid=User1,ou=Usuarios,dc=dominio,dc=com
uid: User1
objectclass: top
objectclass: person
objectclass: uidObject
cn: Nombre
sn: Apellido
userPassword: password


Y se lo agrega de la misma forma al servidor:

# slapadd -v -l /directoro/persona.ldif


Se pueden agregar los usuarios que sean necesarios siguiendo el mismo esquema.

Posterior a ello reiniciar el servidor

# /etc/init.d/slapd start


Finalmente para visualizar lo que se ha agregado al servidor, se lo puede hacer con un


# slapcat


Para realizar un backup de una base de datos existente en otro servidor LDAP, basta con importar a un archivo el contenido al hacer un slapcat de la siguiente manera:



# slapcat -v -l ../directorio_destino/respaldo.ldif


Y para importarla a otro servidor LDAP, basta con hacer un ldapadd cómo se explico anteriormente.



5.2.1 ADMINISTRACIÓN DEL SERVIDOR LDAP CON PHPLDAPADMIN


Para administrar el servidor LDAP de una manera un poco más sencilla y gráfica, se puede instalar una aplicacion web, que funciona localmente que se llama PHPLDAPADMIN. Para instalarla, ejecutar lo siguiente (ya que también se encuentra en los repositorios)



# apt-get install phpldapadmin

Para comenzar a administrar los elementos del LDAP pulsar arriba a la izquierda donde indica
"Conectar", luego se ingresa el usuario administrador en el siguiente formato (cn=admin,dc=dominio,dc=com) y su contraseña.


Si no permitiera el logueo al servidor y desplegara un mensaje de error que dice: Error Could not start TLS. Please check your LDAP server configuration.” , En las versiones más recientes de phpldapadmin viene configurado por defecto que la conexión con el servidor ldap se haga mediante TLS, y si el servidor de LDAP que se ha montado no está configurado para usar TLS, al introducir el usuario y la contraseña, mostrará dicho error, y para solucionarlo, o bien hay que configurar el servidor ldap con soporte TLS o desactivar el uso de tls en el archivo de configuración de phpldapadmin.


Para desactivar tls en phpldapadmin, ediar el archivo de configuración:


# nano /etc/phpldapadmin/config.php

Y modificar la línea que dice:

$ldapservers->SetValue($i,'server','tls',true);

Por:

$ldapservers->SetValue($i,'server','tls',false);


Otro problema que puede darse al momento de administrar el servidor LDAP es que no se despliegue el árbol del directorio, y envés de ello, aparezca un mensaje de adverencia que dice: This base entry does not exist. Create it?”; Esto se debe a que en el archivo de configuración de phpLDAPadmin hay un parámetro que define el dominio del servidor LDAP, el mismo que al momento de la instalación y configuración no quearon registrados los cambios (y no se entiende porque razón). Para lo cual, hay que editar nuevamente dicho archivo:


# nano /etc/phpldapadmin/config.php

Y buscar la línea


/* Array of base DNs of your LDAP server. Leave this blank to have phpLDAPadmin
auto-detect it for you. */
$servers->setValue('server','base',array('dc=example,dc=com'));

Y obviamente en “dc=example” reempazarla con el nombre de dominio y demás componentes que tenga este.


Una vez ingresado al phpLDAPadmin, pulsar en el signo + que hay a la izquierda del dominio para poder desplegar las opciones.


Y se desplegará sólo un elemento, el administrador.  También se verá un icono para permitir crear más elementos. Pulsar en crear nuevo objeto, y se creará dos Unidades Organizativas, una para los grupos y otra para los usuarios.


Ahora se crearán los grupos como objeto hijo de la unidad organizativa "Grupos". En la plantilla elegimos Grupo Posix .

Asigar un nombre para el grupo y aceptar el GID que nos sugiere. Si se desea o no hay un GID disponible, se puede espeficar uno que se desee especificar, en ese caso, si la casilla está desactivada se debe editar la plantilla.


Para lo cual, hay que editar el archivo /etc/phpldapadmin/templates/creation/posixGroup.xml y eliminar la linea que dice <readonly>1</readonly>.



Ahora se procederá a crear los usuarios, para lo cual clickear en ou=Usuarios y crear un hijo del tipo Generico:


Cuenta de Usuarios.


En el formulario que aparece, llenar todas las opciones del usuario. Con el campo UID pasará
igual que con el GID explicado en el punto anterior. Si se necesita insertar un número de preferencia, editar el archivo posixAccount.xml en el mismo directorio mencionado anteriormente. y eliminar la línea <readonly>1</readonly>.

Si se desea que el “home” del usuario se cree automáticamente al iniciar la sesión por primera vez, esto lo realiza agregando la siguiente línea al archivo /etc/pam.d/common-session:


session optional pam_mkhomedir.so skel=/etc/skel umask=0022


5.2.2 ADMINISTRACION DE USUARIOS LDAP CON LDAPSCRIPTS


La herramienta phpLDAPadmin es muy útil a la hora de visualizar la organización del árbol LDAP, pero no es una buena opción a la hora de crear usuarios LDAP porque no crea los homes. Para esto existe un conjunto de scripts que provee LDAP. Para ello, lo primero que se ha de hacer es instalar el paquete que contiene dichos scripts:


# apt-get install ldapscripts


Una vez instalado, editar el archivo de configuración de ldapscripts /etc/ldapscripts/ldapscripts.conf para indicarle todos los valores del servidor LDAP, como se muestra a continuación:


SERVER=localhost
BINDDN='cn=admin,dc=nom_dom,dc=com'
BINDPWDFILE="/etc/ldapscripts/ldapscripts.passwd"
SUFFIX='dc=nom_dom,dc=com'
GSUFFIX='ou=Grupos' (grupo organizacional creado con phpldapadmin)
USUFFIX='ou=Usuarios'(grupo organizacional creado con phpldapadmin)
MSUFFIX='ou=Maquinas'(grupo organizacional creado con phpldapadmin)
GIDSTART=10000
UIDSTART=10000
MIDSTART=10000
# User properties
USHELL="/bin/bash"
UHOMES="/home/users/%u"
CREATEHOMES="yes"
HOMESKEL="/etc/skel"
HOMEPERMS="700"


Ahora se ha de indicar cual es el password del administrador del servidor LDAP, para que los scripts puedan modificar lo que sea necesario, para ello, ejecutamos:


# sh -c "echo -n 'secret' > /etc/ldapscripts/ldapscripts.passwd"
# chmod 700 /etc/ldapscripts/ldapscripts.passwd


Ahora ya se pueden utilizar los scripts para la creación y configuración de usuarios:

Lo primero que se tiene que hacer es crear un grupo, ya que para crear usuarios será imprescindible agregarlos a un grupo dentro del arbol LDAP, para ello ejecutar la siguiente orden:


# ldapaddgroup nombre_grupo


Y para crear usuarios (incluido la creación del directorio home):


# ldapadduser usuario nombre_grupo


Los usuarios se crean sin password, para asignarle un password al usuario creado, ejecutar:


# ldapsetpasswd usuario
New Password:
New Password (verify):

Para ver el resto de scripts que ofrece ldapscripts, ejecutar:


dpkg -L ldapscripts | grep bin


5.2.3 MODIFICACIONES ÚTILES A LOS SCRIPTS


Al momento de la creación de un usuario con ldapscripts, este no configura una contraseña inicial para el usuario, para lo cual se debe ejecutar el script ldapsetpasswd luego de haber creado el usuario para establecer la contraseña de inicio. Para el efecto, como se verá a continuación, basta con realizar unas modificaciones al script /usr/sbin/ldapadduser para que al momento de ejecutar la orden de creación del usuario, se establezca la contraseña de inicio:


Buscar y eliminar las líneas


# Generate or ask for user password
if is_like "$PASSWORDGEN" "<ask>"
then
warn_log "Setting password for user $_USER"
_askpassword
else
_genpassword "$_USER"
fi


# Add user password
if [ -n "$_PASSWORD" ]
then
_changepassword "$_PASSWORD" "uid=$_USER,$USUFFIX,$SUFFIX"
[ $? -eq 0 ] && echo_log "Successfully set password for user $_USER"
else
[ -n "$PASSWORDGEN" ] && warn_log "Warning : got invalid password for user $_USER (password not set)"
fi


Luego agregar las siguienes líneas al final del archivo


# Para setear contraseña
# Find username : $1 must exist in LDAP !
_findentry "$USUFFIX,$SUFFIX" "(&(objectClass=posixAccount)(|(uid=$1)(uidNumber=$1)))"
[ -z "$_ENTRY" ] && end_die "User $1 not found in LDAP"


if [ -z "$3" ] # Have to prompt for a *clear* password
then
warn_log "Changing password for user $_ENTRY"
# Ask for password
_askpassword
[ -z "$_PASSWORD" ] && end_die "Invalid password, please try again"
# Change user's password
_changepassword "$_PASSWORD" "$_ENTRY"
[ $? -eq 0 ] || end_die "Error setting password for user $_ENTRY"
end_ok "Successfully set password for user $_ENTRY"
else # Have to use the *encoded* password given on the command line
# Use LDIF info to modify the password
_PASSWORD="$3"
_extractldif 2 | _filterldif | _utf8encode | _ldapmodify
[ $? -eq 0 ] || end_die "Error setting encoded password for user $_ENTRY"
end_ok "Successfully set encoded password for user $_ENTRY"
fi


También se pensó en la necesidad de al momento de eliminar un usuario del directorio LDAP, también sea eliminado su directorio home y todo su contenido, para ello se ha de agregar las siguientes líneas al final del archivo /usr/sbin/ldapdeleteuser:


# Borrar carpeta home del usuario con todo su contenido
if [ "$2" = "-r" ]
then
rm -dfr "$_HOMEDIR"/"$1"
echo "El directorio del usuario $1 ha sido eliminado con todo su contenido"
fi


Como se puede observar se ha programado un segundo argumento que debe ser “-r” para que al momento de eliminar al usuario, sea eliminado su directorio home con todo su contenido.


6. RECOMENDACIONES


Se recomienda que al momento de crear un usuario, en el campo “login shell”, escribir “/null”, si es que este usuario no será utilizado para loguearse a otro servidor.