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 sssd
phụ 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 sssd
phụ 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ợ sssd
phiê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, sssd
không thể xử lý trường hợp này.
Vì vậy, trong phiên bản thực tế của sssd
bạ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.conf
vớ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.conf
vớ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 PAM
cả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/bin
và 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-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
Phụ thuộc ngược của các gói khác nhau:
net/openldap24-sasl-client: sysutils/msktutil
net/openldap24-sasl-client: net/nss-pam-ldapd-sasl
net/openldap24-sasl-client: net-mgmt/adcli
sssd
chính nó đòi hỏi MIT Kerberos, mặc dù chúng ta có Heimdal là gói cơ sởadcli
muố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
SMB
adcli
tồn tại, nhưng khi viết bài này, không hoạt động.
GSSAPI_MIT
cyrus-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_MIT
openldap-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-client
với GSSAPI
tùy chọn được chọn ( make config
) trong các cổng.pkg remove –f openldap-client
openldap-client
mà 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-client
là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-client
vớ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.d
tệ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.dist
là một bản sao của /etc/pam.d/system
tập tin chứng khoán . Nó được bao gồm trong /etc/pam.d/su
tệp ở trên để ngăn chặn các vấn đề với lệnh su.su
cập tài khoản AD dưới dạng root, vì một khi đã root, su
khô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.sudo
vì lý do bảo mậtksu
và 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
ksu
hoạt động,chmod u+s /usr/bin/ksu
krb5
gói được cài đặt trong /usr/local/bin
) là SUID khi cài đặt/usr/local/bin
trướ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 đíchpasswd
sẽ 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.so
vào tệp PAM passwd. Các passwd
nhị 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.conf
tin 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 sss
passwd: files sss
Tham gia một tên miền:
adcli
kinit
trướ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 –v
adcli join –H adclient.mydomain.net -D mydomain.net -U Administrator --show-details -v
net
Tiện ích
Sambanet
tiện ích này là một phần của bộ ứng dụng Samba.smb.conf
tệ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 no
khi 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
kdestroy
khi đă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.keytab
tệp, bao gồm quyềnhost/<FQDN>@REALM
ssh -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).