Apa langkah-langkah yang diperlukan untuk mengautentikasi pengguna dari Active Directory yang berjalan pada Windows Server 2012 R2 di FreeBSD 10.0 menggunakan sssd
dengan backend AD dengan Kerberos TGT berfungsi?
Apa langkah-langkah yang diperlukan untuk mengautentikasi pengguna dari Active Directory yang berjalan pada Windows Server 2012 R2 di FreeBSD 10.0 menggunakan sssd
dengan backend AD dengan Kerberos TGT berfungsi?
Jawaban:
Ada beberapa pertimbangan rumit untuk membuat semuanya berjalan di luar kotak. FreeBSD hanya mendukung sssd
versi 1.9.6 saat ini. Jadi tidak ada dukungan untuk Nama Pokok Perusahaan.
Jika Anda memiliki domain dengan UPN yang tidak cocok itu akan gagal masuk, karena otentikasi Kerberos akan gagal selama proses, bahkan dengan FreeBSD yang mendukung Nama Pimpinan Perusahaan dengan Kerberos, mereka sssd
tidak dapat menangani kasus ini.
Jadi dalam versi aktual sssd
Anda terbatas untuk memiliki Nama Pokok Pengguna dalam Nama Domain yang sama, misalnya:
Domain Name = example.com
NetBIOS Name = EXAMPLE
User Principal Name:
username@example.com sAMAccountName: username
Mengetahui hal ini kami dapat menjelaskan langkah-langkah untuk berhasil mengotentikasi pengguna dari AD di FreeBSD.
Buat file /etc/krb5.conf
dengan konten berikut:
[libdefaults]
default_realm = EXAMPLE.COM
dns_lookup_realm = true
dns_lookup_kdc = true
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = yes
Instal Samba 4.1:
$ pkg install samba41
Buat file /usr/local/etc/smb4.conf
dengan konten berikut:
[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
Meminta Tiket Administrator Kerberos:
$ kinit Administrator
Kemudian bergabunglah dengan domain dan buat keytab
$ net ads join createupn=host/server-hostname.example.com@EXAMPLE.COM -k
$ net ads keytab create -k
Instal paket yang diperlukan:
$ pkg install sssd cyrus-sasl-gssapi
Edit file /usr/local/etc/sssd/sssd.conf
untuk mencocokkan pengaturan ini:
[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
Edit file /etc/nsswitch.conf
untuk mencocokkan pengaturan ini:
group: files sss
passwd: files sss
Instal paket opsional untuk pembuatan direktori home:
$ pkg install pam_mkhomedir
Ubah bidang yang diperlukan PAM
agar sesuai dengan pengaturan ini:
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 mana yang Anda gunakan di sini? Yang built-in atau keamanan / KRB5 dari MIT?
Ketika menginstal sssd, diperlukan keamanan / krb5 yang diinstal yang saat ini masih dianggap eksperimental di FreeBSD. Demikian pertanyaan ini.
Saya tidak beruntung mendapatkan pengguna / grup AD saat menjalankan perintah 'getent'. mungkin karena fakta bahwa nama NETBIOS berbeda dari nama domain -yaitu dalam kasus saya, nama domain adalah dawnsign.com dan nama NETBIOS adalah DSP.
Saya hanya mengonfigurasi modul login pam.d. Apa modul pam lain yang perlu diedit agar otentikasi yang berhasil terjadi?
Setiap info tambahan akan sangat dihargai!
Mengkompilasi ulang samba4 dari port dimungkinkan untuk menggunakan autentikasi winbind seperti linux bahkan tanpa sssd. Cukup mengkompilasi ulang samba4 dari port setelah mengaktifkan 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
Ini akan mengkompilasi ulang samba dengan semua dukungan yang diperlukan (gssapi, ldap, kerberos) kemudian edit nsswitch.conf seperti ini
passwd: files winbind
group: files winbind
Halo,
Ini adalah pembaruan kecil tentang penggunaan sssd v1.11.7
Jika Anda menggunakan "id_provider = iklan" dan Anda melihat kesalahan berikut di sssd logfile:
/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]
Anda dapat menggunakan prosedur berikut untuk menyelesaikan masalah ini dan membuat integrasi AD berfungsi dengan benar. Sekarang membangun sssd v1.11.7 dengan dukungan Samba, membangun dari src sssd diperlukan agar terhubung dengan 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
Instalasi (dan masalah pengemasan dan ketergantungan yang menyenangkan)
/usr/bin
, dan yang lainnya di /usr/local/bin
. Karena tidak ada file sistem dasar yang tampak dalam sebuah paket, Anda tidak bisa begitu saja menghapus barang-barang Heimdal KRB. Sesuatu yang harus diperhatikan.Maju dependensi dari berbagai paket (deps yang menarik dicetak tebal, deps yang bertolak-belakang dicetak miring):
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
Membalikkan dependensi dari berbagai paket:
net/openldap24-sasl-client: sysutils/msktutil
net/openldap24-sasl-client: net/nss-pam-ldapd-sasl
net/openldap24-sasl-client: net-mgmt/adcli
sssd
sendiri membutuhkan MIT Kerberos, meskipun kita memiliki Heimdal sebagai paket dasaradcli
ingin openldap-sasl-client
, tetapi paket lain (termasuk sub-dependensi sssd
) menarik openldap-client
, yang mutex dengan klien sasl (untuk alasan konyol apa pun). Ini membuat instalasi sedikit menyakitkan, bahkan dengan paket biner minimum.Pada tulisan ini, pkg biner untuk SSSD untuk FreeBSD tidak termasuk dukungan AD di SSSD
SMB
adcli
ada, tetapi saat tulisan ini dibuat, tidak berfungsi.
GSSAPI_MIT
cyrus-sasl-gssapi
diperlukan, tetapi versi biner pkg tidak berfungsi, dan memiliki masalah ketergantungan aneh yang menyebabkannya menghapus SSSD.
GSSAPI_MIT
openldap-sasl-client
diperlukan untuk fungsionalitas tetapi SSSD ingin menarik versi openldap non SASL.
openldap-sasl-client
dengan GSSAPI
opsi yang dipilih ( make config
) di porta.pkg remove –f openldap-client
openldap-client
tanpa melakukan autoremoves dari paket lain (seperti SSSD) dan memungkinkan pemasangan versi SASLopenldap-sasl-client
pkg remove –f sssd
(Opsional) Setelah semuanya berfungsi dan diverifikasi, Anda dapat menggunakan pkg create
untuk membuat paket biner dari empat paket dengan opsi yang tepat diaktifkan dan menggunakannya daripada membangunnya di port pada setiap sistem. Instalasi biner mengikuti pola yang mirip dengan proses pembuatan port:
pkg install sssd-1.11.7_8.txz
pkg add
paket lainnya (tidak menginstal, menambah), menyimpan paket openldap untuk yang terakhir.openldap-sasl-client
lakukan apkg remove –f openldap-client
pkg add openldap-sasl-client-2.4.44.txz
pkg create
untuk menggantikan ketergantungan pada openldap-client
dengan openldap-sasl-client
menghapus kebutuhan untuk melakukan hal ini menghapus / instal ulang. Saya belum punya waktu untuk melakukan ini.
openldap-client
, jadi Anda harus memperbaikinya juga.Konfigurasi Kerberos:
[libdefaults] default_realm = MYDOMAIN.NET forwardable = benar # Biasanya semua yang Anda butuhkan dalam lingkungan AD, karena DNS SRV mencatat # akan mengidentifikasi server / layanan AD / KRB. Beri komentar jika Anda # ingin secara manual menunjuk ke server AD Anda dns_lookup_kdc = true [ranah] MYDOMAIN.NET = { # Jika Anda secara manual menunjuk ke server AD yang berbeda dari yang ada di 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 domains = MYDOMAIN.NET layanan = nss, pam, pac fallback_homedir = / home /% u [domain / MYDOMAIN.NET] id_provider = iklan access_provider = iklan auth_provider = iklan chpass_provider = iklan # gunakan atribut AD POSIX, beri komentar jika Anda menggunakan yang dibuat secara otomatis # UID dan GID. ldap_id_mapping = Salah cache_credentials = true ad_server = adserver.mydomain.net # jika Anda tidak memiliki bash, atau apa pun yang ada di loginShell akun AD atribut # diinstal override_shell = / bin / tcsh
/etc/pam.d
file yang harus saya modifikasi agar SSSD berfungsi dengan FreeBSD:/etc/pam.d/sshd:
# # $ FreeBSD: releng / 11.0 / etc / pam.d / sshd 197769 2009-10-05 09: 28: 54Z des $ # # Konfigurasi PAM untuk layanan "sshd" # # auth auth cukup pam_opie.so no_warn no_fake_prompts auth diperlukan pam_opieaccess.so no_warn allow_local #auth cukup pam_krb5.jadi no_warn coba_first_pass #auth cukup pam_ssh.so no_warn try_first_pass auth cukup pam_unix.so no_warn try_first_pass nullok auth cukup pam_sss.so use_first_pass auth diperlukan pam_unix.jadi no_warn use_first_pass # Akun akun diperlukan pam_nologin.so #account diperlukan pam_krb5.so akun diperlukan pam_login_access.so akun diperlukan pam_unix.so cukup akun pam_sss.so # sesi #session opsional pam_ssh.so want_agent sesi pam_sss.so opsional diperlukan sesi mode pam_mkhomedir.so = 0700 sesi diperlukan pam_permit.so # kata sandi #password pam_krb5.so no_warn try_first_pass yang memadai #password, cukup pam_unix.so try_first_pass use_authtok nullok kata sandi cukup pam_unix.so try_first_pass use_authtok kata sandi cukup 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 $ # # Default seluruh sistem # # auth auth cukup pam_opie.so no_warn no_fake_prompts auth diperlukan pam_opieaccess.so no_warn allow_local #auth cukup pam_krb5.jadi no_warn coba_first_pass #auth cukup pam_ssh.so no_warn try_first_pass #auth diperlukan pam_unix.so no_warn try_first_pass nullok auth cukup pam_unix.so no_warn try_first_pass auth cukup pam_sss.so use_first_pass auth diperlukan pam_deny.so # Akun #account diperlukan pam_krb5.so akun diperlukan pam_login_access.so akun diperlukan pam_unix.so cukup akun pam_sss.so # sesi #session opsional pam_ssh.so want_agent sesi diperlukan pam_lastlog.so no_fail sesi pam_sss.so opsional diperlukan sesi mode pam_mkhomedir.so = 0700 # kata sandi #password pam_krb5.so no_warn try_first_pass yang memadai #password diperlukan pam_unix.so no_warn try_first_pass kata sandi yang memadai pam_unix.so no_warn try_first_pass nullok use_authtok kata sandi cukup pam_sss.so use_authtok #password diperlukan pam_deny.so
/etc/pam.d/su:
# # $ FreeBSD: releng / 11.0 / etc / pam.d / su 219663 2011-03-15 10: 13: 35Z des $ # # Konfigurasi PAM untuk layanan "su" # # auth auth cukup pam_rootok.so no_warn auth cukup pam_self.so no_warn auth diperlukan pam_group.so no_warn group = wheel root_only fail_safe ruser auth menyertakan system.dist # Akun akun termasuk system.dist # sesi sesi diperlukan pam_permit.so
(indentasi)
system.dist
adalah salinan dari /etc/pam.d/system
file stok . Itu termasuk dalam /etc/pam.d/su
file di atas untuk mencegah masalah dengan perintah su.su
akun AD sebagai root, karena sekali root, su
tidak perlu mengotentikasi dan info akun ditarik melalui saklar layanan nama melalui SSSD.sudo
alasan keamanan sajaksu
dan itu berfungsi untuk beralih dari pengguna A ke pengguna B
ksu
(Dalam /usr/bin
) Heimdal tidak memiliki SUID yang diatur secara default
ksu
bekerja,chmod u+s /usr/bin/ksu
krb5
paket terpasang di /usr/local/bin
) SUID saat diinstal/usr/local/bin
sebelumnya /usr/bin
, dllksu
akan meminta pengguna untuk kata sandi AD / Kerberos dari pengguna targetpasswd
tidak akan bekerja untuk mengubah kata sandi AD / Kerberos Anda bahkan jika Anda menambah pam_sss.so
file PAM passwd. The passwd
biner hanya mendukung lokal dan NIS Gunakan kpasswd
untuk mengubah password Anda pada AD / Kerberos server (s).Ganti Nama Layanan:
/etc/nsswitch.conf
file harus dikonfigurasi untuk menggunakan layanan sss untuk passwd dan kelompok. Contoh:
group: files sss
passwd: files sss
Bergabung dengan Domain:
adcli
kinit
sebelum menggunakan, itu melakukannya untuk Anda berdasarkan kredit yang diberikan.
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
Utilitas
Sambanet
utilitas merupakan bagian dari Samba suite.smb.conf
file konfigurasi, yang membuatnya lebih sulit dan tidak nyaman untuk digunakan, terutama yang non-interaktif.kinit
. Sekali lagi, ini lebih tidak nyaman, dan membuatnya sedikit lebih sulit untuk digunakan secara non-interaktif dalam sebuah skrip, karena ada dua langkah daripada satu.
Pertimbangan SSHD:
/etc/ssh/sshd_config
GSSAPIAuthentication yes
PasswordAuthentication yes
ChallengeResponseAuthentication yes
PasswordAuthentication no
saat menggunakan opsi ini./bin/passwd
, yang tidak mendukung apa pun kecuali NIS dan file passwd lokal.GSSAPICleanupCredentials yes
kdestroy
saat logoutGSSAPIStrictAcceptorCheck no
host/<FQDN>@REALM
untuk berbicara dengan KDC, tetapi kadang-kadang salah (misalnya, jika nama host tidak cocok dengan nama DNS dari server SSH). Opsi ini memungkinkan SSHD untuk menggunakan prinsipal apa pun dalam /etc/krb5.keytab
file, termasuk yang benarhost/<FQDN>@REALM
ssh -K <ip>
agar berfungsi tanpa meminta kata sandi (anggap Anda sudah melakukan 'kinit', tentu saja).