Configurar un sistema para que utilice un servicio de autenticación existente para la información de usuarios y grupos

Este tema en lo particular se me hace bien facil explicarlo, pero se que es crucial en el examen. Digo esto, ya que es un tema que se divide en dos partes. La primera parte es la configuracion de su servidor para que los usuarios existentes en el servidor ldap puedan autenticarse localmente usando sus credenciales pertinentes. A su vez, tambien hay que configurar el directorio personal de cada usuario para que cuando estos inicien sesion se monte automaticamente. Este ultimo paso es mas conocido como “autofs” en general.

Ya sabiendo esto mas a proceder con los datos que vamos a necesitar para este ejercicio. Estos datos se los deben proporcionar cuando usted se presente al examen. Los datos a continuacion pueden variar o ser diferentes de acuerdo a como usted tenga su laboratorio de practicas creado.

Servidor LDAP: labipa.example.com
Direccion IP del servidor LDAP: 192.168.4.200
La base DN de autenticacion del servidor LDAP es: dc=example, dc=com
Certificado CA: ftp://labipa.example.com/pub/ca.crt
Utilizar conneccion segura: si (TLS)
Usuario LDAP: ldapuser{1..5}
Clave de usuarios LDAP: password
Directorio personal de usuarios ldap: labipa.example.com:/home/ldap/ldapuser{1..5}

Coniciendo ya estos datos, es de entender que usted ya ha configurado su red y los repositorios previamente, ya que de lo contrario no sera posible completar este ejercicio.

Para comenzar debemos de instalar los paquetes necesarios en el servidor que se va a unir al servidor LDAP.

[root@class2 ~]# yum install -y sssd authconfig-gtk
Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
Resolving Dependencies
--> Running transaction check
---> Package authconfig-gtk.x86_64 0:6.2.8-14.el7 will be installed
---> Package sssd.x86_64 0:1.14.0-43.el7 will be installed
...
...
Installed:
authconfig-gtk.x86_64 0:6.2.8-14.el7                                            sssd.x86_64 0:1.14.0-43.el7

Dependency Installed:
c-ares.x86_64 0:1.10.0-3.el7                        cyrus-sasl-gssapi.x86_64 0:2.1.26-20.el7_2            libdhash.x86_64 0:0.4.3-27.el7
libipa_hbac.x86_64 0:1.14.0-43.el7                  libsss_autofs.x86_64 0:1.14.0-43.el7                  libsss_sudo.x86_64 0:1.14.0-43.el7
python-sssdconfig.noarch 0:1.14.0-43.el7            sssd-ad.x86_64 0:1.14.0-43.el7                        sssd-common.x86_64 0:1.14.0-43.el7
sssd-common-pac.x86_64 0:1.14.0-43.el7              sssd-ipa.x86_64 0:1.14.0-43.el7                       sssd-krb5.x86_64 0:1.14.0-43.el7
sssd-krb5-common.x86_64 0:1.14.0-43.el7             sssd-ldap.x86_64 0:1.14.0-43.el7                      sssd-proxy.x86_64 0:1.14.0-43.el7

Complete!
[root@class2 ~]#

Ya habiendo instalado los paquetes necesarios, procedemos a la configuracion con el paquete “authconfig-gtk”
Es valido aclarar que esta configuracion la puede realizar tambien via cli, o authconfig-tiu ; pero para que hacer las cosas mas dificiles cuando tienes la posibilidad de realizar esto de una forma segura y sin margen de error. Y como siempre les comentos a mis estudiantes, hay que ahorar tiempo en el examen y hacer las cosas de la forma mas facil que sea posible. Ya que lo importante es el resultado.

Entonces ejecutamos el comando “authconfig-gtk”


A partir de aqui, es solo completar los campos con la informacion previamente proporcionada:

User Account Database: LDAP
LDAP Search Base DN: dc=example,dc=com
LDAP Server: labipa.example.com
Use TLS to encript cconnections: YES
Download CA Certificate: ftp://labipa.example.com/pub/ca.crt
Authentication Method: LDAP password

Para el certificado CA, yo recominedo ejecutar en un terminal los siguiente:

[root@class2 ~]# curl ftp://labipa.example.com/pub/ca.crt
-----BEGIN CERTIFICATE-----
MIIDjjCCAnagAwIBAgIBATANBgkqhkiG9w0BAQsFADA2MRQwEgYDVQQKDAtFWEFN
UExFLkNPTTEeMBwGA1UEAwwVQ2VydGlmaWNhdGUgQXV0aG9yaXR5MB4XDTE2MDQx
NzA5NDI0MVoXDTM2MDQxNzA5NDI0MVowNjEUMBIGA1UECgwLRVhBTVBMRS5DT00x
.....

De esta forma sabemos que el certificado es alcanzable por nuestro servidor, y tambien nos evitamos cometer un error.

Una vez realizado estos cambios, en el menu de “Opciones Avanzadas”, nosotros no vamos a marcar “Create home directories on the first login”
Porque no vamos hacer esto. Ya que el directorio personal va a ser montado con “autofs”. Entonces ahora presionamos “Apply” y esperamos que todo los cambios queden gusrdados y se cierre la ventana.


Entonces ahora solo nos queda reiniciar el servicio “sssd” , y verificar:

[root@class2 ~]# systemctl restart sssd
[root@class2 ~]# systemctl is-enabled sssd
enabled
[root@class2 ~]#
[root@class2 ~]# getent passwd ldapuser1
ldapuser1:*:699000001:699000001:ldapuser1 ldapuser1:/home/ldap/ldapuser1:/bin/sh
[root@class2 ~]# getent passwd ldapuser2
ldapuser2:*:699000003:699000003:ldapuser2 ldapuser2:/home/ldap/ldapuser2:/bin/sh
[root@class2 ~]#

Como ven, todo esta perfecto, ahora vamos a iniciar sesion como “ldapuser1”

[root@class2 ~]# ssh ldapuser1@localhost
The authenticity of host 'localhost (::1)' can't be established.
ECDSA key fingerprint is 65:16:d2:b6:f3:83:2f:70:75:b8:01:78:73:e2:71:16.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'localhost' (ECDSA) to the list of known hosts.
ldapuser1@localhost's password:
Could not chdir to home directory /home/ldap/ldapuser1: No such file or directory
-sh-4.2$ pwd
/
-sh-4.2$ exit
logout
Connection to localhost closed.
[root@class2 ~]#

Como ven, nos pudimos conectar, pero aun tenemos un error, y es que el directorio personal del usuario no fue encontrado.

Esto lo vamos a solucionar con la segunda parte de este ejercicio, que es “configurar autofs”.
Entonces lo que debemos hacer es intalar los paquetes necesarios:

[root@class2 ~]# yum -y install autofs
Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
Resolving Dependencies
--> Running transaction check
---> Package autofs.x86_64 1:5.0.7-56.el7 will be installed
--> Processing Dependency: libhesiod.so.0()(64bit) for package: 1:autofs-5.0.7-56.el7.x86_64
--> Running transaction check
...
...
Installed:
autofs.x86_64 1:5.0.7-56.el7

Dependency Installed:
hesiod.x86_64 0:3.2.1-3.el7

Complete!
[root@class2 ~]#

Una vez instalado “autofs” es muy importante habilitar el servicio para que inicie con cada reinicio del servidor, este paso yo lo recomiendo cada vez que instalamos un servicio nuevo, ya que es muy facil olvidarse de este paso.

[root@class2 ~]# systemctl enable autofs ; systemctl is-enabled autofs
Created symlink from /etc/systemd/system/multi-user.target.wants/autofs.service to /usr/lib/systemd/system/autofs.service.
enabled
[root@class2 ~]#

Ahora bien, vamos a comenzar con la configuracion de “autofs” para que monte los directorios personales de los usuarios ldapuserX automaticamente.
Para esto vamos a crear un archivo nuevo en donde va a estar la directova que va a utilizar el servicio.
Es valido aclarar que no utilizo los archivos de configuracion del paquete instalado, ya que si se actualiza el paquete podemos correr el riesgo de perder la configuracion, es por eso que es muy recomendable crear archivos nuevos como van a ver a continuacion.
Para eso me gusta utilizar el comando “echo” para tener una vista completa de lo que estoy haciendo. Tambien recuerden la salida del comando “getent passwd ldapuser1”.

[root@class2 ~]# getent passwd ldapuser1
ldapuser1:*:699000001:699000001:ldapuser1 ldapuser1:/home/ldap/ldapuser1:/bin/sh
[root@class2 ~]#
[root@class2 ~]# echo "/home/ldap /etc/directorio-ldap" > /etc/auto.master.d/nuevo.autofs
[root@class2 ~]# echo "ldapuser1 -rw,sync labipa.example.com:/home/ldap/ldapuser1" > /etc/directorio-ldap
[root@class2 ~]#

Vamos a explicar un poco esto. Aqui vemos la salida del comando “getent” , entonces lo que estamos haciendo con el primer “echo” es decir que nos monte en /home/ldap los direcorios personales, esto es replicando lo que hay en el servidor LDAP, que a su vez esta exportando los directorios a travez del servicio “NFS”. Entonce, en el archivo “/etc/directorio-ldap”, es donde va a estar las reglas o configuracion. Y en “etc/auto.master.d/nuevo.autofs” se va a guardar. Es muy importante que este archivo termine con “.autofs”

En el segundo “echo” estamos agregando la configuracion que vamos a utilizar. Es valido aclarar que en esta primera etapa del ejercicio solo estamos montando el directorio personal del usuario “ldapuser1”.
Habiendo realizado esto, entonces procedemos a iniciar el servicio “autofs” y entonces intentamos iniciar sesion nuevamente.

[root@class2 ~]# systemctl start autofs ; systemctl status -l autofs
● autofs.service - Automounts filesystems on demand
Loaded: loaded (/usr/lib/systemd/system/autofs.service; enabled; vendor preset: disabled)
Active: active (running) since Tue 2017-04-25 09:01:30 PDT; 15ms ago
Process: 13416 ExecStart=/usr/sbin/automount $OPTIONS --pid-file /run/autofs.pid (code=exited, status=0/SUCCESS)
Main PID: 13418 (automount)
CGroup: /system.slice/autofs.service
└─13418 /usr/sbin/automount --pid-file /run/autofs.pid

Apr 25 09:01:30 class2.example.com systemd[1]: Starting Automounts filesystems on demand...
Apr 25 09:01:30 class2.example.com automount[13418]: setautomntent: lookup(sss): setautomntent: No such file or directory
Apr 25 09:01:30 class2.example.com systemd[1]: Started Automounts filesystems on demand.
[root@class2 ~]#
[root@class2 ~]# ssh ldapuser1@localhost
ldapuser1@localhost's password:
Last login: Tue Apr 25 09:01:48 2017 from localhost
-sh-4.2$ pwd
/home/ldap/ldapuser1
-sh-4.2$ ls -las
total 0
0 drwxr-xr-x. 4 ldapuser1 root      33 Mar  3 08:42 .
0 drwxr-xr-x. 3 root      root       0 Apr 25 09:02 ..
0 drwxrwxr-x. 3 ldapuser1 ldapuser1 17 Mar  3 08:42 .cache
0 drwxrwxr-x. 3 ldapuser1 ldapuser1 17 Mar  3 08:42 .config
-sh-4.2$ exit
logout
Connection to localhost closed.
[root@class2 ~]#
[root@class2 ~]# df -h | grep ldap
labipa.example.com:/home/ldap/ldapuser1   11G  7.3G  3.0G  72% /home/ldap/ldapuser1
[root@class2 ~]#

Como ven ya tenemos el directorio personal montado. Ahora les voy a mostrar cual es el cambio que hay que realizar si queremos montar el directorio de cada usuario cuando inicie sesion, porque hasta el momento esto no es posible como ven.

[root@class2 ~]# ssh ldapuser2@localhost
ldapuser2@localhost's password:
Could not chdir to home directory /home/ldap/ldapuser2: No such file or directory
-sh-4.2$ pwd
/
-sh-4.2$ exit
logout
Connection to localhost closed.
[root@class2 ~]#

Entonces el archivo que debemos editar es "/etc/directorio-ldap" quedando de esta forma

[root@class2 ~]# cat /etc/directorio-ldap
* -rw,sync labipa.example.com:/home/ldap/&
[root@class2 ~]#

Despues de esto, reiniciamos el servicio “autofs” y probamos.

[root@class2 ~]# systemctl restart autofs ; systemctl status -l autofs
● autofs.service - Automounts filesystems on demand
Loaded: loaded (/usr/lib/systemd/system/autofs.service; enabled; vendor preset: disabled)
Active: active (running) since Tue 2017-04-25 09:06:08 PDT; 16ms ago
Process: 13677 ExecStart=/usr/sbin/automount $OPTIONS --pid-file /run/autofs.pid (code=exited, status=0/SUCCESS)
Main PID: 13679 (automount)
CGroup: /system.slice/autofs.service
└─13679 /usr/sbin/automount --pid-file /run/autofs.pid

Apr 25 09:06:08 class2.example.com systemd[1]: Starting Automounts filesystems on demand...
Apr 25 09:06:08 class2.example.com automount[13679]: setautomntent: lookup(sss): setautomntent: No such file or directory
Apr 25 09:06:08 class2.example.com systemd[1]: Started Automounts filesystems on demand.
[root@class2 ~]#
[root@class2 ~]#
[root@class2 ~]#
[root@class2 ~]# ssh ldapuser2@localhost
ldapuser2@localhost's password:
Last login: Tue Apr 25 09:04:31 2017 from localhost
-sh-4.2$ pwd
/home/ldap/ldapuser2
-sh-4.2$ exit
logout
Connection to localhost closed.
[root@class2 ~]# ssh ldapuser1@localhost
ldapuser1@localhost's password:
Last login: Tue Apr 25 09:02:55 2017 from localhost
-sh-4.2$ pwd
/home/ldap/ldapuser1
-sh-4.2$ exit
logout
Connection to localhost closed.
[root@class2 ~]#

Listo, facil verdad. Espero que esta explicacion le ayude en su preparacion para el examen.

1 thought on “Configurar un sistema para que utilice un servicio de autenticación existente para la información de usuarios y grupos”

Leave a Reply

Your email address will not be published. Required fields are marked *