Eu configurei recentemente um novo Samba4 Active Directory para lidar com a autenticação centralizada da minha rede de pequena empresa. Neste servidor também é uma instância do postgresql-9.5, e estou tentando autenticá-lo no AD. Reconhecendo a diferença entre autenticação (isto é o que eu preciso) e autorização (eu acredito que isso é tratado inteiramente dentro do postgresql depois que o usuário foi autenticado), eu estou correndo problemas.
O AD é bastante baunilha no momento, seguindo de perto este howto . Eu configurei alguns usuários e a autenticação básica do kerberos parece estar funcionando (feita com kinit [email protected]
, verificada com klist
). Da mesma forma, smbclient //myhost.samdom.mydomain.tld/netlogon -U 'myusername'
funciona.
O localhost está resolvendo para o samba AD e o encaminhamento de DNS está indo para o upstream corretamente. Estes trabalhos:
$ host -t SRV _ldap._tcp.samdom.mydomain.tld
$ host -t SRV _kerberos._udp.samdom.mydomain.tld
$ host -t A myhost.samdom.mydomain.tld
BTW: servidor ubuntu-16.04, postgresql-9.5, samba-4.3.9
Pergunta:
O que estou faltando na configuração do samba e / ou postgres para habilitar a autenticação contra o AD?
Configuração do banco de dados
A conectividade básica com o postgresql parece ser boa: ele está escutando nas interfaces apropriadas (tudo por enquanto), o usuário postgres
pode acessar as coisas localmente sem problemas. Eu configurei um banco de dados simples, com saída de \list
:
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+------------+----------+-------------+-------------+-----------------------
pgtest2 | myusername | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
com os usuários listados (por esta consulta ):
User name | User ID | Attributes
------------+---------+-------------------
myusername | 16384 | create database
postgres | 10 | superuser, create+
| | database
Falha no Autenticação
No entanto, quando tento no console:
$ 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"
Arquivos de configuração
O arquivo de configuração (porções) que considero apropriado e necessário:
-
/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'
(O keytab foi gerado com: samba-tool domain exportkeytab postgres.keytab -U postgres/[email protected]
, é o modo 400 e pertence a 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