The wikis are now using the new authentication system.
If you did not migrate your account yet, visit https://idp-portal-info.suse.com/

Configurar servidor de autenticacion usando YaST

Saltar a: navegaci贸n, buscar
Icon-usage.png
Las personas encargadas de la edici贸n de esta p谩gina consideran que a煤n necesario efectuar cambios, quiz谩s importantes, en la misma.

Introducci贸n

"La autenticaci贸n es el acto o proceso para el establecimiento o confirmaci贸n de algo (o alguien) como real. La autenticaci贸n de un objeto puede significar (pensar) la confirmaci贸n de su procedencia, mientras que la autenticaci贸n de una persona a menudo consiste en verificar su identidad"
 --https://es.wikipedia.org/wiki/Autenticaci贸n

Esta es un receta para iniciar el servidor de autenticaci贸n, lo mas seguro posible con las herramientas que provee el sistema, para mas informaci贸n consulte el manual openSUSE 42.2 Security Guide

驴Qu茅 se requiere?

  • Instalar openSUSE 42.2 en modo servidor (obligatorio!), con openssh activado y puerto de openssh abierto, Para pruebas recomiendo VirtualBox una maquina openSUSE virtual requiere 1 Giga byte de ram, despu茅s de instalada la maquina, la memoria ram de la maquina virtual en modo texto se puede reducir hasta unos 300-400 mega bytes de ram, la tarjeta de red NO PUEDE ESTAR CONECTADA A NAT, utilice el modo "red interna" o "adaptador puente", en el modo "red interna" deber谩 hacer una de estas dos cosas, o poner direcciones est谩ticas a el servidor y los clientes, o configurar un servidor dhcp para asignar direcciones a los clientes
  • Manejo de la herramienta YaST.
  • Manejo de la consola de comandos
  • Manejo de editores de consola de comandos tipo vi | nano | pico ...etc.

Pasos previos

  • El ordenador/computador en el que se va a instalar el servidor de autenticaci贸n debe poseer un nombre de dominio completo (Fully Qualified Domain Name o FQDN),
  • Debe usar Wiked para el manejo de tarjetas de red
  • Debe asignarle una direcci贸n est谩tica, por ejemplo 192.168.1.10
  • Preferiblemente el nombre del servidor resuelto en un DNS local... para configurar un dns local sugiero el siguiente video Configuraci贸n ddns + dhcp usando la herramienta YaST de openSUSE). en youtube hay muchos videos explicativos de como hacer esto, el anterior es uno de ellos
  • Si no desea configurar un DNS, Asigne un nombre a la m谩quina. Aqu铆 entra la herramienta YaST --> Sistemas --> Ajustes de Red-->Nombre de Host/DNS. Puede asignar el nombre que quiera, para efectos de este tutorial es srv01.antiquitera.site.(esto es equivalente a editar el archivo /etc/hosts y colocar una entrada 192.168.1.10 srv01.antiquitera.site), adicionalmente en cada cliente deber谩 editar el archivo /etc/hosts y agregar una entrada para el servidor de autenticaci贸n por ejemplo 192.168.1.10 srv01.antiquitera.site

Screenshot 20161212 124313.png

Enter en Aceptar

Configuraci贸n servidor de autenticaci贸n

Certificados X.509

Necesitamos Certificados. O se compran o utiliza la siguiente receta Creacion de certicados autofirmados usando YaST
Adicionalmente debe exportar a los clientes el certificado autofirmado, si uso la receta anterior, siga el siguente procedimiento

srv01:~ # yast ca_mgm 

Ingrese por la Sub CA Root --> Introducir CA --> Introducir contrase帽a --> Aceptar
Screenshot 20161228 233021.png
Certificados --> Exportar --> Exportar a Fichero
Screenshot 20161228 233059.png
Seleccione: Solo el certificado en formato PEM --> Ingrese la Contrase帽a del certificado --> e introduzca la ruta donde se almacenara el certificado --> Finalice con Enter en Aceptar
Screenshot 20161228 233510.png
Este archivo debe ser copiado en los clientes una forma segura de hacerlo es con scp

srv01:~ # scp /home/jzea/YaST-CA.pem  root@client1.antiquitera.site:/etc/pki/trust/anchors/YaST-CA.pem

Para un cliente openSUSE es conveniente que el archivo se copie con ese nombre YaST-CA.pem en esa ruta /etc/pki/trust/anchors esa es la ruta y el nombre de archivo de certificado que openSUSE utiliza de forma predeterminada

Software necesario

Instale mediante Yast--> Instalar/desinstalar-->Buscar frase-->yast2-auth-server o bien en la l铆nea de comandos como root ejecute:</tt>.

srv01:/home/jzea# zypper in yast2-auth-server

Reinicie YaST, en el apartado Servicios de red debe aparecer el icono Servidor de autenticaci贸n

Screenshot 20161213 133056.png

Configuraci贸n servidor de autenticaci贸n

Enter en Servidor de autenticaci贸n
Al ejecutar el servidor de autenticaci贸n, este inicia instalando el software necesario..
Enter en Instalar

En la pantalla de Ajustes generales seleccionamos iniciar el servidor LDAP, Enter en Si y en Ajustes del cortafuegos,apartado Configuraci贸n de cortafuegos para SUSEfirewall2, Enter en Puerto abierto en el cortafuegos

Screenshot 20161213 133914.png

Enter en Siguiente

En Tipo de servidor, enter en Servidor aut贸nomo

Screenshot 20161213 133931.png

Enter en Siguiente

Si realizo el procedimiento de creaci贸n de certificados propuesto en Certificados_X.509 no hay nada mas que hacer, si realizo sus propios certificados usando en la l铆nea de comandos openssl o GNUTLS , introduzca las rutas a sus certificados

Screenshot 20161213 134007.png

Enter en Siguiente

En la pantalla Configuraci贸n b谩sica de la base de datos escribimos la contrase帽a del Administrador de Ldap en el campo Contrase帽a del administrador LDAP y repetimos la misma contrase帽a en Validar contrase帽a, para esto utilice letras en may煤sculas y min煤sculas y n煤meros, no utilice caracteres acentuados ni s铆mbolos, y adicionalmente no introduzca nada trivial

Screenshot 20161213 134037.png

Enter en Siguiente

En Autenticaci贸n kerberos, apartado Habilitar la autenticaci贸n kerberos enter en Si, inmediatamente se debe instalar software adicional, de enter en Instalar

Screenshot 20161213 134101.png

Enter en Siguiente

En la pantalla Resumen de configuraci贸n de servidor de autenticaci贸n revise el resumen

Screenshot 20161213 134158.png

Enter en Terminar

Con esto se finaliza la configuraci贸n muy b谩sica de un servidor de Autenticaci贸n

Retoques manuales

Los servicios involucrados son slapd.service, krb5kdc.service, y kadmind.service

srv01:/usr # systemctl status slapd.service 
鈼 slapd.service - OpenLDAP Server Daemon
   Loaded: loaded (/usr/lib/systemd/system/slapd.service; enabled; vendor preset: disabled)
   Active: active (running) since mar 2016-12-13 13:42:08 COT; 17min ago
 Main PID: 20775 (slapd)
    Tasks: 7 (limit: 512)
   CGroup: /system.slice/slapd.service
           鈹斺攢20775 /usr/sbin/slapd -h ldap:///  ldapi:/// -F /etc/openldap/slapd.d -u ldap -g ldap -o slp=off 
dic 13 13:42:07 srv02.antiquitera.site systemd[1]: Starting OpenLDAP Server Daemon...
dic 13 13:42:07 srv02.antiquitera.site slapd[20750]: @(#) $OpenLDAP: slapd 2.4.44 $
                                                           opensuse-buildservice@opensuse.org
dic 13 13:42:08 srv02.antiquitera.site slapd[20775]: slapd starting
dic 13 13:42:08 srv02.antiquitera.site start[20750]: Starting ldap-server
dic 13 13:42:08 srv02.antiquitera.site systemd[1]: Started OpenLDAP Server Daemon.


srv01:/usr # systemctl status krb5kdc.service 
鈼 krb5kdc.service - Kerberos 5 KDC
   Loaded: loaded (/usr/lib/systemd/system/krb5kdc.service; enabled; vendor preset: disabled)
   Active: active (running) since mar 2016-12-13 13:42:10 COT; 17min ago
 Main PID: 20834 (krb5kdc)
    Tasks: 1 (limit: 512)
   CGroup: /system.slice/krb5kdc.service
           鈹斺攢20834 /usr/lib/mit/sbin/krb5kdc -P /var/run/krb5kdc.pid 
dic 13 13:42:10 srv02.antiquitera.site systemd[1]: Starting Kerberos 5 KDC...
dic 13 13:42:10 srv02.antiquitera.site systemd[1]: Started Kerberos 5 KDC.


srv01:/usr # systemctl status kadmind.service 
鈼 kadmind.service - Kerberos 5 Password-changing and Administration
   Loaded: loaded (/usr/lib/systemd/system/kadmind.service; enabled; vendor preset: disabled)
   Active: active (running) since mar 2016-12-13 13:42:11 COT; 17min ago
 Main PID: 20878 (kadmind)
    Tasks: 1 (limit: 512)
   CGroup: /system.slice/kadmind.service
           鈹斺攢20878 /usr/lib/mit/sbin/kadmind -P /var/run/kadmind.pid 
dic 13 13:42:11 srv02.antiquitera.site systemd[1]: Starting Kerberos 5 Password-changing and Administration...
dic 13 13:42:11 srv02.antiquitera.site systemd[1]: Started Kerberos 5 Password-changing and Administration.

Revise el archivo encargado de arrancar el demonio kadmind.service

srv01:/usr # cat /usr/lib/systemd/system/kadmind.service
[Unit]
Description=Kerberos 5 Password-changing and Administration
After=network.target
ConditionPathExists=!/var/lib/kerberos/krb5kdc/kpropd.acl

[Service]
Type=forking
PIDFile=/var/run/kadmind.pid
EnvironmentFile=-/etc/sysconfig/kadmind
ExecStart=/usr/lib/mit/sbin/kadmind -P /var/run/kadmind.pid $KADMIND_ARGS
ExecReload=/bin/kill -HUP $MAINPID

[Install]
WantedBy=multi-user.target

La l铆nea 3 debe quedar

After=network.target slapd.service

Sin este cambio en el siguiente arranque del servidor, el servicio kadmind.service no iniciara, luego de realizar el cambio no olvide ejecutar

systemctl daemon-reload 

Para que el sistema tome el cambio

Creaci贸n de usuarios y grupos

Configuraci贸n de sssd, modulo YaST auth-client

Inicie ejecutando desde la l铆nea de comandos

srv01:/etc/sssd # yast auth-client

Screenshot 20161218 105254.png
Cambiar configuraci贸n --> Seleccionamos las opciones: Permitir inicio de sesi贸n de usuarios de dominio --> Crear directorio --> Usuarios --> Grupos --> y damos enter en la opci贸n de Unirse al dominio
Screenshot 20161218 110013.png
Iniciamos introduciendo: nombre de dominio (en el ejemplo antiquitera.site) --> 驴Qu茅 servicio proporciona datos de identidad, como nombres de usuarios y pertenencia a grupos? --> Servicio de directorio gen茅rico (LDAP) --> en la secci贸n 驴Qu茅 servicio se ocupa de la autenticaci贸n de usuarios? --> seleccione la opci贸n: Servicio Kerberos gen茅rico --> y la opci贸n: Habilitar el dominio

Screenshot 20161218 111509.png
Enter en Aceptar
Iniciamos introduciendo en Dominio Kerberos (p. ej., EJEMPLO.COM) nuestro dominio Kerberos en el ejemplo ANTIQUITERA.SITE este nombre va en may煤sculas, los par谩metros:
-Almacenar credenciales en cach茅 para uso sin conexi贸n
-Tratar los nombres de usuario y grupo distinguiendo may煤sculas de min煤sculas.
-Leer todas las entidades de la base de datos del sistema secundario (aumentar la carga del servidor)
son opcionales, en Direcci贸n IP o nombres de host de servidores de Kerberos (separados por comas) de la direcci贸n del servidor kerberos, en el ejemplo srv01.antiquitera.site, Tipo de esquema LDAP no hay motivos para cambiarlo, deje esta elecci贸n, DN base para b煤squeda LDAP en el ejemplo dc=antiquitera,dc=site, Validar certificaci贸n del servidor en sesi贸n LDAP TLS, seleccione Allow y URI (ldap://) de servidores LDAP (separados por comas), la direcci贸n del servidor (ldap y kerberos pueden estar en servidores separados, en el ejemplo est谩n en el mismo servidor ldap://srv01.antiquitera.site, finalmente no seleccione Espec铆fico de Active Directory) Usar atributo de grupos de testigos si est谩 disponible

Screenshot 20161218 194548.png

Enter en Aceptar

Despu茅s de esto regresa a la pantalla de Gestionar inicio de sesi贸n de usuarios de dominio

Screenshot 20161218 202641.png

Enter en Aceptar


Screenshot 20161218 203608.png

Enter en Terminar

Nota-- B谩sicamente este es mismo procedimiento que hay que hacer en los clientes que se conectar谩n al servidor de autenticaci贸n , para esto utilice yast en su entorno gr谩fico favorito

Configuraci贸n de valores de creaci贸n de usuarios y grupos YaST users

Este proceso se realiza solo una vez

Ejecutamos en la l铆nea de comandos

srv01:~ # yast users

Iniciamos ingresando por Opciones avanzadas seleccionamos Configuraci贸n de usuarios y grupos ldap

Screenshot 20161218 204817.png

Enter en Configurar las opciones de gesti贸n de usuarios, luego de esto introducimos la Contrase帽a del servidor LDAP y damos enter en Aceptar

Screenshot 20161218 210547.png

En esta pantalla cambiamos los valores de suseMinUniqueId' por 10000 y suseNextUniqueId por 10000

Screenshot 20161218 211628.png

luego cambiamos en Modulo de configuraci贸n de groupconfiguration a userconfiguration y cambie los valores suseMaxPasswordLength a 20, suseMinUniqueId a 10000 y suseNextUniqueId a 10000

suseMaxPasswordLength es el n煤mero m谩ximo de caracteres que tendr谩n las contrase帽as en la base de datos de LDAP, si necesita algo mas largo incremente el numero, suseMinUniqueId es el numero inicial a partir de cual se crearan los n煤meros de identificaci贸n id de los usuarios/grupos ldap, si dejamos el valor de 1000 los usuarios/grupos LDAP compartir谩n los mismos n煤meros de identificaci贸n con los usuarios/grupos normales (que tambi茅n inician en el numero 1000)

Screenshot 20161218 212302.png

Finalizamos con enter en Aceptar Esto nos regresa a la pantalla de Ajustes de administraci贸n LDAP damos enter en Aceptar

Creaci贸n de usuarios y grupos

Crear usuarios y grupos en el servidor de autenticaci贸n es igual que crearlos para nuestra maquina openSUSE con la herramienta YaST, solo seleccione Definir filtro y en el men煤 seleccione Usuarios LDAP o Grupos LDAP, dependiendo de la necesidad..

Screenshot 20161218 214507.png

el resto de la creaci贸n es igual que usuarios normales o grupos normales..

Pruebas

Cree un usuario, por ejemplo Juan Zea, jzea despues de creado en la l铆nea de comandos como root ejecute slapcat

srv01:~ # slapcat

debe aparecer al final algo muy similar a lo siguiente

dn: uid=jzea,ou=people,dc=antiquitera,dc=site
cn: Juan Zea
gidNumber: 100
givenName: juan
homeDirectory: /home/jzea
loginShell: /bin/bash
objectClass: top
objectClass: posixAccount
objectClass: inetOrgPerson
sn: Zea
uid: jzea
uidNumber: 10001
userPassword:: e3NzaGF9MmI3dGY2aklaMWNtK3llRy9HSFNNN2NZUnVKU1NGaFlTQT09
structuralObjectClass: inetOrgPerson
entryUUID: bb5e0122-59e2-1036-8946-579cc4fd34d4
creatorsName: cn=Administrator,dc=antiquitera,dc=site
createTimestamp: 20161219025815Z
entryCSN: 20161219025815.835562Z#000000#000#000000
modifiersName: cn=Administrator,dc=antiquitera,dc=site
modifyTimestamp: 20161219025815Z

dn: krbPrincipalName=jzea@ANTIQUITERA.SITE,cn=ANTIQUITERA.SITE,cn=krbContain
 er,dc=antiquitera,dc=site
krbLoginFailedCount: 0
krbPrincipalName: jzea@ANTIQUITERA.SITE
krbPrincipalKey:: MIIBTKADAgEBoQMCAQGiAwIBAaMDAgEBpIIBNDCCATAwVKAHMAWgAwIBAK
 FJMEegAwIBEqFABD4gAPxWA8RvgdFMaMt9ojLVFL3qKBUhJS2olfrLmxf3peam8Tx2nJPV+0XoN
 PCFr9amaLKiZKMWC5XXw1oYTzBEoAcwBaADAgEAoTkwN6ADAgERoTAELhAAHi+w5itXxFD0xKzp
 u5l2/viNoFewwhil4CA7UD52660QrCJgrvQGuB7NaT8wTKAHMAWgAwIBAKFBMD+gAwIBEKE4BDY
 YANypJF/r0OVjRAAK1di3CuT9ZKaSm3qQMO6Na1R2WXk7QlQTRgl6w6P9NyvGGHln6HaVhpQwRK
 AHMAWgAwIBAKE5MDegAwIBF6EwBC4QAERyma/rmQ66XRr3RH85sBrpQYKHYwhnRJ02L+TxEINQ9
 U6Yi83t6ial8jJ7
krbLastPwdChange: 20161219025817Z
krbExtraData:: AALJTFdYcm9vdC9hZG1pbkBBTlRJUVVJVEVSQS5TSVRFAA==
krbExtraData:: AAgBAA==
objectClass: krbPrincipal
objectClass: krbPrincipalAux
objectClass: krbTicketPolicyAux
structuralObjectClass: krbPrincipal
entryUUID: bc4bda46-59e2-1036-8947-579cc4fd34d4
creatorsName: cn=Administrator,dc=antiquitera,dc=site
createTimestamp: 20161219025817Z
entryCSN: 20161219025817.394397Z#000000#000#000000
modifiersName: cn=Administrator,dc=antiquitera,dc=site
modifyTimestamp: 20161219025817Z 


que son tanto el usuario LDAP, como el objeto de kerberos del usuario, si solo aparece lo primero, y no lo segundo, revise todo el procedimiento...

Adicionales

El servidor de autenticaci贸n ya debe funcionar, vamos a probar otras cosas adicionales, se requieren conocimientos de las herramientas del sistema

Archivo /etc/openldap/ldap.conf Servidor y clientes

El archivo /etc/openldap/ldap.conf tiene el siguiente contenido (cambia dependiendo de su configuraci贸n)

host localhost
base    dc=antiquitera,dc=site
binddn  cn=Administrator,dc=antiquitera,dc=site
tls_cacert      /etc/pki/trust/anchors/YaST-CA.pem
TLS_REQCERT   allow

en los clientes debe ser

URI ldap://srv01.antiquitera.site
base    dc=antiquitera,dc=site
binddn  cn=Administrator,dc=antiquitera,dc=site
tls_cacert      /etc/pki/trust/anchors/YaST-CA.pem
TLS_REQCERT   allow

En el cliente solo cambia la l铆nea host localhost por URI ldap://srv01.antiquitera.site, o el nombre de su servidor LDAP, Adicionalmente si aun no lo ha hecho copie el archivo YaST-CA.pem que realizo en el paso Configurar_servidor_de_autenticacion_usando_YaST#Certificados_X.509, a cada cliente.. es muy util el comando scp para estos casos, algo muy parecido a:

client1:~ # scp root@srv01.antiquitera.site:/home/jzea/YaST-CA.pem /etc/pki/trust/anchors/YaST-CA.pem

Todos estos pasos son importantes para hacer funcionar autofs y los perfiles moviles Nota... esta paso puede ser obviado con una completa y correcta configuraci贸n de sssd, si no se incluye el archivo /etc/openldap/ldap.conf, instrucciones como ldapwhoami o ldapsearch no funcionan en el cliente

Instalaci贸n de openldap2-client

Iniciamos con la instalaci贸n de openldap2-client

srv01:~ # sudo zypper in openldap2-client

Esto instala las herramientas para manipular LDAP, ahora ingresamos con nuestro usuario jzea y ejecutamos ldapwhoami

jzea@srv01:~> ldapwhoami
ldap_sasl_interactive_bind_s: No such attribute (16)

Vemos que tal como esta nuestro servidor de autenticaci贸n, la instrucci贸n no funciona, iniciamos consultando al servidor que mecanismos de autenticaci贸n admite

jzea@srv01:~> ldapsearch -h localhost -p 389 -x -b "" -s base -LLL supportedSASLMechanisms
dn:

jzea@srv01:~>

Instalaci贸n de Cyrus-sasl

Como root instalamos

srv01:/home/jzea # zypper in cyrus-sasl-crammd5 cyrus-sasl-digestmd5 cyrus-sasl-gssapi

y reiniciamos el servidor ldap

srv01:/home/jzea # systemctl restart slapd.service
srv01:/home/jzea # ldapsearch -h localhost -p 389 -x -b "" -s base -LLL supportedSASLMechanisms
dn:
supportedSASLMechanisms: GSSAPI
supportedSASLMechanisms: DIGEST-MD5
supportedSASLMechanisms: CRAM-MD5

nuevamente como Juan Zea ejecutamos ldapwhoami

jzea@srv01:~> ldapwhoami
SASL/GSSAPI authentication started
ldap_sasl_interactive_bind_s: Local error (-2)
       additional info: SASL(-1): generic failure: GSSAPI Error: Unspecified GSS failure.  Minor code may provide more information (Server ldap/srv01.antiquitera.site@ANTIQUITERA.SITE not found in Kerberos database)

Con esa informaci贸n creamos los principal ldap/srv01.antiquitera.site y host/srv01.antiquitera.site, y creamos el archivo krb5.keytab, ejecutamos como root, kadmin.local (instrucciones en rojo)

srv01:/home/jzea # kadmin.local
Authenticating as principal jzea/admin@ANTIQUITERA.SITE with password.
kadmin.local:  add_principal -randkey host/srv01.antiquitera.site
WARNING: no policy specified for host/srv01.antiquitera.site@ANTIQUITERA.SITE; defaulting to no policy
Principal "host/srv01.antiquitera.site@ANTIQUITERA.SITE" created.
kadmin.local:  add_principal -randkey ldap/srv01.antiquitera.site
WARNING: no policy specified for ldap/srv01.antiquitera.site@ANTIQUITERA.SITE; defaulting to no policy
Principal "ldap/srv01.antiquitera.site@ANTIQUITERA.SITE" created.
kadmin.local:  ktadd -k /etc/krb5.keytab host/srv01.antiquitera.site
Entry for principal host/srv01.antiquitera.site with kvno 2, encryption type aes256-cts-hmac-sha1-96 added to keytab WRFILE:/etc/krb5.keytab.
Entry for principal host/srv01.antiquitera.site with kvno 2, encryption type aes128-cts-hmac-sha1-96 added to keytab WRFILE:/etc/krb5.keytab.
Entry for principal host/srv01.antiquitera.site with kvno 2, encryption type des3-cbc-sha1 added to keytab WRFILE:/etc/krb5.keytab.
Entry for principal host/srv01.antiquitera.site with kvno 2, encryption type arcfour-hmac added to keytab WRFILE:/etc/krb5.keytab.
kadmin.local:  ktadd -k /etc/krb5.keytab ldap/srv01.antiquitera.site
Entry for principal ldap/srv01.antiquitera.site with kvno 2, encryption type aes256-cts-hmac-sha1-96 added to keytab WRFILE:/etc/krb5.keytab.
Entry for principal ldap/srv01.antiquitera.site with kvno 2, encryption type aes128-cts-hmac-sha1-96 added to keytab WRFILE:/etc/krb5.keytab.
Entry for principal ldap/srv01.antiquitera.site with kvno 2, encryption type des3-cbc-sha1 added to keytab WRFILE:/etc/krb5.keytab.
Entry for principal ldap/srv01.antiquitera.site with kvno 2, encryption type arcfour-hmac added to keytab WRFILE:/etc/krb5.keytab.
kadmin.local:  ktadd -k /etc/krb5.keytab krbtgt/ANTIQUITERA.SITE@ANTIQUITERA.SITE
Entry for principal krbtgt/ANTIQUITERA.SITE@ANTIQUITERA.SITE with kvno 2, encryption type aes256-cts-hmac-sha1-96 added to keytab WRFILE:/etc/krb5.keytab.
Entry for principal krbtgt/ANTIQUITERA.SITE@ANTIQUITERA.SITE with kvno 2, encryption type aes128-cts-hmac-sha1-96 added to keytab WRFILE:/etc/krb5.keytab.
Entry for principal krbtgt/ANTIQUITERA.SITE@ANTIQUITERA.SITE with kvno 2, encryption type des3-cbc-sha1 added to keytab WRFILE:/etc/krb5.keytab.
Entry for principal krbtgt/ANTIQUITERA.SITE@ANTIQUITERA.SITE with kvno 2, encryption type arcfour-hmac added to keytab WRFILE:/etc/krb5.keytab.
kadmin.local: quit

Cambie el propietario del archivo /etc/krb5.keytab de root:root a ldap:ldap

srv01:/home/jzea # chown ldap:ldap /etc/krb5.keytab

Ingrese nuevamente con el usuario Juan Zeajzea y ejecute ldapwhoami

jzea@srv01:~> ldapwhoami
SASL/GSSAPI authentication started
SASL username: jzea@ANTIQUITERA.SITE
SASL SSF: 56
SASL data security layer installed.
dn:uid=jzea,cn=gssapi,cn=auth 

La 煤ltima pieza del rompecabezas, que despu茅s de muchas vueltas estaba en manual de seguridad de openSUSE, copie las siguientes l铆neas en el archivo seg-sasl.ldif

dn: cn=config
add: olcAuthzRegexp
olcAuthzRegexp: uid=(.*),cn=GSSAPI,cn=auth uid=$1,ou=people,dc=antiquitera,dc=site

y ejecute en la l铆nea de comandos como root

srv01:~ # ldapmodify -Y EXTERNAL -H ldapi:/// -f seg-sasl.ldif

Nuevamente ejecute ldapwhoami como un usuario ldap-kerberos

jzea@smb04:~> ldapwhoami
SASL/GSSAPI authentication started
SASL username: jzea@ANTIQUITERA.SITE
SASL SSF: 56
SASL data security layer installed.
dn:uid=jzea,ou=people,dc=antiquitera,dc=site

Tambi茅n puede ejecutar comandos como ldapseach sin par谩metros

SUDO en LDAP

Se instalara sudo en LDAP, y se dara acceso a sudo a todos los usuarios del grupo cn=wheel,ou=group,dc=antiquitera,dc=site

Configuraci贸n de servidor

1. Debe agregar el esquema de sudo, sudo.schema, esto se realiza con yast auth-server-->Configuraci贸n-->Archivo de esquema-->a帽adir-->nombre de fichero-->sudo.schema
2. Debe agregar un 铆ndice con yast auth-server-->Configuraci贸n-->dc=antiquitera,dc=site-->+-->Configuraci贸n de 铆ndices-->A帽adir-->Atributtetypes-->sudoUser-->Igualdad-->Aceptar-->Aceptar
3. Modificar el archivo /etc/sudoers.. como root ejecute visudo (o edite con su editor favorito el archivo /etc/sudoers)

srv01:/etc # visudo

4. Modilfique la l铆nea Defaults secure_path aproximadamente la l铆nea 38

Defaults secure_path="/usr/sbin:/usr/bin:/sbin:/bin"

5. Quite las comillas, debe quedar

Defaults secure_path=/usr/sbin:/usr/bin:/sbin:/bin

6. Modifique esta l铆nea (aproximadamente la l铆nea 43)

Defaults env_keep = "LANG LC_ADDRESS LC_CTYPE LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE LC_TIME LC_ALL LANGUAGE LINGUAS XDG_SESSION_COOKIE"

7. Quite los espacios antes y despu茅s del igual, estos espacios producen un error en la ejecuci贸n de sudo en LDAP, copie y pegue el siguiente contenido

Defaults env_keep="LANG LC_ADDRESS LC_CTYPE LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE LC_TIME LC_ALL LANGUAGE LINGUAS XDG_SESSION_COOKIE XMODIFIERS GTK_IM_MODULE QT_IM_MODULE QT_IM_SWITCHER"

8. Las l铆neas (aproximadamente la l铆nea 63 y 64)

Defaults targetpw   # ask for the password of the target user i.e. root
ALL     ALL=(ALL) ALL   # WARNING! Only use this together with 'Defaults targetpw'!

9. Deben quedar comentadas

#Defaults targetpw   # ask for the password of the target user i.e. root
#ALL     ALL=(ALL) ALL   # WARNING! Only use this together with 'Defaults targetpw'!

10. Y la l铆nea (aproximadamente la l铆nea 76)

# %wheel ALL=(ALL) ALL

11. Debe quedar as铆

%wheel ALL=(ALL) ALL

12. Guarde los cambios
13. Almacene y modifique seg煤n su configuraci贸n las siguientes l铆neas con el nombre sudo.ldif

 dn: ou=SUDOers,dc=antiquitera,dc=site
 objectClass: top
 objectClass: organizationalUnit
 ou: SUDOers

14. Ejecute el siguiente comando

user1@srv01:~> ldapadd -x -f sudo.ldif -h localhost -D cn=Administrator,dc=antiquitera,dc=site -W
Enter ldap password:
adding new entry "ou=SUDOers,dc=antiquitera,dc=site"

15. Ahora como root ejecute (su)

srv01:/home/jzea # SUDOERS_BASE=ou=SUDOers,dc=antiquitera,dc=site
srv01:/home/jzea # export SUDOERS_BASE
srv01:/home/jzea # sudoers2ldif /etc/sudoers > /tmp/sudoers.ldif 
srv01:/home/jzea # ldapadd -f /tmp/sudoers.ldif -h localhost -D cn=Administrator,dc=antiquitera,dc=site -W -x
Enter ldap password:
adding new entry "dn: cn=defaults,ou=SUDOers,dc=antiquitera,dc=site"
adding new entry "dn: cn=root,ou=SUDOers,dc=antiquitera,dc=site"
adding new entry "dn: cn=%wheel,ou=SUDOers,dc=antiquitera,dc=site"

16. Ahora cree un grupo wheel en ldap, como root ejecute yast users-->Grupos->Definir filtros-->Usuarios LDAP-->Contrase帽a de servidor LDAP-->Aceptar-->A帽adir-->Nombre de grupo (wheel)-->Miembros de grupo(seleccionar miembros) -->Aceptar-->Aceptar

Configuraci贸n de cliente

1. En el cliente ejecute yast Auth-Client(user logon management)-->Cambiar Configuraci贸n-->Seleccione Comandos de superusuario (sudo)-->Opciones de dominio-->antiquitera.site-->opciones extendidas-->Filtro de nombres-->digite sudo---> seleccione sudo_provider-->A帽adir-->seleccione "ldap_provider"-->A帽adir-->ldap-->Aceptar-->Opciones extendidas-->Filtro de nombres-->digite sudo-->Seleccione "ldap_sudo_search_base"-->A帽adir-->ou=SUDOers,dc=antiquitera,dc=site-->Aceptar-->Aceptar-->Terminar

O hagalo directamente sobre el archivo /etc/sssd/sssd.conf del cliente (haga esto con sumo cuidado)..

[sssd]
config_file_version = 2
services = pam,nss,sudo
domains = antiquitera.site

[pam]

[nss]

[sudo]

[domain/antiquitera.site]
id_provider = ldap
auth_provider = krb5
ldap_schema = rfc2307bis
enumerate = false
cache_credentials = true
case_sensitive = true
ldap_use_tokengroups = false
ldap_uri = ldap://srv01.antiquitera.site
ldap_search_base = dc=antiquitera,dc=site
ldap_tls_reqcert = allow
krb5_server = srv01.antiquitera.site
krb5_realm = ANTIQUITERA.SITE
sudo_provider = ldap
ldap_sudo_search_base = ou=SUDOers,dc=antiquitera,dc=site

y edite el archivo /etc/nsswitch.conf.. adicione la l铆nea sudoers debe quedar algo parecido a esto

# /etc/nsswitch.conf
#
# An example Name Service Switch config file. This file should be
# sorted with the most-used services at the beginning.
#
# The entry '[NOTFOUND=return]' means that the search for an
# entry should stop if the search in the previous entry turned
# up nothing. Note that if the search failed due to some other reason
# (like no NIS server responding) then the search continues with the
# next entry.
#
# Legal entries are:
#
#       compat                  Use compatibility setup
#       nisplus                 Use NIS+ (NIS version 3)
#       nis                     Use NIS (NIS version 2), also called YP
#       dns                     Use DNS (Domain Name Service)
#       files                   Use the local files
#       [NOTFOUND=return]       Stop searching if not found so far
#
# For more information, please read the nsswitch.conf.5 manual page.
#
# passwd: files nis
# shadow: files nis
# group:  files nis
passwd: compat sss
group:  compat sss
hosts:  files mdns_minimal [NOTFOUND=return] dns
networks:       files dns
services:       files
protocols:      files
rpc:    files
ethers: files
netmasks:       files
netgroup:       files nis
publickey:      files
bootparams:     files
aliases:        files
sudoers:        sss

Si ejecuta sudo en un cliente con un usuario autenticado con permiso de SUDO (en el grupo wheel de LDAP) debe funcionar..

Perfiles moviles AUTOFS

Esto es un ejemplo de lo que se puede hacer con autofs

Configuraci贸n de AUTOFS en el servidor

1. Almacene y modifique seg煤n su configuraci贸n las siguientes l铆neas con el nombre autofs.ldif

dn: ou=AUTOFS,dc=antiquitera,dc=site
objectClass: organizationalUnit
ou: AUTOFS

dn: nisMapName=auto.master,ou=AUTOFS,dc=antiquitera,dc=site
objectClass: nisMap
nisMapName: auto.master

dn: cn=/home,nisMapName=auto.master,ou=AUTOFS,dc=antiquitera,dc=site
objectClass: nisObject
cn: /home
nisMapEntry: ldap:nisMapName=auto.home,ou=AUTOFS,dc=antiquitera,dc=site --timeout=60 --ghost
nisMapName: auto.master

dn: nisMapName=auto.home,ou=AUTOFS,dc=antiquitera,dc=site
objectClass: nisMap
nisMapName: auto.home

dn: cn=/,nisMapName=auto.home,ou=AUTOFS,dc=antiquitera,dc=site
objectClass: nisObject
cn: /
nisMapEntry: -fstype=nfs4,hard,intr,nodev,nosuid srv01.antiquitera.site:/home/&
nisMapName: auto.home

2. Ejecute el siguiente comando

srv01:~> ldapadd -x -f autofs.ldif -h localhost -D cn=Administrator,dc=antiquitera,dc=site -W
Enter ldap password:
adding new entry "ou=AUTOFS,dc=antiquitera,dc=site"
adding new entry "auto.master,ou=AUTOFS,dc=antiquitera,dc=site"
adding new entry "cn=/home, nisMapName=auto.home,ou=AUTOFS,dc=antiquitera,dc=site"
adding new entry "nisMapName=auto.home,ou=AUTOFS,dc=antiquitera,dc=site"
adding new entry "cn=/,nisMapName=auto.home,ou=AUTOFS,dc=antiquitera,dc=site"

Configuraci贸n de NFS en el servidor

Instalar en el servidor el paquete yast2-nfs-server

srv01:~> # zypper in yast2-nfs-server 
Loading repository data...                                                                   
Reading installed packages...                                                                
Resolving package dependencies...                                                             
 
The following 2 NEW packages are going to be installed:                                       
nfs-kernel-server yast2-nfs-server                                                          

The following recommended package was automatically selected:                                 
nfs-kernel-server                                                                           

2 new packages to install.                                                                    
Overall download size: 250.1 KiB. Already cached: 0 B. After the operation, additional 694.4 KiB
will be used.                                                                                 
Continue? [y/n/? shows all options] (y): y
Retrieving package yast2-nfs-server-3.1.9-1.2.noarch       (1/2), 118.2 KiB (214.7 KiB unpacked)
Retrieving: yast2-nfs-server-3.1.9-1.2.noarch.rpm ..........................[done (194.0 KiB/s)]
Retrieving package nfs-kernel-server-1.3.0-24.1.x86_64     (2/2), 131.9 KiB (479.7 KiB unpacked)
Retrieving: nfs-kernel-server-1.3.0-24.1.x86_64.rpm ........................[done (347.0 KiB/s)]
Checking for file conflicts: .............................................................[done]
(1/2) Installing: yast2-nfs-server-3.1.9-1.2.noarch ......................................[done]
(2/2) Installing: nfs-kernel-server-1.3.0-24.1.x86_64 ....................................[done]

Ejecute como root yast nfs_server-->Iniciar-->Puerto abierto en el cortafuegos-->habilitar NFSv4 (el resto dejelo como esta)-->Siguiente-->A帽adir directorio-->/home-->Aceptar-->A帽adir host-->Comodin de servidor--> Opciones -->rw,no_root_squash,sync,no_subtree_check-->Aceptar-->Terminar

No hay que hacer nada especial en la creaci贸n de usuarios y grupos

Configuraci贸n de cliente

Ejecute yast auth-client (User logon management)-->Cambiar configuraci贸n-->antiquitera.site-->Asignar unidades de red (automontaje)-->Opciones de dominio-->Opciones extendidas-->filtro de nombres-->escriba "auto"-->autofs-provider-->A帽adir-->ldap-->Aceptar-->Opciones Extendidas-->escriba "auto"-->ldap_autofs_search_base-->ou=AUTOFS,dc=antiquitera,dc=site-->Aceptar
repita los pasos para estas variables
ldap_autofs_map_object_class nisMap
ldap_autofs_map_name nisMapName
ldap_autofs_entry_object_class nisObject
ldap_autofs_entry_key cn
ldap_autofs_entry_value nisMapEntry
y finalice con-->Aceptar-->Terminar

Configuraci贸n de clientes

Configurar_cliente_servidor_de_autenticacion_usando_YaST

Kerberos / NFS

para kerberos nfs es obligatorio configurar un servidor DDNS - DHCP como el sugerido en Configuraci贸n ddns + dhcp usando la herramienta YaST de openSUSE, hay 3 cosas que se deben cumplir en kerberos para que nfs de acceso a un directorio asegurado,

1. Debe existir el principal nfs/servidor@REALM
2. Debe existir el principal de la maquina cliente nfs/cliente@REALM
3. el usuario debe estar logueado user@REALM

Por que es necesario un servidor DDNS - DHCP...? al intentar realizar un mount

srv01:~ # mount -t nfs4 -o sec=krb5 srv01.antiquitera.site:/home  /mnt/ -vvv
mount.nfs4: timeout set for Mon Jan  9 11:01:57 2017
mount.nfs4: trying text-based options 'sec=krb5,addr=192.168.1.10,clientaddr=192.168.1.10

estas direcciones de servidor y de cliente por medio de resolucion inversa de nombre

srv01@kldap:~> nslookup 192.168.1.10
Server:         127.0.0.1
Address:        127.0.0.1#53

10.1.168.192.in-addr.arpa      name = srv01.antiquitera.site.

es con nombres que se hace la indagaci贸n de la existencia del principal tanto de servidor, como de cliente

Creaci贸n de principales

como root en el servidor ejecute kadmin.local (instrucciones en rojo) srv01:~ # kadmin.local

Authenticating as principal jzea/admin@ANTIQUITERA.SITE with password.
kadmin.local:  add_principal -randkey nfs/srv01.antiquitera.site
WARNING: no policy specified for nfs/srv01.antiquitera.site@ANTIQUITERA.SITE; defaulting to no policy
Principal "nfs/srv01.antiquitera.site@ANTIQUITERA.SITE" created.
kadmin.local:  add_principal -randkey nfs/client1.antiquitera.site
WARNING: no policy specified for nfs/client1.antiquitera.site@ANTIQUITERA.SITE; defaulting to no policy
Principal "nfs/client1.antiquitera.site@ANTIQUITERA.SITE" created.
kadmin.local:  ktadd -k /etc/krb5.keytab nfs/srv01.antiquitera.site
Entry for principal nfs/srv01.antiquitera.site with kvno 2, encryption type aes256-cts-hmac-sha1-96 added to keytab WRFILE:/etc/krb5.keytab.
Entry for principal nfs/srv01.antiquitera.site with kvno 2, encryption type aes128-cts-hmac-sha1-96 added to keytab WRFILE:/etc/krb5.keytab.
Entry for principal nfs/srv01.antiquitera.site with kvno 2, encryption type des3-cbc-sha1 added to keytab WRFILE:/etc/krb5.keytab.
Entry for principal nfs/srv01.antiquitera.site with kvno 2, encryption type arcfour-hmac added to keytab WRFILE:/etc/krb5.keytab.
kadmin.local:  ktadd -k /etc/krb5.keytab nfs/client1.antiquitera.site
Entry for principal nfs/client1.antiquitera.site with kvno 2, encryption type aes256-cts-hmac-sha1-96 added to keytab WRFILE:/etc/krb5.keytab.
Entry for principal nfs/client1.antiquitera.site with kvno 2, encryption type aes128-cts-hmac-sha1-96 added to keytab WRFILE:/etc/krb5.keytab.
Entry for principal nfs/client1.antiquitera.site with kvno 2, encryption type des3-cbc-sha1 added to keytab WRFILE:/etc/krb5.keytab.
Entry for principal nfs/client1.antiquitera.site with kvno 2, encryption type arcfour-hmac added to keytab WRFILE:/etc/krb5.keytab.
kadmin.local: quit

El principal de servidor nfs/srv01.antiquitera.site solo se debe crear una vez, y un principal para cada cliente, aseg煤rese que el nombre del principal y de cada cliente coincidan con su FQDN o nombre cualificado (use esta instrucci贸n en el servidor como en los cliente)

srv01:~ # getent hosts $(hostname) | awk '{print $1; exit}' | xargs getent hosts | awk '{print $2}'

Debe exportar el archivo /etc/krb5.keytab a todos los clientes (con ayuda de scp)

NFS-server Kerberizado

Ejecute Yast nfs_server srv01: ~ # yast nfs_server Servidor NFS -->[x] Iniciar --> [X] Puerto de cortafuegos abierto --> [X] Habilitar NFSv4 --> Especificar Nombre de dominio NFSv4: --> antiquitera.site --> [x] Habilitar seguridad GSS --> Siguiente Screenshot 20170109 125936.png

--> Directorios --> /home --> Comod铆n del host --> * --> Opciones --> rw,no_subtree_check,no_root_squash,sec=krb5 --> Terminar

Screenshot 20170109 125959.png

Aparece un error (ign贸relo)

al finalizar ejecute en el servidor (cualquier cambio en lo que se exporta hay que actualizar lo exportado)

srv01:~ # exportfs -va

los niveles de seguridad en el directorio exportado se establecen con ,sec=krb5, hay 4 niveles de seguridad

  • . sec=sys Es la opci贸n de seguridad por defecto
  • . sec=krb5 Utiliza Kerberos V5 para autenticar usuarios
  • . sec=krb5i Utiliza Kerberos V5 para autenticar usuarios y ejecuta suma de integridad para las operaciones NFS para prevenir modificaci贸n no autorizada de datos (interesante)
  • . sec=krb5p Utiliza Kerberos para autenticar usuarios y ejecuta suma de integridad para las operaciones NFS , y cifrado de trafico NFS, es la opci贸n mas segura y la que mas carga en servidor y cliente impone

Modificaci贸n de AUTOFS

con NFS kerberizado debe cambiar la entrada cn=/,nisMapName=auto.home,ou=AUTOFS,dc=antiquitera,dc=site el atributo nisMapEntry debe quedar as铆 -fstype=nfs4,sec=krb5,hard,intr,nodev,nosuid srv01.antiquitera.site:/home/& Este cambio lo puede hacer con su editor de LDAP favorito uno muy bueno es Apache directory studio

SSH Single Sign ON

Conseguir esto es muy f谩cil... cree un principal host/servidor@REALM y un principal para cada estaci贸n | cliente host/cliente1@REALM...host/clientn@REALM, cree / modifique el archivo /etc/krb5.keytab y exporte este archivo a cada estaci贸n de trabajo, adicionalmente edite el archivo /etc/ssh/ssh_config y modifique estas dos l铆neas

#   GSSAPIAuthentication no
#   GSSAPIDelegateCredentials no

deben quedar

  GSSAPIAuthentication yes
  GSSAPIDelegateCredentials yes

y edite el archivo /etc/ssh/sshd_config, modifique estas dos l铆neas

#GSSAPIAuthentication no
#GSSAPICleanupCredentials yes

deben quedar

GSSAPIAuthentication yes
GSSAPICleanupCredentials yes

reinicie el servicio ssh, tanto en el servidor, como en cada cliente

srv01:~ # systemctl restart sshd.service 

despu茅s de esto desde cualquier estaci贸n de trabajo en la l铆nea de comandos con un usuario autenticado podr谩 hacer

mzea@client1:~> ssh clienteX

recuerde los nombres deben ser de tipo FQDN,

Registros DNS

Kerberos requiere unos registros especiales de dns, este es un ejemplo, debe ajustarlos a sus propios valores

_kerberos               TXT     "ANTIQUITERA.SITE"
_kerberos-adm._tcp      SRV     0 0 749 ns.
_kerberos               SRV     0 0 88 ns.
_kerberos-master        SRV     0 0 88 ns.
_kpasswd                SRV     0 0 464 ns.
_ldap._tcp              SRV     0 0 389 ns.

Por Hacer - To Do

Configuraci贸n de NTP

Para kerberos es .. obligatorio!!(y esto es mas importante que nada..).. pero esto esta documentado en cualquier cantidad de sitios.. y me da pereza...

Kerberos Autofs

Ya puestos en gastos...

Bibliograf铆a

los poderosos manuales de openSUSE (son una maravilla)

y otras referencias que tome

Estos 3 son claves para proteger todo el trafico ldap


--jvelez (discusi贸n) 17:35 27 dic 2016 (UTC) l铆nea