저는 최근 소규모 사무실 네트워크에 대한 중앙 집중식 인증을 처리하기 위해 새로운 Samba4 Active Directory를 설정했습니다. 서버에 postgresql-9.5 인스턴스도 있고 AD에 대해 인증을 받으려고 합니다. 차이점을 인식하세요.확인하다(그것이 나에게 필요한 것입니다) 그리고승인하다(사용자가 인증되면 이것이 postgresql에서 완전히 처리된다고 생각합니다.) 문제가 발생했습니다.
AD는 현재 꽤 평균 수준입니다. 아슬아슬한 초입니다.이 가이드. 일부 사용자를 설정했는데 기본 Kerberos 인증이 작동하는 것 같습니다(완료 사용, 인증 사용). 다시 말하지만 유효합니다.kinit [email protected]
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
질문:
AD에 대한 인증을 활성화하기 위한 Samba 및/또는 Postgres 구성에서 무엇이 빠졌습니까?
데이터베이스 설정
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=""
AD 외에도 위에서 언급한 것처럼 권한 부여 메커니즘이 postgres에서 내부적으로 수행되므로 데이터베이스에 rol을 생성해야 합니다. 그런 다음 postgresql을 다시 시작하고 연결을 시도하십시오.
단점은 "라는 오류가 발생한다는 것입니다.강력한 인증 필요"가 postgres 로그에 있으므로 samba conf 파일에서 강력한 LDAP 인증을 비활성화하고 전역 설정에 다음을 추가해야 합니다.
ldap server require strong auth = No