Недавно я настроил новый Samba4 Active Directory для обработки централизованной аутентификации в моей небольшой офисной сети. На этом сервере также есть экземпляр postgresql-9.5, и я пытаюсь проверить его подлинность на AD. Признавая разницу между аутентификацией (это то, что мне нужно) и авторизацией (я полагаю, что это делается полностью в postgresql после аутентификации пользователя), я сталкиваюсь с проблемами.
На данный момент AD довольно ванильный, внимательно следит за этим руководством . Я настроил некоторых пользователей, и похоже, что базовая аутентификация Kerberos работает (сделано с kinit myusername@SAMDOM.MYDOMAIN.TLD
, проверено с помощью klist
). Точно так же smbclient //myhost.samdom.mydomain.tld/netlogon -U 'myusername'
работает.
Локальный хост разрешается в samba AD, а переадресация DNS идет правильно в восходящем направлении. Эти работы:
$ host -t SRV _ldap._tcp.samdom.mydomain.tld
$ host -t SRV _kerberos._udp.samdom.mydomain.tld
$ host -t A myhost.samdom.mydomain.tld
Кстати: сервер ubuntu-16.04, postgresql-9.5, samba-4.3.9
Вопрос:
Чего мне не хватает в конфигурации samba и / или postgres для включения аутентификации по AD?
Настройка БД
Базовая связь с postgresql, кажется, хороша: он слушает соответствующие интерфейсы (пока все), postgres
пользователь может без проблем обращаться к ним локально. Я создал простую базу данных, вывод из \list
:
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+------------+----------+-------------+-------------+-----------------------
pgtest2 | myusername | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
с пользователями в списке (по этому запросу ):
User name | User ID | Attributes
------------+---------+-------------------
myusername | 16384 | create database
postgres | 10 | superuser, create+
| | database
Неудачный Аут
Тем не менее, когда я пытаюсь на консоли:
$ psql -h myhost.samdom.mydomain.tld -U myusername@SAMDOM.MYDOMAIN.TLD -d pgtest2
psql: GSSAPI continuation error: Unspecified GSS failure. Minor code may provide more information
GSSAPI continuation error: No Kerberos credentials available
От /var/log/postgresql/postgresql-9.5-main.log
:
myusername@SAMDOM.MYDOMAIN.TLD@pgtest2 LOG: could not receive data from client: Connection reset by peer
myusername@SAMDOM.MYDOMAIN.TLD@pgtest2 FATAL: GSSAPI authentication failed for user "myusername@SAMDOM.MYDOMAIN.TLD"
myusername@SAMDOM.MYDOMAIN.TLD@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"
Файлы конфигурации
Файл конфигурации (порции), который я считаю подходящим и необходимым:
/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'
(Таблица ключей была сгенерирована с:,
samba-tool domain exportkeytab postgres.keytab -U postgres/myhost.samdom.mydomain.tld@SAMDOM.MYDOMAIN.TLD
является режимом 400 и принадлежит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
Ответы:
Недавно я столкнулся с задачей аутентификации пользователей postgress на контроллере домена samba4 AD и нашел решение на этой странице . Как вы можете видеть, запись pg_hba.conf в вашем случае будет выглядеть так:
или если вы предпочитаете аутентифицировать пользователей в форме DOMAIN \ username:
Rol должен быть создан в базе данных в дополнение к AD, потому что механизм авторизации, как вы отметили выше, выполняется внутри postgres. Затем перезапустите postgresql и попробуйте подключиться.
Недостатком является то, что вы получите сообщение об ошибке « Требуется строгая (er) аутентификация » в журнале postgres, поэтому вы должны отключить авторизацию Strong ldap в conf-файле samba, добавив это в global setcion:
источник