Configurar servidor de autenticacion usando YaST
Las personas encargadas de la edición de esta página consideran que aún necesario efectuar cambios, quizás importantes, en la misma. |
Contenido
- 1 Introducción
- 2 ¿Qué se requiere?
- 3 Pasos previos
- 4 Configuración servidor de autenticación
- 5 Creación de usuarios y grupos
- 6 Adicionales
- 7 Configuración de clientes
- 8 Kerberos / NFS
- 9 SSH Single Sign ON
- 10 Registros DNS
- 11 Por Hacer - To Do
- 12 Bibliografía
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
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
Certificados --> Exportar --> Exportar a Fichero
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
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
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
Enter en Siguiente
En Tipo de servidor, enter en Servidor autónomo
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
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
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
Enter en Siguiente
En la pantalla Resumen de configuración de servidor de autenticación revise el resumen
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
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
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
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
Enter en Aceptar
Después de esto regresa a la pantalla de Gestionar inicio de sesión de usuarios de dominio
Enter en Aceptar
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
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
En esta pantalla cambiamos los valores de suseMinUniqueId' por 10000 y suseNextUniqueId por 10000
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)
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..
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
--> Directorios --> /home --> Comodín del host --> * --> Opciones --> rw,no_subtree_check,no_root_squash,sec=krb5 --> Terminar
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
- https://help.ubuntu.com/community/NFSv4Howto
- https://www.centos.org/docs/5/html/Deployment_Guide-en-US/s1-nfs-client-config-options.html
- http://labs.opinsys.com/blog/2010/02/22/setting-up-nfsv4kerberosautofs5-ldap-on-ubuntu-10-04-alpha-2-lucid-part-7/
- https://docs.oracle.com/cd/E24842_01/html/E23286/aadmin-10.html
- https://fedorahosted.org/penrose/wiki/NIS%20Automounts
- https://wiki.debian.org/NFS/Kerberos
- https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Deployment_Guide/SSSD-Troubleshooting.html
- https://docs.fedoraproject.org/en-US/Fedora/17/html/System_Administrators_Guide/sect-SSSD_User_Guide-Configuring_Domains-Setting_up_Kerberos_Authentication.html
- http://web.mit.edu/kerberos/krb5-1.6/krb5-1.6.3/doc/krb5-admin.html
- https://www.linuxito.com/seguridad/366-verificar-conexiones-ssl-tls-desde-linea-de-comandos-con-openssl
- http://serverfault.com/questions/228157/setting-up-openldap-for-ldaps-with-cn-config
- http://www.barryodonovan.com/2013/01/25/securing-ldap-with-tls-ssl
- https://medium.com/@griggheo/notes-on-ldap-server-setup-and-client-authentication-546f51cbd6f4#.63falddy1
Estos 3 son claves para proteger todo el trafico ldap