Các bước cần thiết để xác thực người dùng từ Active Directory chạy trên Windows Server 2012 R2 trong FreeBSD 10.0 bằng cách sử dụng sssdphụ trợ AD với Kerberos TGT hoạt động là gì?
Các bước cần thiết để xác thực người dùng từ Active Directory chạy trên Windows Server 2012 R2 trong FreeBSD 10.0 bằng cách sử dụng sssdphụ trợ AD với Kerberos TGT hoạt động là gì?
Câu trả lời:
Có một số cân nhắc khó khăn để làm cho mọi thứ hoạt động vượt trội. FreeBSD chỉ hỗ trợ sssdphiên bản 1.9.6 tại thời điểm này. Vì vậy, không có hỗ trợ cho Tên hiệu trưởng doanh nghiệp.
Nếu bạn có một tên miền không có UPN phù hợp thì nó sẽ không đăng nhập được, vì xác thực Kerberos sẽ thất bại trong quá trình, ngay cả với FreeBSD hỗ trợ Tên hiệu trưởng doanh nghiệp với Kerberos, sssdkhông thể xử lý trường hợp này.
Vì vậy, trong phiên bản thực tế của sssdbạn bị giới hạn có Tên người dùng gốc trong cùng một tên miền, ví dụ:
Domain Name = example.com
NetBIOS Name = EXAMPLE
User Principal Name:
username@example.com sAMAccountName: username
Biết được điều này, chúng tôi có thể mô tả các bước để xác thực thành công người dùng từ AD trong FreeBSD.
Tạo tập tin /etc/krb5.confvới nội dung sau:
[libdefaults]
default_realm = EXAMPLE.COM
dns_lookup_realm = true
dns_lookup_kdc = true
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = yes
Cài đặt Samba 4.1:
$ pkg install samba41
Tạo tập tin /usr/local/etc/smb4.confvới nội dung sau:
[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
Yêu cầu một vé Kerberos của quản trị viên:
$ kinit Administrator
Sau đó tham gia tên miền và tạo một keytab
$ net ads join createupn=host/server-hostname.example.com@EXAMPLE.COM -k
$ net ads keytab create -k
Cài đặt các gói yêu cầu:
$ pkg install sssd cyrus-sasl-gssapi
Chỉnh sửa tập tin /usr/local/etc/sssd/sssd.confđể phù hợp với cài đặt này:
[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
Chỉnh sửa tập tin /etc/nsswitch.confđể phù hợp với cài đặt này:
group: files sss
passwd: files sss
Cài đặt các gói tùy chọn để tạo thư mục nhà:
$ pkg install pam_mkhomedir
Sửa đổi các PAMcảnh giới cần thiết để phù hợp với cài đặt này:
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>
Mà Kerberos bạn đang sử dụng ở đây? Tích hợp một hoặc bảo mật / krb5 từ MIT?
Khi cài đặt sssd, yêu cầu bảo mật / krb5 phải được cài đặt mà tại thời điểm này vẫn được coi là thử nghiệm trong FreeBSD. Do đó, câu hỏi này.
Tôi không gặp may mắn khi nhận được các nhóm / người dùng AD khi thực hiện các lệnh 'getent'. có thể là do tên NETBIOS khác với tên miền -ie trong trường hợp của tôi, tên miền là dawnsign.com và tên NETBIOS là DSP.
Tôi chỉ cấu hình mô-đun đăng nhập pam.d. Những mô-đun pam nào khác cần được chỉnh sửa để xác thực thành công?
Bất kỳ thông tin bổ sung sẽ được đánh giá rất cao!
Biên dịch lại samba4 từ các cổng có thể sử dụng tính năng tự động winbind như linux ngay cả khi không có sssd. Đơn giản chỉ cần biên dịch lại samba4 từ các cổng sau khi kích hoạt sasl ldap
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
Điều này sẽ biên dịch lại samba với tất cả các hỗ trợ cần thiết (gssapi, ldap, kerberos) sau đó chỉnh sửa nsswitch.conf như thế này
passwd: files winbind
group: files winbind
Xin chào,
Đây là một bản cập nhật nhỏ về việc sử dụng sssd v1.11.7
Nếu bạn đang sử dụng "id_provider = ad" và bạn thấy lỗi sau trong logssile 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]
Bạn có thể sử dụng quy trình sau để giải quyết vấn đề này và làm cho tích hợp AD hoạt động chính xác. Bây giờ hãy xây dựng sssd v1.11.7 với sự hỗ trợ của Samba, việc xây dựng từ src sssd là cần thiết để liên kết với 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
Cài đặt (và các vấn đề phụ thuộc và đóng gói thú vị)
/usr/binvà một bộ khác /usr/local/bin. Vì không có tệp hệ thống cơ sở nào có vẻ nằm trong một gói, bạn không thể xóa nội dung KRB của Heimdal. Một cái gì đó để nhận thức được.Chuyển tiếp phụ thuộc của các gói khác nhau (deps thú vị in đậm, deps xung đột in nghiêng in đậm):
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/ldbPhụ thuộc ngược của các gói khác nhau:
net/openldap24-sasl-client: sysutils/msktutilnet/openldap24-sasl-client: net/nss-pam-ldapd-saslnet/openldap24-sasl-client: net-mgmt/adcli
sssdchính nó đòi hỏi MIT Kerberos, mặc dù chúng ta có Heimdal là gói cơ sởadclimuốn openldap-sasl-client, nhưng các gói khác (bao gồm cả phụ thuộc của sssd) kéo vào openldap-client, đó là mutex với máy khách sasl (vì bất kỳ lý do ngớ ngẩn nào). Điều này làm cho việc cài đặt hơi khó khăn, ngay cả với một gói nhị phân tối thiểu.Theo văn bản này, pkg nhị phân cho SSSD cho FreeBSD không bao gồm hỗ trợ AD trong SSSD
SMBadclitồn tại, nhưng khi viết bài này, không hoạt động.
GSSAPI_MITcyrus-sasl-gssapi là bắt buộc, nhưng phiên bản nhị phân pkg không hoạt động và có các vấn đề phụ thuộc kỳ lạ khiến nó loại bỏ SSSD.
GSSAPI_MITopenldap-sasl-client là cần thiết cho chức năng nhưng SSSD muốn sử dụng phiên bản openldap không phải của SASL.
openldap-sasl-clientvới GSSAPItùy chọn được chọn ( make config) trong các cổng.pkg remove –f openldap-client
openldap-clientmà không thực hiện bất kỳ chế độ tự động nào của bất kỳ gói nào khác (như SSSD) và cho phép cài đặt phiên bản SASLopenldap-sasl-client
pkg remove –f sssd
(Tùy chọn) Khi mọi thứ đang hoạt động và được xác minh, bạn có thể sử dụng pkg createđể tạo các gói nhị phân của bốn gói với các tùy chọn phù hợp được bật và sử dụng các gói thay vì xây dựng chúng trong các cổng trên mọi hệ thống. Cài đặt nhị phân theo một mô hình tương tự như quá trình xây dựng cổng:
pkg install sssd-1.11.7_8.txz
pkg add các gói khác (không cài đặt, thêm), lưu gói openldap lần cuối.openldap-sasl-clientlàm mộtpkg remove –f openldap-client
pkg add openldap-sasl-client-2.4.44.txz
pkg createđể thay thế cho sự phụ thuộc vào openldap-clientvới openldap-sasl-clientđể loại bỏ sự cần thiết phải làm remove này / cài đặt lại. Tôi đã không có thời gian để xem xét việc này.
openldap-client, vì vậy bạn cũng sẽ phải sửa chúng.Cấu hình Kerberos:
[libdefaults]
default_realm = MYDOMAIN.NET
chuyển tiếp = đúng
# Thông thường tất cả những gì bạn cần trong môi trường AD, vì DNS SRV ghi lại
# sẽ xác định các máy chủ / dịch vụ AD / KRB. Bình luận nếu bạn
# muốn tự trỏ đến máy chủ AD của bạn
dns_lookup_kdc = đúng
[cõi]
MYDOMAIN.NET = {
# Nếu bạn đang tự trỏ đến một máy chủ AD khác với DNS trong DNS
# admin_server = adserver.mydomain.net
# kdc = adserver.mydomain.net
}
[domain_realm]
mydomain.net = MYDOMAIN.NET
.mydomain.net = MYDOMAIN.NET
[sssd] config_file_version = 2 tên miền = MYDOMAIN.NET dịch vụ = nss, pam, pac fallback_homedir = / home /% u [tên miền / MYDOMAIN.NET] id_provider = quảng cáo access_provider = quảng cáo auth_provider = quảng cáo chpass_provider = quảng cáo # sử dụng các thuộc tính AD POSIX, nhận xét nếu bạn đang sử dụng được tạo tự động # UID và GID. ldap_id_mapping = Sai cache_credentials = true ad_server = adserver.mydomain.net # nếu bạn không có bash, hoặc bất cứ điều gì có trong loginShell của tài khoản AD # thuộc tính được cài đặt ghi đè_shell = / bin / tcsh
/etc/pam.dtệp tôi phải sửa đổi để làm cho SSSD hoạt động với FreeBSD:/etc/pam.d/sshd:
# # $ FreeBSD: releng / 11.0 / etc / pam.d / sshd 197769 2009-10-05 09: 28: 54Z des $ # Cấu hình # PAM cho dịch vụ "sshd" # # xác thực auth đủ pam_opie.so no_warn no_fake_prompts authite pam_opieaccess.so no_warn allow_local #auth đủ pam_krb5.so no_warn try_first_pass #auth đủ pam_ssh.so no_warn try_first_pass auth đủ pam_unix.so no_warn try_first_pass nullok auth đủ pam_sss.so use_first_pass auth yêu cầu pam_unix.so no_warn use_first_pass # tài khoản tài khoản yêu cầu pam_nologin.so #account yêu cầu pam_krb5.so yêu cầu tài khoản pam_login_access.so yêu cầu tài khoản pam_unix.so tài khoản đủ pam_sss.so # phiên #session tùy chọn pam_ssh.so Want_agent phiên tùy chọn pam_sss.so phiên yêu cầu pam_mkhomedir.so mode = 0700 phiên yêu cầu pam_permit.so # mật khẩu #password đủ pam_krb5.so no_warn try_first_pass #password đủ pam_unix.so try_first_pass use_authtok nullok mật khẩu đủ pam_unix.so try_first_pass use_authtok mật khẩu đủ 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 $ # # Mặc định toàn hệ thống # # xác thực auth đủ pam_opie.so no_warn no_fake_prompts authite pam_opieaccess.so no_warn allow_local #auth đủ pam_krb5.so no_warn try_first_pass #auth đủ pam_ssh.so no_warn try_first_pass #auth bắt buộc pam_unix.so no_warn try_first_pass nullok auth đủ pam_unix.so no_warn try_first_pass auth đủ pam_sss.so use_first_pass auth yêu cầu pam_deny.so # tài khoản #account yêu cầu pam_krb5.so yêu cầu tài khoản pam_login_access.so yêu cầu tài khoản pam_unix.so tài khoản đủ pam_sss.so # phiên #session tùy chọn pam_ssh.so Want_agent phiên yêu cầu pam_lastlog.so no_fail phiên tùy chọn pam_sss.so phiên yêu cầu pam_mkhomedir.so mode = 0700 # mật khẩu #password đủ pam_krb5.so no_warn try_first_pass #password bắt buộc pam_unix.so no_warn try_first_pass mật khẩu đủ pam_unix.so no_warn try_first_pass nullok use_authtok mật khẩu đủ pam_sss.so use_authtok #password yêu cầu pam_deny.so
/etc/pam.d/su:
# # $ FreeBSD: releng / 11.0 / etc / pam.d / su 219663 2011-03-15 10: 13: 35Z des $ # Cấu hình # PAM cho dịch vụ "su" # # xác thực auth đủ pam_rootok.so no_warn auth đủ pam_elf.so no_warn auth constisite pam_group.so no_warn group = wheel root_only fail_safe ruser xác thực bao gồm system.dist # tài khoản tài khoản bao gồm system.dist # phiên phiên yêu cầu pam_permit.so
(thụt lề)
system.distlà một bản sao của /etc/pam.d/systemtập tin chứng khoán . Nó được bao gồm trong /etc/pam.d/sutệp ở trên để ngăn chặn các vấn đề với lệnh su.sucập tài khoản AD dưới dạng root, vì một khi đã root, sukhông cần xác thực và thông tin tài khoản được kéo qua chuyển đổi dịch vụ tên qua SSSD.sudovì lý do bảo mậtksuvà hoạt động để chuyển từ người dùng A sang người dùng B
ksu(in /usr/bin) không có SUID được đặt theo mặc định
ksuhoạt động,chmod u+s /usr/bin/ksukrb5gói được cài đặt trong /usr/local/bin) là SUID khi cài đặt/usr/local/bintrước đây /usr/bin, v.v.ksu sẽ nhắc người dùng nhập mật khẩu AD / Kerberos của người dùng đíchpasswdsẽ không hoạt động để thay đổi mật khẩu AD / Kerberos của bạn ngay cả khi bạn thêm pam_sss.sovào tệp PAM passwd. Các passwdnhị phân chỉ hỗ trợ địa phương và NIS sử dụng kpasswdđể thay đổi mật khẩu của bạn trên AD / máy chủ Kerberos (s).Tên dịch vụ chuyển đổi:
/etc/nsswitch.conftin nên được cấu hình để sử dụng dịch vụ sss cho passwd và các nhóm. Thí dụ:
group: files ssspasswd: files sssTham gia một tên miền:
adcli
kinittrước khi sử dụng, nó thực hiện cho bạn dựa trên các khoản tín dụng được cung cấp.
adcli join -D mydomain.net -U Administrator--show-details –vadcli join –H adclient.mydomain.net -D mydomain.net -U Administrator --show-details -v
netTiện ích
Sambanettiện ích này là một phần của bộ ứng dụng Samba.smb.conftệp cấu hình, điều này gây khó khăn và bất tiện hơn khi sử dụng, đặc biệt là không tương tác.kinit. Một lần nữa, điều này lại bất tiện hơn và khiến việc sử dụng không tương tác trong tập lệnh trở nên khó khăn hơn một chút, vì có hai bước thay vì một.
Cân nhắc SSHD:
/etc/ssh/sshd_config
GSSAPIAuthentication yes
PasswordAuthentication yes
ChallengeResponseAuthentication yes
PasswordAuthentication nokhi sử dụng tùy chọn này./bin/passwd, không hỗ trợ bất cứ thứ gì ngoài NIS và tệp mật khẩu cục bộ.GSSAPICleanupCredentials yes
kdestroykhi đăng xuấtGSSAPIStrictAcceptorCheck no
host/<FQDN>@REALMđể nói chuyện với KDC, nhưng đôi khi lại hiểu sai (ví dụ: nếu tên máy chủ không khớp với tên DNS của máy chủ SSH). Tùy chọn này cho phép SSHD sử dụng bất kỳ hiệu trưởng nào trong /etc/krb5.keytabtệp, bao gồm quyềnhost/<FQDN>@REALMssh -K <ip>để hoạt động mà không cần nhắc mật khẩu (giả sử bạn đã thực hiện 'kinit', tất nhiên).