저는 최근 소규모 사무실 네트워크에 대한 중앙 집중식 인증을 처리하기 위해 새로운 Samba4 Active Directory를 설정했습니다. 이 서버에는 postgresql-9.5 인스턴스도 있으며 AD에 대해 인증을 받으려고 합니다. 차이점을 인식입증(이것이 나에게 필요한 것입니다) 그리고권한 부여(사용자가 인증되면 이것이 postgresql 내에서 완전히 처리된다고 생각합니다.) 문제가 발생했습니다.
현재 AD는 다소 바닐라입니다.이 하우투. 일부 사용자를 설정했는데 기본 Kerberos 인증이 작동하는 것 같습니다( 로 완료 , 으로 확인 ). 마찬가지로 작동합니다.kinit [email protected]
klist
smbclient //myhost.samdom.mydomain.tld/netlogon -U 'myusername'
로컬 호스트가 삼바 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
질문:
AD에 대한 인증을 활성화하기 위해 Samba 및/또는 Postgres 구성에서 누락된 것은 무엇입니까?
DB 설정
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 [email protected] -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
:
[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"
구성 파일
적절하고 필요하다고 생각되는 구성 파일(부분)은 다음과 같습니다.
/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'
(키탭은 다음을 사용하여 생성되었으며 모드는 400이며 소유자는 입니다 .)
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
답변1
최근에 나는 samba4 AD 도메인 컨트롤러에 대한 postgress 사용자 인증 작업에 직면했고 해결책을 찾았습니다.이 페이지에서. 보시다시피 귀하의 경우 pg_hba.conf 항목은 다음과 같습니다.
host all all 0.0.0.0/0 ldap ldapserver=localhost ldapprefix="" ldapsuffix="@SAMDOM.MYDOMAIN.TLD"
또는 DOMAIN\username 형식으로 사용자를 인증하려는 경우:
host all all 0.0.0.0/0 ldap ldapserver=localhost ldapprefix="SANDOM\" ldapsuffix=""
위에서 언급한 것처럼 권한 부여 메커니즘이 postgres 내부에서 수행되므로 AD 외에도 데이터베이스에 롤을 생성해야 합니다. 그런 다음 postgresql을 다시 시작하고 연결을 시도하십시오.
단점은 "라는 오류가 발생한다는 것입니다.강력한 인증 필요"를 postgres 로그에 포함하므로 samba conf 파일에서 Strong ldap 인증을 비활성화하고 전역 설정에 다음을 추가해야 합니다.
ldap server require strong auth = No