sssdKerberos TGT가 작동하는 AD 백엔드를 사용하여 FreeBSD 10.0의 Windows Server 2012 R2에서 실행되는 Active Directory에서 사용자를 인증하는 데 필요한 단계는 무엇입니까 ?
sssdKerberos 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-clientsecurity/cyrus-sasl2-gssapi: security/cyrus-sasl2net/openldap24-sasl-client: security/cyrus-sasl2security/sssd: security/nsssecurity/sssd:security/krb5security/sssd: security/cyrus-sasl2security/sssd:net/openldap24-clientsecurity/sssd: lang/python27security/sssd: lang/python2security/sssd: dns/c-aressecurity/sssd: devel/teventsecurity/sssd: devel/tallocsecurity/sssd: devel/poptsecurity/sssd: devel/pcresecurity/sssd: devel/libunistringsecurity/sssd: devel/libinotifysecurity/sssd: devel/gettext-runtimesecurity/sssd: devel/ding-libssecurity/sssd: devel/dbussecurity/sssd: databases/tdbsecurity/sssd: databases/ldb다양한 패키지의 역 종속성 :
net/openldap24-sasl-client: sysutils/msktutilnet/openldap24-sasl-client: net/nss-pam-ldapd-saslnet/openldap24-sasl-client: net-mgmt/adcli
sssd자신을 우리가 기본 패키지로는 Heimdal을에도 불구하고 MIT Kerberos를 필요adcli욕구 openldap-sasl-client, 그러나 (의 하위 종속을 포함한 다른 패키지 sssd에서 풀) openldap-client(어떤 바보 이유)이 SASL 클라이언트와 뮤텍스입니다. 이로 인해 최소한의 바이너리 패키지가 있어도 설치가 약간 어려워집니다.이 글을 쓰는 시점에서 FreeBSD 용 SSSD 용 바이너리 pkg는 SSSD에서 AD 지원을 포함하지 않습니다.
SMBadcli존재하지만이 글을 쓰는 시점에는 작동하지 않습니다.
GSSAPI_MITcyrus-sasl-gssapi 필요하지만 pkg 이진 버전이 작동하지 않으며 SSSD를 제거하는 이상한 종속성 문제가 있습니다.
GSSAPI_MITopenldap-sasl-client 기능에 필요하지만 SSSD는 비 SASL 버전의 openldap을 가져 오려고합니다.
openldap-sasl-client하십시오 .GSSAPImake configpkg remove –f openldap-client
openldap-clientSSSD와 같은 다른 패키지를 자동으로 제거 하지 않고 제거 하고 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.dSSSD를 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/susu 명령과 관련된 문제를 방지하기 위해 위 파일에 포함되어 있습니다 .su번 루트 su가 인증 될 필요가없고 계정 정보가 SSSD를 통해 이름 서비스 스위치를 통해 가져 오기 때문에 하나는 여전히 루트로 AD 계정에 액세스 할 수 있습니다.sudo보안상의 이유로 만 사용해야 합니다.ksu사용자 A에서 사용자 B로 전환하는 데
사용할 수 있습니다.ksu(in /usr/bin)에는 기본적으로 SUID가 설정되어 있지 않습니다
ksu작동 시키려면chmod u+s /usr/bin/ksukrb5설치된 패키지 /usr/local/bin)는 설치시 SUID입니다./usr/local/bin이전 경로 /usr/bin등 으로 기본 경로를 조정할 수 있습니다.ksu 대상 사용자의 AD / Kerberos 비밀번호를 묻는 메시지를 표시합니다.passwdpam_sss.sopasswd PAM 파일에 추가하더라도 AD / Kerberos 비밀번호를 변경하는 데 작동하지 않습니다 . passwd바이너리는 로컬 및 NIS 사용을 지원하는 kpasswd광고를 암호를 변경 / Kerberos 서버 (들).이름 서비스 스위치 :
/etc/nsswitch.conf파일은 passwd 및 그룹에 대한 SSS 서비스를 사용하도록 구성해야합니다. 예:
group: files ssspasswd: files sss도메인 가입 :
adcli
kinit사용하기 전에 수행 할 필요가 없으며 제공된 자격 증명을 기반으로합니다.
adcli join -D mydomain.net -U Administrator--show-details –vadcli 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/passwdNIS 및 로컬 passwd 파일을 지원하지 않는을 호출 합니다.GSSAPICleanupCredentials yes
kdestroy로그 아웃시 수행GSSAPIStrictAcceptorCheck no
host/<FQDN>@REALM를 사용하여 KDC와 통신하지만 때때로 잘못됩니다 (예 : 호스트 이름이 SSH 서버의 DNS 이름과 일치하지 않는 경우). 이 옵션을 사용하면 SSHD가 /etc/krb5.keytab파일 에서 주체를 사용할 수 있습니다.host/<FQDN>@REALMssh -K <ip>비밀번호를 묻지 않고 작업 하기 위해 호스트의 IPv4 및 IPv6 주소에 대한 KDC에 호스트 프린시 펄 을 추가하거나 필요로하지 않을 수도 있습니다 ( '키 니트'를 이미 수행 한 경우, 물론이야).