sssd
Kerberos TGT가 작동하는 AD 백엔드를 사용하여 FreeBSD 10.0의 Windows Server 2012 R2에서 실행되는 Active Directory에서 사용자를 인증하는 데 필요한 단계는 무엇입니까 ?
sssd
Kerberos TGT가 작동하는 AD 백엔드를 사용하여 FreeBSD 10.0의 Windows Server 2012 R2에서 실행되는 Active Directory에서 사용자를 인증하는 데 필요한 단계는 무엇입니까 ?
답변:
모든 것이 즉시 작동하도록하기 위해 까다로운 고려 사항이 있습니다. FreeBSD는 현재 sssd
버전 1.9.6 만 지원합니다 . 따라서 Enterprise Principal Names는 지원되지 않습니다.
일치하지 않는 UPN을 가진 도메인이있는 경우 프로세스 중에 Kerberos 인증이 실패하므로 Kerberos 인증이 Enterprise Principal Names를 Kerberos로 지원하더라도 Kerberos 인증이 실패하므로이 sssd
경우를 처리 할 수 없습니다.
따라서 실제 버전 sssd
에서는 사용자 도메인 이름이 동일한 도메인 이름 내에 있도록 제한됩니다. 예를 들면 다음과 같습니다.
Domain Name = example.com
NetBIOS Name = EXAMPLE
User Principal Name:
username@example.com sAMAccountName: username
이를 알면 FreeBSD의 AD에서 사용자를 성공적으로 인증하는 단계를 설명 할 수 있습니다.
/etc/krb5.conf
다음 내용으로 파일 을 작성하십시오 .
[libdefaults]
default_realm = EXAMPLE.COM
dns_lookup_realm = true
dns_lookup_kdc = true
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = yes
삼바 4.1 설치 :
$ pkg install samba41
/usr/local/etc/smb4.conf
다음 내용으로 파일 을 작성하십시오 .
[global]
security = ads
realm = EXAMPLE.COM
workgroup = EXAMPLE
kerberos method = secrets and keytab
client signing = yes
client use spnego = yes
log file = /var/log/samba/%m.log
관리자 Kerberos 티켓을 요청하십시오.
$ kinit Administrator
그런 다음 도메인에 가입하고 키탭을 만듭니다.
$ net ads join createupn=host/server-hostname.example.com@EXAMPLE.COM -k
$ net ads keytab create -k
필수 패키지를 설치하십시오.
$ pkg install sssd cyrus-sasl-gssapi
/usr/local/etc/sssd/sssd.conf
이 설정과 일치 하도록 파일 을 편집하십시오 .
[sssd]
config_file_version = 2
services = nss, pam
domains = example.com
[nss]
[pam]
[domain/example.com]
# Uncomment if you need offline logins
#cache_credentials = true
id_provider = ad
auth_provider = ad
access_provider = ad
chpass_provider = ad
# Comment out if the users have the shell and home dir set on the AD side
default_shell = /bin/tcsh
fallback_homedir = /home/%u
# Uncomment and adjust if the default principal SHORTNAME$@REALM is not available
#ldap_sasl_mech = GSSAPI
#ldap_sasl_authid = SERVER-HOSTNAME$@EXAMPLE.COM
/etc/nsswitch.conf
이 설정과 일치 하도록 파일 을 편집하십시오 .
group: files sss
passwd: files sss
홈 디렉토리 작성을위한 선택적 패키지를 설치하십시오.
$ pkg install pam_mkhomedir
PAM
이 설정과 일치 하도록 필요한 영역을 수정하십시오 .
auth sufficient /usr/local/lib/pam_sss.so
account required /usr/local/lib/pam_sss.so ignore_unknown_user
session required /usr/local/lib/pam_mkhomedir.so mode=0700
session optional /usr/local/lib/pam_sss.so
password sufficient /usr/local/lib/pam_sss.so use_authtok
$ pkg remove -f openldap-client
$ pkg install openldap-sasl-client
$ getent passwd <username>
어떤 Kerberos를 사용하고 있습니까? MIT의 내장 또는 보안 / krb5?
sssd를 설치할 때 현재 FreeBSD에서 실험적인 것으로 간주되는 security / krb5를 설치해야합니다. 따라서이 질문.
'getent'명령을 실행할 때 AD 사용자 / 그룹을 얻는 데 운이 없습니다. NETBIOS 이름이 도메인 이름과 다르기 때문일 수 있습니다. 예를 들어 도메인 이름은 dawnsign.com이고 NETBIOS 이름은 DSP입니다.
pam.d 로그인 모듈 만 구성했습니다. 성공적인 인증을 위해 다른 pam 모듈을 편집해야합니까?
추가 정보가 있으면 대단히 감사하겠습니다!
포트에서 samba4를 다시 컴파일하면 sssd가 없어도 Linux와 같은 winbind 인증을 사용할 수 있습니다. sasl ldap을 활성화 한 후 포트에서 samba4를 간단히 다시 컴파일
pkg remove samba41
pkg install cyrus-sasl-gssapi samba36-libsmbclient pam_mkhomedir ldb
pkg remove -f openldap-client
pkg install openldap-sasl-client
cd /usr/ports/security/sssd && make install
이것은 필요한 모든 지원 (gssapi, ldap, kerberos)으로 삼바를 다시 컴파일 한 다음 다음과 같이 nsswitch.conf를 편집합니다
passwd: files winbind
group: files winbind
안녕하세요.
이것은 sssd v1.11.7 사용에 관한 작은 업데이트입니다.
"id_provider = ad"를 사용하고 sssd 로그 파일에 다음 오류가 표시되는 경우 :
/var/log/sssd/sssd_example.com.log
(Sun Oct 5 18:41:37 2014) [sssd[be[alidaho.com]]] [sasl_bind_send] (0x0020): ldap_sasl_bind failed (-12)[Not Supported]
(Sun Oct 5 18:41:37 2014) [sssd[be[alidaho.com]]] [sasl_bind_send] (0x0080): Extended failure message: [unknown error]
다음 절차를 사용하여이 문제를 해결하고 AD 통합이 올바르게 작동하도록 할 수 있습니다. 이제 Samba 지원으로 sssd v1.11.7을 빌드하십시오 .src sssd에서 빌드해야하므로 libsasl2와 연결됩니다.
pkg remove samba41
pkg install cyrus-sasl-gssapi samba36-libsmbclient pam_mkhomedir ldb
pkg remove -f openldap-client
pkg install openldap-sasl-client
cd /usr/ports/security/sssd && make install
설치 (및 재미있는 패키징 및 종속성 문제)
/usr/bin
, 다른 하나는에 두 개의 Kerberos 명령 세트를 남깁니다
/usr/local/bin
. 기본 시스템 파일이 패키지에없는 것 같으므로 Heimdal KRB를 제거 할 수 없습니다. 알아야 할 것.다양한 패키지의 선행 종속성 (굵은 기울임 꼴로 흥미로운 뎁은 굵은 기울임 꼴로 표시됨) :
net-mgmt/adcli:
net/openldap24-sasl-client
security/cyrus-sasl2-gssapi: security/cyrus-sasl2
net/openldap24-sasl-client: security/cyrus-sasl2
security/sssd: security/nss
security/sssd:
security/krb5
security/sssd: security/cyrus-sasl2
security/sssd:
net/openldap24-client
security/sssd: lang/python27
security/sssd: lang/python2
security/sssd: dns/c-ares
security/sssd: devel/tevent
security/sssd: devel/talloc
security/sssd: devel/popt
security/sssd: devel/pcre
security/sssd: devel/libunistring
security/sssd: devel/libinotify
security/sssd: devel/gettext-runtime
security/sssd: devel/ding-libs
security/sssd: devel/dbus
security/sssd: databases/tdb
security/sssd: databases/ldb
다양한 패키지의 역 종속성 :
net/openldap24-sasl-client: sysutils/msktutil
net/openldap24-sasl-client: net/nss-pam-ldapd-sasl
net/openldap24-sasl-client: net-mgmt/adcli
sssd
자신을 우리가 기본 패키지로는 Heimdal을에도 불구하고 MIT Kerberos를 필요adcli
욕구 openldap-sasl-client
, 그러나 (의 하위 종속을 포함한 다른 패키지 sssd
에서 풀) openldap-client
(어떤 바보 이유)이 SASL 클라이언트와 뮤텍스입니다. 이로 인해 최소한의 바이너리 패키지가 있어도 설치가 약간 어려워집니다.이 글을 쓰는 시점에서 FreeBSD 용 SSSD 용 바이너리 pkg는 SSSD에서 AD 지원을 포함하지 않습니다.
SMB
adcli
존재하지만이 글을 쓰는 시점에는 작동하지 않습니다.
GSSAPI_MIT
cyrus-sasl-gssapi
필요하지만 pkg 이진 버전이 작동하지 않으며 SSSD를 제거하는 이상한 종속성 문제가 있습니다.
GSSAPI_MIT
openldap-sasl-client
기능에 필요하지만 SSSD는 비 SASL 버전의 openldap을 가져 오려고합니다.
openldap-sasl-client
하십시오 .GSSAPI
make config
pkg remove –f openldap-client
openldap-client
SSSD와 같은 다른 패키지를 자동으로 제거 하지 않고 제거 하고 SASL 버전을 설치할 수 있습니다openldap-sasl-client
pkg remove –f sssd
(선택 사항) 모든 것이 작동하고 확인되면 pkg create
적절한 옵션을 활성화하여 4 가지 패키지의 이진 패키지를 만들고 모든 시스템의 포트에 빌드하는 대신 사용할 수 있습니다. 바이너리 설치는 포트 빌드 프로세스와 유사한 패턴을 따릅니다.
pkg install sssd-1.11.7_8.txz
pkg add
openldap 패키지를 마지막에 저장하는 다른 패키지 (설치하지 않고 추가)openldap-sasl-client
할 일 a를pkg remove –f openldap-client
pkg add openldap-sasl-client-2.4.44.txz
pkg create
에 대한 종속성을 대체 openldap-client
와 함께 openldap-sasl-client
이 제거 / 다시 설치해야 할 필요성을 제거합니다. 나는 이것을 할 시간이 없었습니다.
openldap-client
이를 수정해야합니다.Kerberos 구성 :
[libdefaults] default_realm = MYDOMAIN.NET 전달 가능 = true # DNS SRV 레코드이므로 일반적으로 AD 환경에 필요한 모든 것 #는 AD / KRB 서버 / 서비스를 식별합니다. 당신이 경우 코멘트 # AD 서버를 수동으로 가리키고 싶습니다 dns_lookup_kdc = true [영역] MYDOMAIN.NET = { # DNS에있는 것과 다른 AD 서버를 수동으로 가리키는 경우 # admin_server = adserver.mydomain.net # kdc = adserver.mydomain.net } [도메인 _ 영역] mydomain.net = MYDOMAIN.NET .mydomain.net = MYDOMAIN.NET
[sssd] config_file_version = 2 도메인 = MYDOMAIN.NET 서비스 = nss, pam, pac fallback_homedir = / home / % u [도메인 /MYDOMAIN.NET] id_provider = 광고 access_provider = 광고 auth_provider = 광고 chpass_provider = 광고 # AD POSIX 속성 사용, 자동 생성을 사용중인 경우 주석 처리 # UID 및 GID. ldap_id_mapping = 거짓 cache_credentials = true ad_server = adserver.mydomain.net # bash가 없거나 AD 계정의 loginShell에있는 것이 있으면 # 속성이 설치됨 override_shell = / bin / tcsh
/etc/pam.d
SSSD를 FreeBSD와 함께 사용하기 위해 수정해야 할 파일 목록입니다 ./etc/pam.d/sshd :
# # FreeBSD : releng / 11.0 / etc / pam.d / sshd 197769 2009-10-05 09 : 28 : 54Z des $ # "sshd"서비스를위한 PAM 구성 # # 인증 충분한 pam_opie.so no_warn no_fake_prompts 인증 인증 요구 사항 pam_opieaccess.so no_warn allow_local #auth enough pam_krb5.so no_warn try_first_pass #auth 충분 pam_ssh.so no_warn try_first_pass 충분한 pam_unix.auth no_warn try_first_pass nullok 인증 충분한 pam_sss를 인증하십시오. 인증 필수 pam_unix.so no_warn use_first_pass # 계정 필요한 계정 pam_nologin.so # 계정 필요 pam_krb5.so 필요한 계정 pam_login_access.so 필요한 계정 pam_unix.so 충분한 pam_sss.so 계정 # 세션 #session 선택 사항 pam_ssh.so want_agent 세션 옵션 pam_sss.so 필요한 세션 pam_mkhomedir.so mode = 0700 필요한 세션 pam_permit.so # 비밀번호 #password enough pam_krb5.so no_warn try_first_pass #password enough pam_unix.so try_first_pass use_authtok nullok 충분한 암호 pam_unix.so try_first_pass use_authtok 충분한 암호 pam_sss.so use_authtok
/etc/pam.d/system :
# # FreeBSD : releng / 11.0 / etc / pam.d / system 197769 2009-10-05 09 : 28 : 54Z des $ # # 시스템 전체 기본값 # # 인증 충분한 pam_opie.so no_warn no_fake_prompts 인증 인증 요구 사항 pam_opieaccess.so no_warn allow_local #auth enough pam_krb5.so no_warn try_first_pass #auth 충분 pam_ssh.so no_warn try_first_pass #auth required pam_unix.so no_warn try_first_pass nullok 충분한 pam_unix.auth no_warn try_first_pass 인증 충분한 pam_sss를 인증하십시오. 인증 필수 pam_deny.so # 계정 # 계정 필요 pam_krb5.so 필요한 계정 pam_login_access.so 필요한 계정 pam_unix.so 충분한 pam_sss.so 계정 # 세션 #session 선택 사항 pam_ssh.so want_agent 필요한 세션 pam_lastlog.so no_fail 세션 옵션 pam_sss.so 필요한 세션 pam_mkhomedir.so mode = 0700 # 비밀번호 #password enough pam_krb5.so no_warn try_first_pass #password required pam_unix.so no_warn try_first_pass 충분한 암호 pam_unix.so no_warn try_first_pass nullok use_authtok 충분한 암호 pam_sss.so use_authtok #password required pam_deny.so
/etc/pam.d/su :
# # FreeBSD : releng / 11.0 / etc / pam.d / su 219663 2011-03-15 10 : 13 : 35Z des $ # "su"서비스를위한 PAM 구성 # # 인증 충분한 pam_rootok.so no_warn 인증 충분한 pam_self를 인증하십시오. 인증 요구 사항 pam_group.so no_warn group = wheel root_only fail_safe ruser 인증은 system.dist를 포함 # 계정 계정은 system.dist를 포함합니다 # 세션 필요한 세션 pam_permit.so
(톱니 모양)
system.dist
스톡 /etc/pam.d/system
파일 의 사본입니다 . /etc/pam.d/su
su 명령과 관련된 문제를 방지하기 위해 위 파일에 포함되어 있습니다 .su
번 루트 su
가 인증 될 필요가없고 계정 정보가 SSSD를 통해 이름 서비스 스위치를 통해 가져 오기 때문에 하나는 여전히 루트로 AD 계정에 액세스 할 수 있습니다.sudo
보안상의 이유로 만 사용해야 합니다.ksu
사용자 A에서 사용자 B로 전환하는 데
사용할 수 있습니다.ksu
(in /usr/bin
)에는 기본적으로 SUID가 설정되어 있지 않습니다
ksu
작동 시키려면chmod u+s /usr/bin/ksu
krb5
설치된 패키지 /usr/local/bin
)는 설치시 SUID입니다./usr/local/bin
이전 경로 /usr/bin
등 으로 기본 경로를 조정할 수 있습니다.ksu
대상 사용자의 AD / Kerberos 비밀번호를 묻는 메시지를 표시합니다.passwd
pam_sss.so
passwd PAM 파일에 추가하더라도 AD / Kerberos 비밀번호를 변경하는 데 작동하지 않습니다 . passwd
바이너리는 로컬 및 NIS 사용을 지원하는 kpasswd
광고를 암호를 변경 / Kerberos 서버 (들).이름 서비스 스위치 :
/etc/nsswitch.conf
파일은 passwd 및 그룹에 대한 SSS 서비스를 사용하도록 구성해야합니다. 예:
group: files sss
passwd: files sss
도메인 가입 :
adcli
kinit
사용하기 전에 수행 할 필요가 없으며 제공된 자격 증명을 기반으로합니다.
adcli join -D mydomain.net -U Administrator--show-details –v
adcli join –H adclient.mydomain.net -D mydomain.net -U Administrator --show-details -v
net
유틸리티
net
유틸리티는 Samba 제품군의 일부입니다.smb.conf
구성 파일 에서 도메인 세부 정보를 설정해야 하므로 특히 비 대화식으로 사용하기가 더 어렵고 불편합니다.kinit
. 다시 말하지만, 이는 더 불편하고 스크립트에서 비 대화식으로 사용하기가 조금 더 어렵습니다. 한 단계 대신 두 단계가 있기 때문입니다.
SSHD 고려 사항 :
/etc/ssh/sshd_config
GSSAPIAuthentication yes
PasswordAuthentication yes
ChallengeResponseAuthentication yes
PasswordAuthentication no
이 옵션을 사용할 때 구성하십시오 ./bin/passwd
NIS 및 로컬 passwd 파일을 지원하지 않는을 호출 합니다.GSSAPICleanupCredentials yes
kdestroy
로그 아웃시 수행GSSAPIStrictAcceptorCheck no
host/<FQDN>@REALM
를 사용하여 KDC와 통신하지만 때때로 잘못됩니다 (예 : 호스트 이름이 SSH 서버의 DNS 이름과 일치하지 않는 경우). 이 옵션을 사용하면 SSHD가 /etc/krb5.keytab
파일 에서 주체를 사용할 수 있습니다.host/<FQDN>@REALM
ssh -K <ip>
비밀번호를 묻지 않고 작업 하기 위해 호스트의 IPv4 및 IPv6 주소에 대한 KDC에 호스트 프린시 펄 을 추가하거나 필요로하지 않을 수도 있습니다 ( '키 니트'를 이미 수행 한 경우, 물론이야).