Administración de Kerberos

De WikiSalud
Revisión a fecha de 10:40 10 sep 2019; Alortiz (Discusión | contribuciones)

(dif) ← Revisión anterior | Revisión actual (dif) | Revisión siguiente → (dif)
Saltar a: navegación, buscar
Commons-emblem-Under construction-green
Este artículo está en una fase temprana de desarrollo, por lo que puede estar incompleto o tener aún errores de redacción o formato

Este articulo esta seriamente incompleto porque necesita esclarecerse la terminología usada.

Contenido

Resumen

Manual sobre la administración del servidor Kerberos

Introducción

Aunque no sea lo más usual, el hecho que un usuario se autentique en cualquier sistema implica de hecho varios componentes. Para los sistemas GNU/Linux, al menos debemos fijarnos en la definición de usuario y en la autenticación propiamente dicha del usuario. La definición del usuario se refiere a cosas tan fundamentales como el nombre de usuario (uid), el identificador numérico de usuario (uiNumber), ¿Cuál consola deberá usar (loginShell) según la normativa institucional)?, ¿Dónde se alojarán los datos dentro del equipo en el cual inicie sesión (homeDirectory)?; así como cuestiones de carácter más bien informativo, tal como su nombre (gecos).

La autenticación es algo más complicado. En realidad, el proceso implica métodos de verificar que el usuario es quién dice hacer (Por credenciales usuario/contraseña, por tickets OTP, por certificados digitales). En este caso, la autenticación se realiza en base a usuario/contraseña, con la diferencia que han de verificarse bajo el proceso ya conocido por kerberos (Lo que viene a significar al final de cuentas que, aunque se usen tales, no viajarán nunca por la red, entre otras cosas al menos)

Procedimiento

En el servidor

Creación de usuarios

El proceso a continuación descrito pareciera que crea dos veces a los usuarios. En realidad, tal como la introducción debiera sugerirle, definimos al usuario bajo la rama ou=Users de nuestro árbol LDAP, y creamos las credenciales a usar por Kerberos bajo cn=krbcontainer, en su dominio específico. Es posible que la misma entrada en ou=Users sirva para Kerberos, en este caso, agregaría a dicha entrada los atributos LDAP necesarios. Por otra parte, parece ser que complicamos tantos menos los permisos.

Una de las definiciones de usuario más sencillas podría ser de la siguiente forma:

dn: uid=alortiz,ou=Users,dc=salud,dc=gob,dc=sv
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: posixAccount
businessCategory: owncloud
cn: Alexander Ortíz
st: Nivel Administrativo Superior
displayName: Alexander Ortíz
gecos: Alexander Ortiz
gidNumber: 1020
givenName: Alexander
homeDirectory: /home/alortiz
loginShell: /bin/bash
mail: alortiz@salud.gob.sv
o: Ministerio de Salud de El Salvador
ou: DTIC
postalAddress: 1610612736
sn: Ortíz
telephoneNumber: 7459
title: Asistente Administrativo
uid: alortiz
uidNumber: 1005

Guardamos esto en un fichero .ldif y podemos agregarlo a nuestro directorio con ldapadd

ldapadd -D cn=admin,dc=salud,dc=gob,dc=sv -w srv2025 -f alortiz.ldif

Vale la pena destacar que ni siquiera agregamos el objectClass shadowAccount, porque no vamos a necesitar los atributos. Tampoco agregamos userPassword, aunque sea posible. Por otra parte, esto inhabilita a los usuarios de poder autenticarse al servidor LDAP por si mismo, lo cual, podría considerarse, es algo bueno.

Aprovechando la creación de nuestro usuario, crearemos el grupo al cual pertenece el usuario. Creamos el fichero con el original nombre de grupos.ldif con el siguiente contenido:

dn: cn=owncloud,ou=Groups,dc=salud,dc=gob,dc=sv
objectClass: top
objectClass: posixGroup
cn: owncloud
gidNumber: 1020
memberUid: alortiz

Y sí, aplicamos ldapadd de la forma ya conocida

ldapadd -D cn=admin,dc=salud,dc=gob,dc=sv -w srv2025 -f grupos.ldif

Luego, creamos sus credenciales en kerberos:

root@kerberos:~# kadmin -p admin/admin
Authenticating as principal admin/admin with password.
Password for admin/admin@SALUD.GOB.SV: 
kadmin:  add_principal alortiz
WARNING: no policy specified for alortiz@SALUD.GOB.SV; defaulting to no policy
Enter password for principal "alortiz@SALUD.GOB.SV": 
Re-enter password for principal "alortiz@SALUD.GOB.SV": 
Principal "alortiz@SALUD.GOB.SV" created.

Que si no es posible verlo, lo que hacemos es usar el comando add_principal dentro de la consola administrativa de kerberos, kadmin. Así, sencillo e indoloro

Estos dos pasos, de forma indisoluble, conforman la creación de usuarios bajo un dominio como el nuestro.

En el cliente

Esta configuración no tiene que ser tan complicada como lo era antes. En realidad, es un sólo paquete, SSSD, que es capaz de manejar todos los componentes antes descritos para hacer posible al usuario autenticarse con credenciales remotas. Menos configuración, y por tanto, menos posibilidades de equivocarse.

Autenticación remota

Instalamos los paquetes necesarios:

aptitude install sssd

Configuramos a SSSD, configurando el fichero /etc/sssd/sssd.conf con el siguiente contenido:

[sssd]
#debug_level = 0xFFF0
config_file_version = 2
services = nss, pam
domains = salud.gob.sv

[nss]
filter_groups = root
filter_users = root

[pam]

[domain/salud.gob.sv]
cache_credentials = True
enumerate = False

auth_provider = krb5
chpass_provider = krb5
access_provider = simple
krb5_server = kerberos.salud.gob.sv
krb5_realm = SALUD.GOB.SV

id_provider = ldap

ldap_schema = rfc2307bis
ldap_uri = ldap://kerberos.salud.gob.sv
ldap_search_base = dc=salud,dc=gob,dc=sv
ldap_user_search_base = ou=Users,dc=salud,dc=gob,dc=sv
ldap_group_search_base = ou=Groups,dc=salud,dc=gob,dc=sv

ldap_user_uuid = entryuuid
ldap_group_uuid = entryuuid

ldap_id_use_start_tls = True
ldap_tls_cacertdir = /etc/ssl/certs
ldap_tls_cacert = /etc/ssl/certs/CA-sv.crt

Si es que varios usuarios podrían usar el mismo equipo, podemos automatizar la creación del directorio de usuario agregando

session    required                     pam_mkhomedir.so skel=/etc/skel/ umask=0022

hacia el final de /etc/pam.d/common-auth

Herramientas personales
Espacios de nombres

Variantes
Acciones
Navegación
Herramientas