Frage:

Frage:

Ich habe vor kurzem ein neues Samba4 Active Directory eingerichtet, um die zentrale Authentifizierung für mein kleines Büronetzwerk zu handhaben. Auf diesem Server befindet sich auch eine PostgreSQL-9.5-Instanz, und ich versuche, sie gegenüber dem AD authentifizieren zu lassen. Erkennen des Unterschieds zwischenAuthentifizierung(das ist, was ich brauche) undGenehmigung(Ich glaube, dies wird vollständig innerhalb von PostgreSQL gehandhabt, sobald der Benutzer authentifiziert wurde), ich stoße auf Probleme.

Die AD ist im Moment eher langweilig und folgt dichtdiese Anleitung. Ich habe einige Benutzer eingerichtet und die grundlegende Kerberos-Authentifizierung scheint zu funktionieren (durchgeführt mit , überprüft mit ). Funktioniert ebenfalls.kinit [email protected]klistsmbclient //myhost.samdom.mydomain.tld/netlogon -U 'myusername'

Der lokale Host wird zum Samba AD aufgelöst und die DNS-Weiterleitung erfolgt korrekt nach oben. Folgendes funktioniert:

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

Übrigens: Ubuntu-16.04-Server, PostgreSQL-9.5, Samba-4.3.9

Frage:

Was fehlt mir in der Konfiguration von Samba und/oder Postgres, um die Authentifizierung gegenüber dem AD zu aktivieren?

DB-Einrichtung

Die grundlegende Konnektivität mit PostgreSQL scheint gut zu sein: Es hört auf den entsprechenden Schnittstellen (alle für den Moment), der postgresBenutzer kann problemlos lokal auf Dinge zugreifen. Ich habe eine einfache Datenbank eingerichtet, Ausgabe von \list:

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

mit aufgelisteten Benutzern (prodiese Abfrage):

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

Authentifizierung fehlgeschlagen

Wenn ich es jedoch auf der Konsole versuche:

$ 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

Aus /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"

Konfigurationsdateien

Die Konfigurationsdatei (Teile), die ich für angemessen und notwendig halte:

  • /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'
    

    (Der Keytab wurde mit generiert:, hat Modus 400 und ist Eigentum von .)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
    

Antwort1

Vor kurzem stand ich vor der Aufgabe der Authentifizierung von Postgress-Benutzern gegenüber dem Samba4 AD-Domänencontroller und fand die Lösungauf dieser Seite. Wie Sie sehen, würde der Eintrag pg_hba.conf in Ihrem Fall lauten:

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

oder wenn Sie die Benutzerauthentifizierung lieber im Format DOMAIN\Benutzername bevorzugen:

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

Die Rolle muss zusätzlich zu AD in der Datenbank erstellt werden, da der Autorisierungsmechanismus, wie oben erwähnt, innerhalb von Postgres erfolgt. Starten Sie dann PostgreSQL neu und versuchen Sie die Verbindung.

Der Nachteil ist, dass Sie den Fehler "Starke(re) Authentifizierung erforderlich" im Postgres-Protokoll, daher müssen Sie die starke LDAP-Autorisierung in der Samba-Konfigurationsdatei deaktivieren, indem Sie Folgendes in den globalen Einstellungen hinzufügen:

ldap server require strong auth = No

verwandte Informationen