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 server)

[root@linuxhost ~]# chronyd -q
2018-06-13T19:29:20Z chronyd version 3.2 starting (+CMDMON +NTP +REFCLOCK +RTC +PRIVDROP +SCFILTER +SECHASH +SIGND +ASYNCDNS +IPV6 +DEBUG)
2018-06-13T19:29:20Z Initial frequency -32.310 ppm
2018-06-13T19:29:25Z System clock wrong by 0.000000 seconds (step)
2018-06-13T19:29:25Z chronyd exitin

3. Revisar que uno de los DNS sea el server ad:

[root@linuxhost ~]# cat /etc/resolv.conf
nameserver 192.168.1.100

4. Revisar que el “hostname” esta correctamente configurado:

[root@linuxhost ~]# hostname
linuxhost.danielcastillo.tech

5. Instalar los paquetes necesarios:

[root@linuxhost ~]# yum install realmd oddjob oddjob-mkhomedir sssd adcli
krb5-workstation samba-common-tools samba-common

6. Al momento de escribir este artículo existia un bug, razón por la cual es recomendable reiniciar el host Linux para evitar el error: 

! Insufficient permissions to join the domain
realm: Couldn't join realm: Insufficient permissions to join the domain

Configuración.

7. Ejecuta un “realm discover” para buscar el ad:

[root@linuxhost ~]# realm discover adwin.danielcastillo.tech
EXAMPLE.COM
  type: kerberos
  realm-name: DANIELCASTILLO.TECH
  domain-name: DANIELCASTILLO.TECH
  configured: no
  server-software: active-directory
  client-software: sssd
  required-package: oddjob
  required-package: oddjob-mkhomedir
  required-package: sssd
  required-package: adcli
  required-package: samba-common-tools

8. Lanzamos el requerimiento para ser parte del dominio ejecutando:

[root@linuxhost ~]# realm join -U unixproxy adwin.danielcastillo.tech
unixproxy pasword:

9. Editar archivo de configuración “/etc/sssd/sssd.conf” y cambia/añade las siguientes lineas:

use_fully_qualified_names=False
fallback_homedir=/home/%u

10. Para aplicar los cambios anteriores, reiniciar el servicio sssd:

[root@linuxhost ~]# systemctl restart sssd

11. Si todo va bien, en este punto ya podemos consultar si la maquina Linux “trae” usuarios desde el AD: (para el ejemplo el usuario “aduser” pertenece a la OU “ad_winsecurity_group”)

[root@linuxhost ~]# getent aduser

12. Lo siguiente es editar el archivo “/etc/sshd/sshd_config” para permitir que los usuarios del OU “ad_win_security_group” se puedan loguear por SSH, cambia/añade las siguientes lineas:

AllowGroups <ad_win_security_group>

13. Reinicia el servicio SSH:

[root@linuxhost ~]# systemctl restart sshd

14. (Opcional) Puedes permitir que estos usuarios usen “sudo” y ejecuten tareas como root.
Ejecuta:

[root@linuxhost ~]# visudo

Añade la linea:

%<ad_win_security_group> ALL=ALL ALL

15. En este punto puedes probar logueandote por ssh con el usuario y contraseña del AD

Consideraciones finales.

16. Este procedimiento se puede implementar com parte de una estrategia de centralización de la administracion de los usuarios.