Ir al contenido principal

Como Instalar un server OpenLDAP en Redhat 7

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.ldif
dn: 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.ldif
SASL/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
success

14. Configuracion de rsyslog:

Edita el archivo /etc/rsyslog.conf y añade a siguiente linea:

local4.* /var/log/ldap.log


14.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-ldapd


3. Editar el archivo maestro de configuración del servicio autofs:

[root@ldapclt ~]# cat /etc/auto.master
/home /etc/home.map


4. 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






Comentarios

Publicar un comentario

Entradas populares de este blog

Autenticación Centralizada RHEL/OracleLinux/CentOS 7

En esta oportunidad vamos a configurar una maquina con sistema operativo Linux (RHEL 7) para que pueda autenticar sesiones SSH obteniendo usuarios y credenciales del directorio activo (WINDOWS 2016) El escenario utilizado es el siguiente: - Server Linux (linuxhost.danielcastillo.tech, 192.168.1.2) - AD Server Windows (adwin. danielcastillo.tech,192.168.1.100 ) Pre-requisitos. 1. Un usuario en el AD con permisos para agregar estaciones de trabajo lo llamaremos "unixproxy", Más informacion sobre como hacerlo en el siguiente link: https://www.prajwaldesai.com/allow-domain-user-to-add-computer-to-domain/ 1.1. Una unidad organizacional en el directorio activo de windows lo llamaremos "ad_win_security_group" a ella perteneceran los usuarios que queremos permitir ingresar. 1.2. Un usuario que pertenezca a la OU anterior a este lo llamaremos "aduser" 2. El sistema esta sincronzando con un servidor NTP confiable: (el server NTP debe ser el AD serv

Importar certificado SSL de IIS e implementarlo en un WebServer Linux

Este artículo pretende explicar como implementar en un servidor Linux de la familia Redhat (Redhat, CentOS, Fedora, etc) un certificado wildcard SSL originalmente expedido e instalado en un WebServer IIS. Pre-requisitos. Debemos exportar el conjunto de certificados (en formato .pfx) que ya están instalados en el IIS  y copiarlos  a nuestra maquina Linux: Instalación y Configuración. 1. Instalamos el modulo de criptografía de Apache: [ root@ldapclt ~ ] # yum -y install mod_ssl 2. Extraer el certificado y el  key : [ root@linuxhost ~ ] # openssl pkcs12 -in example.com.pfx -clcerts -nokeys -out <host>.example.com.cer [ root@linuxhost ~ ] # openssl pkcs12 -in example.com.pfx -nocerts -nodes -out <host>.example.com.key 3. Copiamos los archivos resultantres en sus respectivas ubicaciones: [ root@linuxhost ~ ] # rsync -av <host>.example.com.cer /etc/pki/tls/certs/ [ root@linuxhost ~ ] # rsync -av <host>.example.com.key /etc/pki/tls/private/ 4. Editamos