Gestión de usuarios desde LDAP externo en Netezza Performance Server - obsoleto

Este procedimiento está en desuso. Sólo se aplica si su sistema NPS está en la versión 11.0.2.0 o anterior.

Para 11.0.3.0 y versiones posteriores, consulte Gestión de usuarios desde LDAP externo en Netezza Performance Server 11.0.3.1 o posterior.

Si desea que los usuarios de LDAP externo accedan a la base de datos Netezza Performance Server, deberá añadirlos manualmente y configurar la autenticación.

Antes de empezar

  • El administrador debe asegurarse de que cada usuario de NPS también esté definido en el catálogo del sistema NPS. Los nombres de usuario de NPS deben coincidir con los nombres de usuario definidos en el servidor LDAP/AD.
  • Asegúrese de que existe comunicación entre el host NPS y el servidor LDAP/AD. Para ello, añada la línea siguiente en /etc/hosts en el host NPS con usuario root, por ejemplo:
    cat /etc/hosts 
    127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
    ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
    <LDAP Server IP> <LDAP FQDN> <LDAP Server short name>
    

    Puede realizar una comprobación cruzada de la conexión utilizando ping <LDAP/AD server> o ssh <LDAP/AD server> .

  • Recopile la siguiente información de un administrador de LDAP:
    Nombre Obligatorio Valor predeterminado Descripción
    servidor LDAP   Host en el que funciona LDAP
    base   Nodo del árbol LDAP en el que se buscarán los usuarios de LDAP (es decir, OU=ForNetezza, DC=KSL, DC=lab)
    (RoCE)   Puerto en el que el servidor LDAP está a la escucha (predeterminado 389 para no SSL)
    BINDDN Nee   Nombre completo del usuario que tendrá acceso al subárbol base en el servidor LDAP. Debe especificarse si no se permite el acceso anónimo al servidor LDAP (por ejemplo, "cn=netezza_user, cn=Users, dc=KSL, dc=lab")
    BINDPW Nee   Contraseña para el usuario BINDDN
    ATTRNAME Nee “cn” Atributo LDAP que se utilizará para definir el ID de usuario. Normalmente se utiliza 'sAMAccountName' (nombre de cuenta exclusivo, como jkowalski)
  • Verifique el nombre del servidor y el puerto en el que se está ejecutando LDAP. Para verificar si el puerto no está bloqueado por el cortafuegos, puede ejecutar el mandato siguiente:
    telnet <host_name> <port>
    
    ldapsearch -v -h <ldap_server> -b <base> -D <binddn> -p <port> -x -w <bindpw>
    
    Mandato de ejemplo: ldapsearch -v -h <ldap_server> -p 389 -D "cn=admin,dc=somedomain,dc=com" -x -w adminpass

Pasos para realizar en el servidor LDAP

El procedimiento siguiente añade un usuario de test_ldap ejemplar en el servidor LDAP. Estos pasos sólo son necesarios si los usuarios de LDAP no están ya presentes y quiere crear uno nuevo.

Procedimiento

  1. Cree un archivo ldif en cualquier ubicación, como en el siguiente ejemplo:
    root@LDAP_SERVER:~#cat test_ldap.ldif
    
    dn: uid=test_ldap,ou=users,dc=somedomain,dc=com
    uid: test_ldap
    cn: test_ldap
    objectClass: account
    objectClass: posixAccount
    objectClass: top
    loginShell: /bin/bash
    uidNumber: 5036
    gidNumber: 3002
    homeDirectory: /mnt/blumeta0/home/test_ldap
    gecos: test_ldap
    
    dn: cn=bluusers,ou=groups,dc=somedomain,dc=com
    changetype: modify
    add: memberuid
    memberuid: test_ldap
    memberuid: uid=test_ldap,ou=users,dc=somedomain,dc=com
    
  2. Añada el usuario LDAP:
    root@LDAP_SERVER:~# ldapadd -h localhost -p 389 -D cn=admin,dc=somedomain,dc=com -w adminpass -c < test_ldap.ldif
    donde:
    -D
    Especifica el nombre distinguido.
    -w
    Especifica la contraseña asociada al DN.
    La salida es la siguiente:
    adding new entry "uid=test_ldap,ou=users,dc=somedomain,dc=com"
    
    modifying entry "cn=bluusers,ou=groups,dc=somedomain,dc=com"
    
  3. Añadir contraseña para el usuario:
    ldappasswd -h localhost -p 389 -D cn=admin,dc=somedomain,dc=com -w adminpass -S "uid=test_ldap,ou=users,dc=somedomain,dc=com" -s netezzaips
    
    donde:
    -S
    Especifica el usuario para cambiar la contraseña. Si no utiliza la opción -s <password> para especificar la contraseña, se solicitará al usuario una nueva contraseña en su primer inicio de sesión.
    -s
    Especifica una nueva contraseña para el usuario.
  4. Verifique si el usuario se ha añadido satisfactoriamente:
    root@LDAP_SERVER:~#ldapsearch -x -b "dc=somedomain,dc=com" | grep test_ldap
    
    La salida es la siguiente:
    memberUid: test_ldap
    memberUid: uid=test_ldap,ou=users,dc=somedomain,dc=com
    # test_ldap, users, somedomain.com
    dn: uid=test_ldap,ou=users,dc=somedomain,dc=com
    uid: test_ldap
    cn: test_ldap
    homeDirectory: /mnt/blumeta0/home/test_ldap
    gecos: test_ldap
    

Cambios en los archivos pam.d

Modifique manualmente los siguientes archivos para utilizar el servicio pam.sss.so en el sistema cliente.

Procedimiento

Cambie manualmente los siguientes archivos pam en el host NPS para utilizar el servicio pam.sss.so :
Es necesario cambiar las líneas en negrita.
  • /etc/pam.d/system-auth
    #%PAM-1.0
    # This file is auto-generated.
    # User changes will be destroyed the next time authconfig is run.
    auth        required      pam_env.so
    auth        required      pam_faildelay.so delay=2000000
    auth        [success=1 default=ignore] pam_succeed_if.so service notin login:gdm:xdm:kdm:xscreensaver:gnome-screensaver:kscreensaver quiet use_uid
    auth        [success=done authinfo_unavail=ignore ignore=ignore default=die] pam_pkcs11.so nodebug
    auth        [default=1 ignore=ignore success=ok] pam_succeed_if.so uid >= 1000 quiet
    auth        [default=1 ignore=ignore success=ok] pam_localuser.so
    auth        sufficient    pam_unix.so try_first_pass
    auth        requisite     pam_succeed_if.so uid >= 1000 quiet_success
    auth        sufficient    pam_sss.so forward_pass
    auth        required      pam_deny.so
    
    account     required      pam_unix.so
    account     sufficient    pam_localuser.so
    account     sufficient    pam_succeed_if.so uid < 1000 quiet
    account     [default=bad success=ok user_unknown=ignore] pam_sss.so
    account     required      pam_permit.so
    
    password    requisite     pam_pwquality.so try_first_pass retry=3 authtok_type=
    password    sufficient    pam_unix.so sha512 shadow remember=5 try_first_pass use_authtok
    password    sufficient    pam_sss.so sha512 remember=5 use_authtok
    password    required      pam_deny.so
    
    session     optional      pam_keyinit.so revoke
    session     required      pam_limits.so
    -session     optional      pam_systemd.so
    session     optional      pam_mkhomedir.so umask=0077
    session     [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
    session     required      pam_unix.so
    session     optional      pam_sss.so
    
  • /etc/pam.d/password-auth
    #%PAM-1.0
    # This file is auto-generated.
    # User changes will be destroyed the next time authconfig is run.
    auth        required      pam_env.so
    auth        required      pam_faildelay.so delay=2000000
    auth        [default=1 ignore=ignore success=ok] pam_succeed_if.so uid >= 1000 quiet
    auth        [default=1 ignore=ignore success=ok] pam_localuser.so
    auth        sufficient    pam_unix.so nullok try_first_pass
    auth        requisite     pam_succeed_if.so uid >= 1000 quiet_success
    auth        sufficient    pam_sss.so forward_pass
    auth        required      pam_deny.so
    
    account     required      pam_unix.so
    account     sufficient    pam_localuser.so
    account     sufficient    pam_succeed_if.so uid < 1000 quiet
    account     [default=bad success=ok user_unknown=ignore] pam_sss.so
    account     required      pam_permit.so
    
    password    requisite     pam_pwquality.so try_first_pass retry=3 authtok_type=
    password    sufficient    pam_unix.so sha512 shadow remember=5 try_first_pass use_authtok
    password    sufficient    pam_sss.so sha512 remember=5 use_authtok
    
    
    password    required      pam_deny.so
    
    session     optional      pam_keyinit.so revoke
    session     required      pam_limits.so
    -session     optional      pam_systemd.so
    session     optional      pam_mkhomedir.so umask=0077
    session     [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
    session     required      pam_unix.so
    session     optional      pam_sss.so
    
  • /etc/pam.d/smartcard-auth
    #%PAM-1.0
    # This file is auto-generated.
    # User changes will be destroyed the next time authconfig is run.
    auth        required      pam_env.so
    auth        [success=done ignore=ignore default=die] pam_pkcs11.so nodebug wait_for_card
    auth        required      pam_deny.so
    
    account     required      pam_unix.so
    account     sufficient    pam_localuser.so
    account     sufficient    pam_succeed_if.so uid < 1000 quiet
    account     [default=bad success=ok user_unknown=ignore] pam_sss.so
    account     required      pam_permit.so
    
    password    required      pam_pkcs11.so
    
    session     optional      pam_keyinit.so revoke
    session     required      pam_limits.so
    -session     optional      pam_systemd.so
    session     optional      pam_mkhomedir.so umask=0077
    session     [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
    session     required      pam_unix.so
    session     optional      pam_sss.so
    
  • /etc/pam.d/ fingerprint-auth
    #%PAM-1.0
    # This file is auto-generated.
    # User changes will be destroyed the next time authconfig is run.
    auth        required      pam_env.so
    auth        sufficient    pam_fprintd.so
    auth        required      pam_deny.so
    
    account     required      pam_unix.so
    account     sufficient    pam_localuser.so
    account     sufficient    pam_succeed_if.so uid < 1000 quiet
    account     [default=bad success=ok user_unknown=ignore] pam_sss.so
    account     required      pam_permit.so
    
    password    required      pam_deny.so
    
    session     optional      pam_keyinit.so revoke
    session     required      pam_limits.so
    -session     optional      pam_systemd.so
    session     optional      pam_mkhomedir.so umask=0077
    session     [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
    session     required      pam_unix.so
    session     optional      pam_sss.so
    
  • /etc/nsswitch.conf
    passwd:     files sss ldap
    shadow:     files sss ldap
    group:      files sss ldap
    hosts:      files dns myhostname
    bootparams: nisplus [NOTFOUND=return] files
    
    ethers:     files
    netmasks:   files
    networks:   files
    protocols:  files
    rpc:        files
    services:   files sss
    netgroup:   files sss ldap
    publickey:  nisplus
    automount:  files sss ldap
    aliases:    files nisplus
    

Pasos a realizar en Netezza Performance Server

Con estos pasos, puede comprobar la autenticación actual.

Procedimiento

  1. Inicie sesión en la plataforma Cloud Pak for Data System.
  2. Inicie sesión en NPS :
    docker exec -it <ips hostname> bash
  3. Cambia el usuario a nz user:
     su - nz
  4. Verifique la autenticación:
     nzsql -c "show authentication all"
    Ejemplo:
    [nz@node0201 ~]$ nzsql -c "show authentication all"
    AUTH_OPTION            | AUTH_VALUE
    -----------------------+------------
    AUTHENTICATION METHOD  | LOCAL
    (1 row)
    
  5. En función del servidor LDAP que utilice:
    • OpenLDAP
      1. Añada los usuarios LDAP a la base de datos conectándose al host NPS :
        create user <user>   password  <password>
        Defina la contraseña según la política de contraseñas.
        Ejemplo:
        nzsql -c “create user test_ldap password 'password';“
        
        Nota:

        Problema conocido: Si los usuarios de una base de datos se crearon/copiaron de otra base de datos y no tienen una contraseña definida, la autenticación de usuarios de AD para la base de datos de NPS podría bloquear el servicio de base de datos.

        Método alternativo: Proporcione la contraseña durante la creación del usuario o utilice el usuario ALTER para añadir la contraseña (si el usuario ya existe).

      2. Establezca el tipo de autenticación en LDAP con SSL desactivado:
        SET AUTHENTICATION LDAP
        Salida de ejemplo para SSL desactivado:
        nzsql -c " SET AUTHENTICATION LDAP BASE 'dc=somedomain,dc=com' NAMECASE lowercase SERVER 
        '<ldap_server>' SSL 'off' BINDDN 'cn=admin,dc=somedomain,dc=com' BINDPW adminpass;"
        
        donde:
        CN
        Nombre Común
        DC
        Componente del dominio
        BINDDN
        Nombre distinguido
        BINDPW
        Contraseña asociada con el nombre distinguido
        Nota: Omita BINDDN 'cn=admin,dc=somedomain,dc=com' si la contraseña de enlace no está configurada en el servidor LDAP. En este caso, el ejemplo de mandato sería:
        nzsql -c " SET AUTHENTICATION LDAP BASE 'dc=somedomain,dc=com' NAMECASE lowercase SERVER '<ldap_server>' SSL 'off'
      3. Verifique el tipo de autenticación:
        nzsql -c "show authentication all;"
        Ejemplos:
        • [nz@node0201 ~]$ nzsql -c "show authentication all;"
                AUTH_OPTION       |          AUTH_VALUE
          ------------------------+-------------------------------
           AUTHENTICATION METHOD  | LDAP
           AUTHMTHD LDAP BASE     | dc=somedomain,dc=com
           AUTHMTHD LDAP BINDDN   | cn=admin,dc=somedomain,dc=com
           AUTHMTHD LDAP NAMECASE | LOWERCASE
           AUTHMTHD LDAP SERVER   | <LDAP server IP>
           AUTHMTHD LDAP SSL      | off
          (6 rows)
          
        • si BINDPW no se utiliza en el mandato set authentication:
          [nz@node0201 ~]$ nzsql -c "show authentication all;"
                AUTH_OPTION       |          AUTH_VALUE
          ------------------------+-------------------------------
           AUTHENTICATION METHOD  | LDAP
           AUTHMTHD LDAP BASE     | dc=somedomain,dc=com
           AUTHMTHD LDAP NAMECASE | LOWERCASE
           AUTHMTHD LDAP SERVER   | <LDAP server IP>
           AUTHMTHD LDAP SSL      | off
          (5 rows)
          

        Tenga en cuenta que /etc/ldap.conf está obsoleto en NPS. Debe utilizar /etc/sssd/sssd.conf para establecer la configuración LDAP.

        ===========================/etc/sssd/sssd.conf==================================
        
        [domain/external_ldap]
        
        ldap_tls_reqcert = never
        ldap_id_use_start_tls = False
        ldap_schema = rfc2307
        auth_provider = ldap
        id_provider = ldap
        ldap_rfc2307_fallback_to_local_users = True
        ldap_referrals = False
        ldap_id_mapping = False
        override_homedir = /home/%u
        ldap_network_timeout = 3
        ldap_opt_timeout = 60
        cache_credentials = True
        ldap_user_search_base = dc=somedomain,dc=com
        entry_cache_group_timeout = 0
        entry_cache_user_timeout = 0
        ldap_search_timeout = 30
        entry_cache_timeout = 600
        ldap_default_bind_dn = cn=admin,dc=somedomain,dc=com
        ldap_uri = ldap:/<LDAP Server>:389
        debug_level = 10
        
        ldap_default_authtok_type = obfuscated_password
        ldap_default_authtok = AAAQAGjPMpPlaKyKfPLvmpE1FSolHcAHS/0KoEaJ7k8yPZaphWL2hLYyjKBXO4C9aAgAIGKgBWONT+5nOITCVv6tTlwAAQID
        [sssd]
        services = nss, ifp, sudo, ssh, pam
        domains = external_ldap
        
        [nss]
        memcache_timeout = 600
        homedir_substring = /home
        
        [pam]
        debug_level = 10
        
        [sudo]
        [autofs]
        [ssh]
        [pac]
        [ifp]
        
    • Windows Active Directory:
      1. Añada los usuarios AD a la base de datos:
        create user <user>  password  <password>
        Defina la contraseña según la política de contraseñas. Ejemplo:
        nzsql -c "create user ad_user1 password 'password';"
      2. Establezca el tipo de autenticación en LDAP con SSL desactivado:
        SET AUTHENTICATION LDAP
        Ejemplo:
        nzsql -c " SET AUTHENTICATION LDAP BASE 'dc=nzdevelopment,dc=com' NAMECASE lowercase SERVER '<ad_server>' 
        SSL 'off' BINDPW Netezza26 BINDDN 'cn=ad_user1,cn=Users,dc=nzdevelopment,dc=com'; "
        donde:
        cn
        Nombre Común
        DC
        Componente de dominio
      3. Actualice manualmente el archivo /etc/sssd/sssd.conf en el host NPS como se indica a continuación:
        ===========================/etc/sssd/sssd.conf==================================
        
        [domain/external_ldap]
        
        ldap_tls_reqcert = never
        ldap_id_use_start_tls = True
        ldap_schema = AD
        ignore_group_members = True
        auth_provider = ldap
        id_provider = ldap
        ldap_rfc2307_fallback_to_local_users = True
        ldap_referrals = False
        ldap_id_mapping = True
        override_homedir = /home/%u
        ldap_network_timeout = 3
        ldap_opt_timeout = 60
        cache_credentials = True
        ldap_user_search_base = dc=nzdevelopment,dc=com
        entry_cache_group_timeout = 0
        entry_cache_user_timeout = 0
        ldap_search_timeout = 30
        entry_cache_timeout = 600
        ldap_default_bind_dn = cn=ad_user1,cn=Users,dc=nzdevelopment,dc=com
        ldap_uri = ldap://<AD Server>:389
        debug_level = 10
        case_sensitive = False
        ldap_group_name = CN
        ldap_user_name = sAMAccountName
        
        ldap_default_authtok_type = obfuscated_password
        ldap_default_authtok = AAAQANEC2d5xigH0d4w9phf5F9zD4PvXWvxwz61LYsoQq5BM/M7WslokdqbS6CnOyTzGp4XmzCC7owRfYq8sALPYypoAAQID
        [sssd]
        services = nss, ifp, sudo, ssh, pam
        domains = external_ldap
        
        [nss]
        memcache_timeout = 600
        homedir_substring = /home
        
        [pam]
        debug_level = 10
        
        [sudo]
        [autofs]
        [ssh]
        [pac]
        [ifp]
        
      4. Reinicie el servicio sssd con el usuario root:
        systemctl restart sssd
        
  6. Verifique la configuración de autenticación de usuario LDAP/AD:
    1. Inicie sesión como usuario nz y ejecute el comando:
      su – nz 
 
      nzsql -u <LDAP/AD user>   -pw <LDAP/AD user password>
      
      Nota:

      Esta contraseña debe ser la contraseña definida en el servidor LDAP para el usuario LDAP.

      Ejemplo:
      [nz@node0201 ~]$ nzsql -db system -u test_ldap -pw netezzaips
      Welcome to nzsql, the IBM Netezza SQL interactive terminal.
      
      Type:  \h for help with SQL commands
             \? for help on internal slash commands
             \g or terminate with semicolon to execute query
             \q to quit
      
      SYSTEM.ADMIN(TEST_LDAP)=> show authentication all;
            AUTH_OPTION       |          AUTH_VALUE
      ------------------------+-------------------------------
       AUTHENTICATION METHOD  | LDAP
       AUTHMTHD LDAP BASE     | dc=somedomain,dc=com
       AUTHMTHD LDAP BINDDN   | cn=admin,dc=somedomain,dc=com
       AUTHMTHD LDAP NAMECASE | LOWERCASE
       AUTHMTHD LDAP SERVER   | <ldap_server> AUTHMTHD LDAP SSL      | off
      (6 rows) (6 rows)
      
      [nz@node0201 ~]$
      

Resolución de problemas

Si encuentra el siguiente error en el registro de PostgreSQL mientras se autentica con el parámetro BINDPW:
ERROR: pam_authenticate failed: User not known to the underlying authentication module
realice los siguientes pasos de solución en el host NPS con el usuario root:
  1. echo -n <bindpassword> |sss_obfuscate --domain=external_ldap -s
  2. systemctl restart sssd
Para manejar casos mixtos en el proceso de autenticación LDAP/AD, no utilice NAMESPACE en el mandato SET AUTHENTICATION LDAP. Ejemplo:
nzsql -c " SET AUTHENTICATION LDAP BASE 'dc=nzdevelopment,dc=com' SERVER '<LDAP/AD Server>' SSL 'off' BINDPW Ipspass26BINDDN 'cn=ad_user1,cn=Users,dc=nzdevelopment,dc=com'; "