Pregunta:

Pregunta:

Recientemente configuré un nuevo Directorio Activo Samba4 para manejar la autenticación centralizada para la red de mi pequeña oficina. En este servidor también hay una instancia de postgresql-9.5 y estoy intentando que se autentique en AD. Reconociendo la diferencia entreautenticación(esto es lo que necesito) yautorización(Creo que esto se maneja completamente dentro de postgresql una vez que el usuario ha sido autenticado), tengo problemas.

El AD es más bien vainilla en este momento, siguiendo de cercaeste cómo. He configurado algunos usuarios y la autenticación Kerberos básica parece estar funcionando (realizada con , verificada con ). Del mismo modo, funciona.kinit [email protected]klistsmbclient //myhost.samdom.mydomain.tld/netlogon -U 'myusername'

El host local se está resolviendo en el AD de samba y el reenvío de DNS avanza correctamente. Estos funcionan:

$ host -t SRV _ldap._tcp.samdom.mydomain.tld
$ host -t SRV _kerberos._udp.samdom.mydomain.tld
$ host -t A myhost.samdom.mydomain.tld

Por cierto: servidor ubuntu-16.04, postgresql-9.5, samba-4.3.9

Pregunta:

¿Qué me falta en la configuración de samba y/o postgres para habilitar la autenticación contra el AD?

Configuración de base de datos

La conectividad básica con postgresql parece ser buena: está escuchando en las interfaces apropiadas (todas por ahora), el postgresusuario puede acceder a cosas localmente sin problemas. Configuré una base de datos simple, salida de \list:

   Name    |   Owner    | Encoding |   Collate   |    Ctype    |   Access privileges
-----------+------------+----------+-------------+-------------+-----------------------
 pgtest2   | myusername | UTF8     | en_US.UTF-8 | en_US.UTF-8 |

con usuarios listados (poresta consulta):

 User name  | User ID |    Attributes
------------+---------+-------------------
 myusername |   16384 | create database
 postgres   |      10 | superuser, create+
            |         | database

Autenticación fallida

Sin embargo, cuando lo intento en la consola:

$ psql -h myhost.samdom.mydomain.tld -U [email protected] -d pgtest2
psql: GSSAPI continuation error: Unspecified GSS failure.  Minor code may provide more information
GSSAPI continuation error: No Kerberos credentials available

De /var/log/postgresql/postgresql-9.5-main.log:

[email protected]@pgtest2 LOG:  could not receive data from client: Connection reset by peer
[email protected]@pgtest2 FATAL:  GSSAPI authentication failed for user "[email protected]"
[email protected]@pgtest2 DETAIL:  Connection matched pg_hba.conf line 92: "host all all 0.0.0.0/0 gss krb_realm=SAMDOM.MYDOMAIN.TLD include_realm=1 map=krb"

Archivos de configuración

El archivo de configuración (porciones) que creo que son apropiadas y necesarias:

  • /etc/postgresql/9.5/main/pg_hba.conf:

    local   all             postgres                                peer
    local   all             all                                     peer
    host all all 0.0.0.0/0 gss krb_realm=SAMDOM.MYDOMAIN.TLD include_realm=1 map=krb
    host    all             all             127.0.0.1/32            md5
    host    all             all             ::1/128                 md5
    
  • /etc/postgresql/9.5/main/postgres.conf:

    krb_server_keyfile = '/var/lib/postgresql/9.5/main/postgres.keytab'
    

    (La tabla de claves se generó con: , es el modo 400 y es propiedad de ).samba-tool domain exportkeytab postgres.keytab -U postgres/[email protected]postgres:postgres

  • /etc/samba/smb.conf:

    # Global parameters
    [global]
            workgroup = SAMDOM
            realm = SAMDOM.MYDOMAIN.TLD
            netbios name = MYHOST
            interfaces = lo eno1
            bind interfaces only = Yes
            server role = active directory domain controller
            dns forwarder = 11.22.33.254
            idmap_ldb:use rfc2307 = yes
            tls enabled =  yes
            tls keyfile = tls/key.pem
            tls certfile = tls/cert.pem
            tls cafile = tls/ca.pem
    [netlogon]
            path = /var/lib/samba/sysvol/samdom.mydomain.tld/scripts
            read only = No
    [sysvol]
            path = /var/lib/samba/sysvol
            read only = No
    

Respuesta1

Recientemente me enfrenté a la tarea de autenticación de usuarios de postgress contra el controlador de dominio AD samba4 y encontré la solución.en esta pagina. Como puedes ver, la entrada pg_hba.conf en tu caso sería:

host all all 0.0.0.0/0 ldap ldapserver=localhost ldapprefix="" ldapsuffix="@SAMDOM.MYDOMAIN.TLD"

o si prefiere autenticar usuarios en el formato DOMINIO\nombre de usuario:

host all all 0.0.0.0/0 ldap ldapserver=localhost ldapprefix="SANDOM\" ldapsuffix=""

El rol debe crearse en la base de datos además de AD porque el mecanismo de autorización, como señaló anteriormente, se realiza dentro de postgres. Luego reinicie postgresql e intente la conexión.

La desventaja es que obtendrás el error "Se requiere una autenticación (más) sólida" en el registro de Postgres, por lo que debes deshabilitar la autorización ldap fuerte en el archivo de configuración de Samba, agregando esto en la configuración global:

ldap server require strong auth = No

información relacionada