miércoles, 10 de junio de 2020

Instalación de LDAP

Introducción

El servicio LDAP proveerá el mecanismo de autenticación a los servidores de la organización.

Actualmente el mecanismo de autenticación es a través de una base de datos de autenticación externa a la base de datos de Moodle.

También se instalará el servicio DNS con el dominio login.dominio.com para ser usado en la configuración del servicio DNS.

Este documento describe la instalación de prueba sobre una máquina virtual creada usando el software VirtualBox en la estación de trabajo.

El sistema operativo instalado en la máquina virtual es Ubuntu 16.04.2 LTS.

Pre-Requisitos

  • Nombre DNS del servidor de autenticación: login.dominio.com

  • Parámetros de configuración de red:

    • Dirección IP: 10.0.2.10

    • Máscara de subred: 255.255.255.0

    • Puerta de enlace predeterminada: 10.0.2.1

    • Dirección IP del servidor DNS: 10.0.2.10

    • Dominio: login.dominio.com

Configuración del acceso SSH al servidor LDAP

Abra el programa VirtualBox en el anfitrión Windows

En el panel izquierdo haga clic derecho con el ratón sobre la máquina virtual nombrada login. Seleccione "Configuración..." del menú contextual emergente.

Seleccione el item "Red" a la izquierda en el cuadro "login - Configuración"

Haga clic sobre el botón "Reenvío de puertos"

En el cuadro "Reglas de reenvío de puertos" anote los siguientes valores:

  • Nombre: ssh

  • Protocolo: TCP

  • IP anfitrión: 127.0.0.1

  • Puerto anfitrión: 2210

  • IP invitado: 10.0.2.10

  • Puerto invitado: 22

  • Pulse el botón OK para cerrar el cuadro de diálogo "Reglas de reenvío de puertos"

Pulse sobre el OK para cerrar el cuadro de diálogo "login- Configuración".

Pulse sobre el botón Iniciar de la barra de herramientas de VirtualBox cuando una vez haya seleccionado la máquina virtual login.

Una vez haya cargado la máquina virtual, abra la aplicación usada para conectar vía ssh a sistemas remotos (PuTTY)

Diríjase -en el panel izquierdo de la aplicación, a Connection > SSH > Tunnels y anote los siguientes valores:

  • Source port: 2210
  • Destination: 10.0.2.10:22

Pulse sobre el botón Add una vez haya agregado los valores indicados

Diríjase al item Session -el primer item arriba en el panel izquierdo.

Escriba para "Host name (or IP address)" la dirección IP 127.0.0.1.

Anote para "Port" el valor 2210.

Pulse sobre el botón Open para abrir la conexión ssh

Anote el nombre de usuario y clave indicados cuando le sea solicitado.

Inicie sesión como root mediante sudo -s. Escriba la clave indicada.

Instalación del servicio DNS

Instale el servicio DNS:

apt-get -y install bind9

Edite el archivo

/etc/bind/named.conf.local

para agregar la nueva zona DNS.

vim /etc/bind/named.conf.local

Agregue la configuración al final del archivo.

zone "login.dominio.com" {
    type master;
    file "/etc/bind/db.login.dominio.com";
};

zone "2.0.10.in-addr.arpa" {
    type master;
    file "/etc/bind/db.10";
};
            

Agregue las ACLs para los sistemas permitidos a consultar al servidor DNS configurado.

acl servidores {
        10.1.124.126;
        10.1.124.127;
        10.1.124.103;
        10.1.124.104;
        10.1.124.105;
        10.1.124.106;
        10.1.124.107;
        10.1.124.128;
};

acl red-virtual {
        10.0.2.0/24;
        127.0.0.1;
};
            

Agregue la configuración de registro de las consultas DNS.

logging {
    channel query.log {
        file "/var/log/query.log";
        severity debug 3;
    };
        category queries { query.log; };
};
            

Cierre el archivo.

Cree el nuevo archivo

/etc/bind/db.login.dominio.com

y escriba los datos de configuración para la zona DNS login.dominio.com.

vim /etc/bind/db.login.dominio.com

;
; BIND - Archivo de datos para login.dominio.com
;
$TTL    604800
@       IN      SOA     login.dominio.com. root.login.dominio.com. (
                              2         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
        IN      A       192.168.1.10
;
@       IN      NS      ns.login.dominio.com.
@       IN      A       10.0.2.10
@       IN      AAAA    ::1
ns      IN      A       10.0.2.10

                

Cierre el archivo.

Cree el archivo

/etc/bind/db.10

y escriba los datos de configuración de la zona reversa para login.dominio.com.

vim /etc/bind/db.10

;
; BIND - Datos para la zona inversa de la red local 10.0.2.XXX
;
$TTL    604800
@       IN      SOA     ns.login.dominio.com. root.login.dominio.com. (
                              2         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;
@       IN      NS      ns.
10      IN      PTR     ns.login.dominio.com.
        

Cierre el archivo.

Cree el archivo /var/log/query.log y asigne los permisos correspondientes.

touch /var/log/query.log

chown bind /var/log/query.log

Edite el archivo /etc/apparmor.d/usr.sbin.named y añada /var/log/query.log w, al final, antes del símbolo }

vim /etc/apparmor.d/usr.sbin.named

Cierre el archivo.

Abra el archivo /etc/bind/named.conf.options y anote las opciones para la configuración creada en el archivo /etc/bind/named.conf.local y otras opciones.

vim /etc/named.conf.options

        dnssec-enable yes;
        dnssec-validation yes;

        auth-nxdomain no;    # conform to RFC1035

        allow-query {
                servidores;
                red-virtual;
        };

            

Cargue los cambios al perfil de AppArmor para bind.

cat /etc/apparmor.d/usr.sbin.named | sudo apparmor_parser -r

Re-inicie el servicio bind.

systemctl restart bind9

Edite el archivo /etc/network/interfaces para anotar los parámetros de red.

auto enp0s3
iface enp0s3 inet static
        address 10.0.2.10
        netmask 255.255.255.0
        broadcast 10.0.2.255
        gateway 10.0.2.2
        hwaddress 08:00:27:e8:5a:5b
        mtu 1500
        dns-search login.dominio.com
        dns-nameservers 10.0.2.10
            

Note

Los parámetros a colocar son los parámetros de red del servidor archivos.dominio.com. Los parámetros mostrados acá se usaron durante las pruebas.

Edite el archivo /etc/resolv.conf para anotar el DNS configurado.

nameserver 10.0.2.10
searchname login.dominio.com
            

Cierre el archivo.

Verifique el estado de la zona login.dominio.com.

root@login:~# rndc zonestatus login.dominio.com
type: master
files: /etc/bind/db.login.dominio.com
serial: 2
nodes: 2
last loaded: Fri, 05 May 2017 16:11:50 GMT
secure: no
dynamic: no
        

Instalación del servicio LDAP

Anote el nombre de hosts en el archivo /etc/hosts

127.0.1.1       login.dominio.com  login
10.0.2.10       login.dominio.com  login
            

Instale el software para el servicio LDAP:

apt-get -y install slapd ldap-utils

Establezca la contraseña administrativa.

Verifique que la información del árbol de directorios es correcta.

root@login:/etc# ldapsearch -x -LLL \
-H ldap:/// -b dc=login,dc=dominio,dc=com dn
dn: dc=login,dc=dominio,dc=com

dn: cn=admin,dc=login,dc=dominio,dc=com
            
root@login:~# ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b cn=config
d
dn: cn=config

dn: cn=module{0},cn=config

dn: cn=schema,cn=config

dn: cn={0}core,cn=schema,cn=config

dn: cn={1}cosine,cn=schema,cn=config

dn: cn={2}nis,cn=schema,cn=config

dn: cn={3}inetorgperson,cn=schema,cn=config

dn: olcBackend={0}mdb,cn=config

dn: olcDatabase={-1}frontend,cn=config

dn: olcDatabase={0}config,cn=config

dn: olcDatabase={1}mdb,cn=config
                

Cree el archivo de configuración de LDAP con el contenido mostrado abajo:

vim /etc/ldap.conf

BASE    dc=login,dc=dominio,dc=com
URI     ldap://10.0.2.10 ldap://10.0.2.10:389
                

Reconfigure el servicio slapd

dpkg-reconfigure slapd

Desplácese con la tecla "Tab" para seleccionar "No" y presione "Enter" como respuesta a la pregunta "¿Desea omitir la configuración del servidor OpenLDAP?"

Introduzca login.dominio.com como nombre de dominio DNS. Presione "Enter" en Aceptar.

Introduzca Organización como nombre de la organización. Enter sobre Aceptar.

Escriba la contraseña del administrador. Enter sobre Aceptar.

Escriba la confirmación de la contraseña del administrador. Enter sobre Aceptar.

Seleccione MDB como motor de bases de datos a utilizar. Enter sobre Aceptar.

Seleccione Sí para responder a la pregunta ¿Desea que se borre la base de datos cuando se purgue el paquete slapd? Enter sobre Aceptar.

Seleccione Sí para responder a la pregunta ¿Desea mover la base de datos antigua? Enter sobre Sí.

Seleccione No para responder a la pregunta ¿Desea permitir el protocolo LDAPv2? Enter sobre No.

Verifique la nueva configuración.

root@login:~# ldapsearch -x -LLL \
-H ldap:/// -b dc=login,dc=dominio,dc=com dn
dn: dc=login,dc=dominio,dc=com

dn: cn=admin,dc=login,dc=dominio,dc=com
            
root@login:~# ldapsearch -D "cn=admin,dc=login,dc=dominio,dc=com"
\
-x -w xxclavexx -p 389 -h 10.0.2.10 \
-b "dc=login,dc=dominio,dc=com" \
-s sub "cn=admin"
# extended LDIF
#
# LDAPv3
# base <dc=login,dc=dominio,dc=com> with scope subtree
# filter: cn=admin
# requesting: ALL
#

# admin, login.dominio.com
dn: cn=admin,dc=login,dc=dominio,dc=com
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
description: LDAP administrator
userPassword:: e1NTSEF9cTZkTi9hSUt0cnlXb0cvSnBuMFRHRkZ6Qzh4Vzh3TXE=

# search result
search: 2
result: 0 Success

# numResponses: 2
# numEntries: 1

            

Agregue el esquema CORBA.

Cree un archivo schema_convert.conf en el directorio /etc/ldap.

vim /etc/ldap/schema_convert.conf

include /etc/ldap/schema/core.schema
include /etc/ldap/schema/collective.schema
include /etc/ldap/schema/corba.schema
include /etc/ldap/schema/cosine.schema
include /etc/ldap/schema/duaconf.schema
include /etc/ldap/schema/dyngroup.schema
include /etc/ldap/schema/inetorgperson.schema
include /etc/ldap/schema/java.schema
include /etc/ldap/schema/misc.schema
include /etc/ldap/schema/nis.schema
include /etc/ldap/schema/openldap.schema
include /etc/ldap/schema/ppolicy.schema
include /etc/ldap/schema/ldapns.schema
include /etc/ldap/schema/pmi.schema
            

Cierre el archivo.

Cree el directorio ldif_output.

mkdir /etc/ldap/ldif_output.

Indique el índice del esquema.

root@login:~# slapcat -f /etc/ldap/schema_convert.conf \
-F /etc/ldap/ldif_output -n 0 | grep corba,cn=schema
dn: cn={2}corba,cn=schema,cn=config
            

Realice la conversión.

slapcat -f schema_convert.conf -F ldif_output -n0 \ -H ldap:///cn={1}corba,cn=schema,cn=config -l cn=corba.ldif

Agregue el nuevo esquema.

root@login:~# ldapadd -Q -Y EXTERNAL \
-H ldapi:/// -f /etc/ldap/schema/corba.ldif
adding new entry "cn=corba,cn=schema,cn=config"

            
root@login:~# ldapsearch -Q -LLL -Y EXTERNAL \
-H ldapi:/// -b cn=schema,cn=config dn
dn: cn=schema,cn=config

dn: cn={0}core,cn=schema,cn=config

dn: cn={1}cosine,cn=schema,cn=config

dn: cn={2}nis,cn=schema,cn=config

dn: cn={3}inetorgperson,cn=schema,cn=config

dn: cn={4}corba,cn=schema,cn=config
            

Active el registro para OpenLDAP. Para ello cree un archivo de configuración.

vim /etc/ldap/logging.ldif

dn: cn=config
changetype: modify
replace: olcLogLevel
olcLogLevel: stats
            

Active la configuración de registro.

root@login:/etc/ldap# ldapmodify -Q -Y EXTERNAL -H ldapi:/// -f
logging.ldif
modifying entry "cn=config"
            

Gestión de usuarios y grupos

Instale las utilerías ldapscripts para administrar el servicio.

apt -y install ldapscripts

Cambiese al directorio /etc/ldapscripts.

cd /etc/ldapscripts

Respalde la configuración por defecto.

mv ldapscripts.conf ldapscripts.conf.default

mv ldapscripts.passwd ldapscripts.passwd.default

Cree un nuevo archivo de configuración.

vim /etc/ldapscripts/ldapscripts.conf

Coloque el siguiente contenido en el archivo:

SERVER=localhost
BINDDN='cn=admin,dc=login,dc=dominio,dc=com'
BINDPWDFILE="/etc/ldapscripts/ldapscripts.passwd"
SUFFIX='dc=login,dc=dominio,dc=com'
GSUFFIX='ou=Grupos'
USUFFIX='ou=Personas'
MSUFFIX='ou=Dispositivos'
GIDSTART=10000
UIDSTART=10000
MIDSTART=10000

LDAPSEARCHBIN="/usr/bin/ldapsearch"
LDAPADDBIN="/usr/bin/ldapadd"
LDAPDELETEBIN="/usr/bin/ldapdelete"
LDAPMODIFYBIN="/usr/bin/ldapmodify"
LDAPMODRDNBIN="/usr/bin/ldapmodrdn"
LDAPPASSWDBIN="/usr/bin/ldappasswd"
                

Cree el archivo ldapscript.passwd para acceso rootDN al directorio.

echo -n 'secreto' > /etc/ldapscripts/ldapscripts.passwd

Establezca los permisos del archivo.

chmod 400 /etc/ldapscripts/ldapscripts.passwd

Cree un directorio para guardar los archivos .ldif para el trabajo diario.

mkdir /etc/ldap/archivos

Cree el archivo ldif para agregar la unidad organizacional "Grupos".

vim /etc/ldap/archivos/grupos.ldif

El contenido del archivo será:

# Crear el primer nivel de Grupos

dn: ou=Grupos,dc=login,dc=dominio,dc=com
objectclass: organizationalunit
ou: Grupos
description: Grupos
                

Agregue la unidad organizacional "Grupos" al Árbol de Información del Directorio.

 root@login:~# ldapadd -H ldap://10.0.2.10 -x \
 -D "cn=admin,dc=login,dc=dominio,dc=com" \
 -f /etc/ldap/archivos/grupos.ldif -w xxxclavexxx
adding new entry "ou=Grupos,dc=login,dc=dominio,dc=com"
                

Cree un archivo llamado moodle_roles.ldif para "mapear" los roles de Moodle.

vim /etc/ldap/archivos/moodles_roles.ldif

El contenido del archivo es:

# Crea manager bajo Grupos

dn: cn=manager,ou=Grupos,dc=login,dc=dominio,dc=com
objectclass: top
cn: manager
objectClass: posixGroup
gidNumber: 10001
description: Administradores de Moodle


# Crea coursecreators bajo Grupos

dn: cn=coursecreator,ou=Grupos,dc=login,dc=dominio,dc=com
objectclass: top
cn: coursecreator
objectClass: posixGroup
gidNumber: 10002
description: Creadores de cursos online

# Crea editingteacher bajo Grupos

dn: cn=editingteacher,ou=Grupos,dc=login,dc=dominio,dc=com
objectclass: top
cn: editingteacher
objectClass: posixGroup
gidNumber: 10003
description: Profesores de cursos online

# Crea teacher bajo Grupos

dn: cn=teacher,ou=Grupos,dc=login,dc=dominio,dc=com
objectclass: top
cn: teacher
objectClass: posixGroup
gidNumber: 10004
description: Profesores de cursos online sin derecho a modificaciones

# Crea student bajo Grupos

dn: cn=student,ou=Grupos,dc=login,dc=dominio,dc=com
objectclass: top
cn: student
objectClass: posixGroup
gidNumber: 10005
description: Estudiantes de los cursos online

# Crea guest bajo Grupos

dn: cn=guest,ou=Grupos,dc=login,dc=dominio,dc=com
objectclass: top
cn: guest
objectClass: posixGroup
gidNumber: 10006
description: Invitados

# Crea user bajo Grupos

dn: cn=user,ou=Grupos,dc=login,dc=dominio,dc=com
objectclass: top
cn: user
objectClass: posixGroup
gidNumber: 10007
description: Usuarios identificados

# Crea user bajo Grupos

dn: cn=frontpage,ou=Grupos,dc=login,dc=dominio,dc=com
objectclass: top
cn: frontpage
objectClass: posixGroup
gidNumber: 10008
description: Usuarios identificados en el curso de la pagina principal
 

Guarde el archivo.

Cree los grupos.

root@login:~# ldapadd -H ldap://10.0.2.10 -x \
-D "cn=admin,dc=login,dc=dominio,dc=com" \
-f /etc/ldap/archivos/moodle_roles.ldif -w xxxclavexxx
adding new entry "cn=manager,ou=Grupos,dc=login,dc=dominio,dc=com"

adding new entry "cn=coursecreator,ou=Grupos,dc=login,dc=dominio,dc=com"

adding new entry "cn=editingteacher,ou=Grupos,dc=login,dc=dominio,dc=com"

adding new entry "cn=teacher,ou=Grupos,dc=login,dc=dominio,dc=com"

adding new entry "cn=student,ou=Grupos,dc=login,dc=dominio,dc=com"

adding new entry "cn=guest,ou=Grupos,dc=login,dc=dominio,dc=com"

adding new entry "cn=user,ou=Grupos,dc=login,dc=dominio,dc=com"

adding new entry "cn=frontpage,ou=Grupos,dc=login,dc=dominio,dc=com"
                

Agregue un usuario al grupo manager.

/usr/sbin/ldapadduser isaac

Agregue el usuario al grupo manager.

ldapaddusertogroup isaac manager

Establezca la clave para el nuevo usuario.

ldappasswd -H ldap://10.0.2.10 -x -D "cn=admin,dc=login,dc=dominio,dc=com" -w xxxclavexxx \ -S "uid=isaac,ou=Personas,dc=login,dc=dominio,dc=com"

Cierre la sesión SSH.

exit

Configuración del acceso SSH al servidor Moodle

Abra el programa VirtualBox en el anfitrión Windows

En el panel izquierdo haga clic derecho con el ratón sobre la máquina virtual nombrada moodle-archivos. Seleccione "Configuración..." del menú contextual emergente.

Seleccione el item "Red" a la izquierda en el cuadro "moodle-archivos - Configuración"

Haga clic sobre el botón "Reenvío de puertos"

En el cuadro "Reglas de reenvío de puertos" anote los siguientes valores:

  • Nombre: ssh

  • Protocolo: TCP

  • IP anfitrión: 127.0.0.1

  • Puerto anfitrión: 2211

  • IP invitado: 10.0.2.11

  • Puerto invitado: 22

  • Pulse el botón OK para cerrar el cuadro de diálogo "Reglas de reenvío de puertos"

Pulse sobre el OK para cerrar el cuadro de diálogo "moodle-archivos - Configuración".

Pulse sobre el botón Iniciar de la barra de herramientas de VirtualBox cuando una vez haya seleccionado la máquina virtual moodle-archivos.

Una vez haya cargado la máquina virtual, abra la aplicación usada para conectar vía ssh a sistemas remotos (PuTTY)

Diríjase -en el panel izquierdo de la aplicación, a Connection > SSH > Tunnels y anote los siguientes valores:

  • Source port: 2211
  • Destination: 10.0.2.11:22

Pulse sobre el botón Add una vez haya agregado los valores indicados

Diríjase al item Session -el primer item arriba en el panel izquierdo.

Escriba para "Host name (or IP address)" la dirección IP 127.0.0.1.

Anote para "Port" el valor 2211.

Pulse sobre el botón Open para abrir la conexión ssh

Anote el nombre de usuario y clave indicados cuando le sea solicitado.

Inicie sesión como root mediante sudo -s. Escriba la clave indicada.

Configuración de la Autenticación LDAP

Instale el software para realizar la autenticación.

apt -y install libnss-ldap

Escribe el URI para el servidor LDAP.

ldap://10.0.2.10:389 Enter en Aceptar.

Escribe el nombre distintivo solicitado:

dc=login,dc=dominio,dc=com Enter en Aceptar.

Seleccione "3" como número de versión LDAP a usar. Enter en Aceptar.

Seleccione "Sí" para "Make local root Database admin". Enter en Aceptar.

Seleccione "No" para "Does the LDAP database require login?". Enter en Aceptar.

Escriba cn=admin,dc=login,dc=dominio,dc=com para "LDAP account for root". Enter en Aceptar.

Escriba la clave configurada para la administración del servidor LDAP. Enter en Aceptar.

Configure el perfil LDAP para NSS.

auth-client-config -t nss -p lac_ldap

Configure el sistema para utilizar autenticación LDAP.

pam-auth-update

Enter en Aceptar.

Cierre la sesión SSH.

exit

Configuración de la Autenticación LDAP en el servidor Moodle

Abra Firefox e inicie sesión administrativa en el sitio http://10.0.2.11/

En el bloque "ADMINISTRACIÓN" diríjase a: Extensiones > Identificación > Gestionar identificación

Pulse sobre el icono "Habilitar" en la línea "Usar un servidor LDAP" para activar la autenticación LDAP.

Pulse sobre "Configuración" en la línea "Usar un servidor LDAP".

En URL de host escriba ldap://10.0.2.10:389.

En el campo "nombre distinguido" escriba: cn=admin,dc=login,dc=dominio,dc=com

En el campo Contraseña escriba la contraseña acordada.

En el campo Tipo de usuario elija posixAccount (rfc2307)

En el campo Contextos escriba ou=Personas,dc=login,dc=dominio,dc=com

En la sección Ajustes de búsqueda de usuario, item Atributo de usuario escriba uid.

Pulse sobre el botón Guardar cambios para guardar los cambios.

Cierre la sesión administrativa en Moodle.

Inicie sesión usando el usuario isaac y la clave establecida.

Llene el formulario con los datos del perfil de usuario.

  • Nombre: Jorge Isaac
  • Apellidos: Dávila López
  • Dirección de correo: jorgedavilalopez@gmail.com
  • Mostrar correo: Ocultar a todos mi dirección de correo.
  • Ciudad: Managua
  • Seleccione su país: Nicaragua
  • Zona horaria: Zona horaria del servidor (América/Managua)

Pulse sobre Actualizar información personal para actualizar la información personal.

Tareas pendientes

  1. Obtener lista de usuarios de la base de datos externa de autenticación.

  2. Generar archivo .ldif a partir de los datos obtenidos.

  3. Crear los usuarios LDAP en el contexto apropiado.

No hay comentarios:

Publicar un comentario

El desembarco de Normandía

Disculpas, alguna vez pensé que el Canal de la Mancha estaba vinculado al Quijote. En la esquina superior derecha del mapa puede verse el rí...