Consideraciones:
Este artículo instalaremos un servidor de autenticación OpenLDAP en Redhat 7
Escenario:
El escenario utilizado es el siguiente:
- Server OpenLDAP (ldapsrv1.danielcastillo.tech, 192.168.20.41)
- Cliente OpenLDAP (ldapclt.danielcastillo.tech,192.168.20.43)
Server Pre-requisitos:
1. Crear las respectivas entradas de los host en el archivo /etc/hosts
[root@ldapsrv1 ~]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 192.168.20.41 ldapsrv1.danielcastillo.tech ldapsrv1 192.168.20.43 ldapclt.danielcastillo.tech ldapclt ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
2. Actualizar el sistema:
[root@ldapsrv1 ~]# yum -y update
Procedimiento:
1. Instalar los paquetes necesarios:
[root@ldapsrv1 ~]# yum -y install openldap* migrationtools
2. Iniciar y habilitar el servicio:
[root@ldapsrv1 ~]# systemctl start slapd.service
[root@ldapsrv1 ~]# systemctl enable slapd.service
3. Crear una contraseña cifrada (en este caso "redhat") para el usuario administrador del server usando slappasswd:
[root@ldapsrv1 ~]# slappasswd -s redhat -n > /etc/openldap/passwd
3.1 Tengamos en cuenta la salida anterior la vamos a usar en un paso posterior.
4. Para este ejemplo vamos a usar el dominio danielcastillo.tech, obviamente puedes usar el que consideres.
4.1. Creamos un archivo LDIF con los atributos que queremos agregar, recuerda asignar la contraseña de administracion que generamos en el paso anterior, modificar el sufijo del dominio y el root DN:
[root@ldapsrv1 ~]# cat /root/ldapdomain.ldif
dn: olcDatabase={2}hdb,cn=config changetype: modify replace: olcSuffix olcSuffix: dc=danielcastillo,dc=tech dn: olcDatabase={2}hdb,cn=config changetype: modify replace: olcRootDN olcRootDN: cn=Manager,dc=danielcastillo,dc=tech dn: olcDatabase={2}hdb,cn=config changetype: modify replace: olcRootPW olcRootPW: PASSWORD dn: cn=config changetype: modify replace: olcLogLevel olcLogLevel: -1 dn: olcDatabase={1}monitor,cn=config changetype: modify replace: olcAccess olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" read by dn.base="cn=Manager,dc=danielcastillo,dc=tech" read by * none
4.2. Agregamos la entrada anterior usando ldapmodify
[root@ldapsrv1 ~]# ldapmodify -Y EXTERNAL -H ldapi:/// -f /root/ldapdomain.ldif
5. Creamos los certificados SSL necesarios para habilitar TLS en las conexiones
[root@ldapsrv1 ~]# openssl req -new -x509 -nodes -out /etc/openldap/certs/danielcastilloldap.pem -keyout /etc/openldap/certs/danielcastilloldapkey.pem -days 365
5.0.1. Aseguramos el contenido del directorio /etc/openldap/certs
[root@ldapsrv1 ~]# cd /etc/openldap/certs
[root@ldapsrv1 ~]# chown ldap:ldap *
[root@ldapsrv1 ~]# chmod 600 danielcastilloldapkey.pem
5.1. Creamos un archivo LDIF con los atributos TLS que queremos agregar:
[root@ldapsrv1 ~]# cat /root/addtls.ldifdn: cn=config
changetype: modify replace: olcTLSCertificateFile olcTLSCertificateFile: /etc/openldap/certs/danielcastilloldap.pem - replace: olcTLSCertificateKeyFile olcTLSCertificateKeyFile: /etc/openldap/certs/danielcastilloldapkey.pem
5.2. Agregamos la entrada anterior usando ldapmodify
[root@ldapsrv1 ~]# ldapmodify -Y EXTERNAL -H ldapi:/// -f /root/addtls.ldif SASL/EXTERNAL authentication started SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth SASL SSF: 0 modifying entry "cn=config"
6. Copiamos la base de datos de ejemplo:
[root@ldapsrv1 ~]# cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
6.1. Cambiamos permisos:
[root@ldapsrv1 ~]# chown -R ldap:ldap /var/lib/ldap/*
7. Reiniciamos servicios y corroboramos que todo vaya bien:
[root@ldapsrv1 ~]# systemctl restart slapd
[root@ldapsrv1 ~]#
[root@ldapsrv1 ~]# slaptest -u
config file testing succeeded[root@ldapsrv1 ]# ss -lt | grep ldap LISTEN 0 128 *:ldap *:* LISTEN 0 128 [::]:ldap [::]:*
8. Agregamos los esquemas necesarios al server:
[root@ldapsrv1 ~]# ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif
SASL/EXTERNAL authentication started SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth SASL SSF: 0 adding new entry "cn=cosine,cn=schema,cn=config" [root@ldapsrv1 ~]# ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif
SASL/EXTERNAL authentication started SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth SASL SSF: 0 adding new entry "cn=nis,cn=schema,cn=co[root@ldapsrv1 ~]# ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldifSASL/EXTERNAL authentication started SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth SASL SSF: 0 adding new entry "cn=inetorgperson,cn=schema,cn=config"
9. Creamos los objetos base en OpenLDAP vamos a utilizar las herramientas de migración, para ello vamos modificar algunos valores predefinidos:
[root@ldapsrv1 ~]# cd /usr/share/migrationtools/ [root@ldapsrv1 migrationtools]#
[root@ldapsrv1 migrationtools]# vim migrate_common.ph
En la linea 71 cambiamos el nombre de dominio:
$DEFAULT_MAIL_DOMAIN = "danielcastillo.tech";
En la linea 74 cambiamos el nombre base que esta por default:
$DEFAULT_BASE = "dc=danielcastillo,dc=tech";En la linea 90 activamos el esquema extendido cambiando "0" por "1":
$EXTENDED_SCHEMA = 1;
Guardamos y salimos del fichero:
10. Creamos un fichero base de configuración para nuestro dominio:
[root@ldapsrv1 ~]# cat /root/base.ldif
dn: dc=danielcastillo,dc=tech dc: danielcastillo objectClass: top objectClass: domain dn: ou=People,dc=danielcastillo,dc=tech ou: People objectClass: top objectClass: organizationalUnit dn: ou=Group,dc=danielcastillo,dc=tech ou: Group objectClass: top objectClass: organizationalUnit
10.1. Agregamos la entrada anterior usando ldapmodify
[root@ldapsrv1 ~]# ldapadd -x -w redhat -D cn=Manager,dc=danielcastillo,dc=tech -f /root/base.ldif
11. Creamos 2 usuarios y grupos de prueba, primero local y luego los migramos a formato ldif:
[root@ldapsrv1 migrationtools]# useradd ldapuser1 [root@ldapsrv1 migrationtools]# useradd ldapuser2 [root@ldapsrv1 migrationtools]# echo "redhat" | passwd --stdin ldapuser1 [root@ldapsrv1 migrationtools]# echo "redhat" | passwd --stdin ldapuser2 [root@ldapsrv1 migrationtools]# grep ":10[0-9][1-9]:" /etc/passwd > /root/passwd [root@ldapsrv1 migrationtools]# grep ":10[0-9][1-9]:" /etc/group > /root/group [root@ldapsrv1 migrationtools]# ./migrate_passwd.pl /root/passwd /root/users.ldif [root@ldapsrv1 migrationtools]# ./migrate_group.pl /root/group /root/groups.ldif
11.1 Agregamos los grupos y los usuarios a nuestro servidor OpenLDAP:
[root@ldapsrv1 migrationtools]# ldapadd -x -w redhat -D cn=Manager,dc=danielcastillo,dc=tech -f /root/groups.ldif
[root@ldapsrv1 migrationtools]# ldapadd -x -w redhat -D cn=Manager,dc=danielcastillo,dc=tech -f /root/users.ldif
12. Probamos la configuracion con un la utilidad ldapsearch:
[root@ldapsrv1 migrationtools]# ldapsearch -x cn=ldapuser1 -b dc=danielcastillo,dc=tech
13. Configuración de Firewall:
Agregamos el nuevo servicio a las reglas del firewall:
[root@ldapsrv1 ~]# firewall-cmd --permanent --add-service=ldap success [root@ldapsrv1 ~]# firewall-cmd --reload success14. Configuracion de rsyslog:
Edita el archivo /etc/rsyslog.conf y añade a siguiente linea:
local4.* /var/log/ldap.log14.1. Reinicia el servicio rsyslog:
[root@ldapsrv1 ~]# systemctl restart rsyslog
Bonus Track
Compartir los home-directory con el cliente de OpenLDAP via NFS:
Server Pre-requisitos:
1. Abrir las reglas necesarias en el firewall:
[root@ldapsrv1 ~]# firewall-cmd --permanent --add-service=nfs [root@ldapsrv1 ~]# firewall-cmd --reload
2. Instalar los paquetes e iniciar los servicios necesarios para compartir los directorios via NFS:
[root@ldapsrv1 ~]# yum -y install rpcbind nfs-utils[root@ldapsrv1 ~]# systemctl enable rpcbind [root@ldapsrv1 ~]# systemctl enable nfs-server [root@ldapsrv1 ~]# systemctl start rpcbind [root@ldapsrv1 ~]# systemctl start nfs-server
3. Definir y exportar el directorio que se va a compartir:
[root@ldapsrv1 ~]# cat /etc/exports /home *(rw,sync,no_root_squash)
En el cliente (para compartir home directory):
1. Actualizar el sistema:
[root@ldapclt ~]# yum -y update
2. Instalar los paquetes necesarios:
[root@ldapclt ~]# yum install -y nfs-utils autofs openldap-clients nss-pam-ldapd3. Editar el archivo maestro de configuración del servicio autofs:
[root@ldapclt ~]# cat /etc/auto.master /home /etc/home.map4. Creamos el archivo autofs map:
[root@ldapclt ~]# cat /etc/home.map * -fstype=nfs,rw,nosuid,soft ldapsrv1.danielcastillo.tech:/home/&5. Habilitamos e iniciamos los servicios necesarios:
[root@ldapclt ~]# systemctl enable rpcbind [root@ldapclt ~]# systemctl start rpcbind [root@ldapclt ~]# systemctl enable autofs [root@ldapclt ~]# systemctl start autofs
En el cliente (para habilitar la autenticacion OpenLDAP):
6. Configuramos la autenticación usando la utilidad authconfig-tui:[root@ldapclt ~]# authconfig-tui
7. Probamos con el usuario ldapuser1 que la autenticacion esta funcionando:
[root@ldapclt ~]# getent passwd ldapuser1 ldapuser1:x:1001:1001:ldapuser1:/home/ldapuser1:/bin/bash
Este comentario ha sido eliminado por un administrador del blog.
ResponderEliminarEste comentario ha sido eliminado por un administrador del blog.
ResponderEliminar