Apa langkah-langkah yang diperlukan untuk mengautentikasi pengguna dari Active Directory yang berjalan pada Windows Server 2012 R2 di FreeBSD 10.0 menggunakan sssddengan 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 sssddengan backend AD dengan Kerberos TGT berfungsi?
Jawaban:
Ada beberapa pertimbangan rumit untuk membuat semuanya berjalan di luar kotak. FreeBSD hanya mendukung sssdversi 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 sssdtidak dapat menangani kasus ini.
Jadi dalam versi aktual sssdAnda 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.confdengan 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.confdengan 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.confuntuk 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.confuntuk mencocokkan pengaturan ini:
group: files sss
passwd: files sss
Instal paket opsional untuk pembuatan direktori home:
$ pkg install pam_mkhomedir
Ubah bidang yang diperlukan PAMagar 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-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/ldbMembalikkan dependensi dari berbagai paket:
net/openldap24-sasl-client: sysutils/msktutilnet/openldap24-sasl-client: net/nss-pam-ldapd-saslnet/openldap24-sasl-client: net-mgmt/adcli
sssdsendiri membutuhkan MIT Kerberos, meskipun kita memiliki Heimdal sebagai paket dasaradcliingin 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
SMBadcliada, tetapi saat tulisan ini dibuat, tidak berfungsi.
GSSAPI_MITcyrus-sasl-gssapi diperlukan, tetapi versi biner pkg tidak berfungsi, dan memiliki masalah ketergantungan aneh yang menyebabkannya menghapus SSSD.
GSSAPI_MITopenldap-sasl-client diperlukan untuk fungsionalitas tetapi SSSD ingin menarik versi openldap non SASL.
openldap-sasl-clientdengan GSSAPIopsi yang dipilih ( make config) di porta.pkg remove –f openldap-client
openldap-clienttanpa 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 createuntuk 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-clientlakukan apkg remove –f openldap-client
pkg add openldap-sasl-client-2.4.44.txz
pkg createuntuk menggantikan ketergantungan pada openldap-clientdengan openldap-sasl-clientmenghapus 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.dfile 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.distadalah salinan dari /etc/pam.d/systemfile stok . Itu termasuk dalam /etc/pam.d/sufile di atas untuk mencegah masalah dengan perintah su.suakun AD sebagai root, karena sekali root, sutidak perlu mengotentikasi dan info akun ditarik melalui saklar layanan nama melalui SSSD.sudoalasan keamanan sajaksudan itu berfungsi untuk beralih dari pengguna A ke pengguna B
ksu(Dalam /usr/bin) Heimdal tidak memiliki SUID yang diatur secara default
ksubekerja,chmod u+s /usr/bin/ksukrb5paket terpasang di /usr/local/bin) SUID saat diinstal/usr/local/binsebelumnya /usr/bin, dllksu akan meminta pengguna untuk kata sandi AD / Kerberos dari pengguna targetpasswdtidak akan bekerja untuk mengubah kata sandi AD / Kerberos Anda bahkan jika Anda menambah pam_sss.sofile PAM passwd. The passwdbiner hanya mendukung lokal dan NIS Gunakan kpasswduntuk mengubah password Anda pada AD / Kerberos server (s).Ganti Nama Layanan:
/etc/nsswitch.conffile harus dikonfigurasi untuk menggunakan layanan sss untuk passwd dan kelompok. Contoh:
group: files ssspasswd: files sssBergabung dengan Domain:
adcli
kinitsebelum menggunakan, itu melakukannya untuk Anda berdasarkan kredit yang diberikan.
adcli join -D mydomain.net -U Administrator--show-details –vadcli join –H adclient.mydomain.net -D mydomain.net -U Administrator --show-details -v
netUtilitas
Sambanetutilitas merupakan bagian dari Samba suite.smb.conffile 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 nosaat menggunakan opsi ini./bin/passwd, yang tidak mendukung apa pun kecuali NIS dan file passwd lokal.GSSAPICleanupCredentials yes
kdestroysaat logoutGSSAPIStrictAcceptorCheck no
host/<FQDN>@REALMuntuk 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.keytabfile, termasuk yang benarhost/<FQDN>@REALMssh -K <ip>agar berfungsi tanpa meminta kata sandi (anggap Anda sudah melakukan 'kinit', tentu saja).