Quali sono i passaggi necessari per autenticare gli utenti da una Active Directory in esecuzione su Windows Server 2012 R2 in FreeBSD 10.0 usando sssd
con il back-end di AD con Kerberos TGT funzionante?
Quali sono i passaggi necessari per autenticare gli utenti da una Active Directory in esecuzione su Windows Server 2012 R2 in FreeBSD 10.0 usando sssd
con il back-end di AD con Kerberos TGT funzionante?
Risposte:
Ci sono alcune considerazioni complicate per rendere tutto pronto per l'uso. In sssd
questo momento FreeBSD supporta solo la versione 1.9.6. Quindi non c'è supporto per Enterprise Principal Names.
Se hai un dominio con UPN non corrispondenti non riuscirà ad accedere, poiché l'autenticazione Kerberos fallirà durante il processo, anche con FreeBSD che supporta i nomi principali aziendali con Kerberos, sssd
non è possibile gestire questo caso.
Pertanto, nella versione effettiva di sssd
te è limitato il nome principale utente all'interno dello stesso nome dominio, ad esempio:
Domain Name = example.com
NetBIOS Name = EXAMPLE
User Principal Name:
username@example.com sAMAccountName: username
Sapendo questo, possiamo descrivere i passaggi per autenticare con successo gli utenti da AD in FreeBSD.
Creare il file /etc/krb5.conf
con il seguente contenuto:
[libdefaults]
default_realm = EXAMPLE.COM
dns_lookup_realm = true
dns_lookup_kdc = true
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = yes
Installa Samba 4.1:
$ pkg install samba41
Creare il file /usr/local/etc/smb4.conf
con il seguente contenuto:
[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
Richiedi un biglietto per amministratore Kerberos:
$ kinit Administrator
Quindi unisciti al dominio e crea un keytab
$ net ads join createupn=host/server-hostname.example.com@EXAMPLE.COM -k
$ net ads keytab create -k
Installa i pacchetti richiesti:
$ pkg install sssd cyrus-sasl-gssapi
Modifica il file /usr/local/etc/sssd/sssd.conf
in modo che corrisponda a queste impostazioni:
[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
Modifica il file /etc/nsswitch.conf
in modo che corrisponda a queste impostazioni:
group: files sss
passwd: files sss
Installa i pacchetti opzionali per la creazione della home directory:
$ pkg install pam_mkhomedir
Modifica i PAM
regni necessari per abbinare queste impostazioni:
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>
Quale Kerberos stai usando qui? Quello incorporato o security / krb5 del MIT?
Quando installi sssd, richiede che sia installato security / krb5 che in questo momento è ancora considerato sperimentale in FreeBSD. Quindi questa domanda.
Non ho fortuna ad ottenere gli utenti / gruppi di AD durante l'esecuzione dei comandi "getent". potrebbe essere dovuto al fatto che il nome NETBIOS differisce dal nome di dominio -ie nel mio caso, il nome di dominio è dawnsign.com e il nome NETBIOS è DSP.
Ho configurato solo il modulo di accesso pam.d. Quali altri moduli pam devono essere modificati per consentire un'autenticazione corretta?
Ogni ulteriore informazione sarebbe molto apprezzata!
Ricompilare samba4 dalle porte è possibile usare l'autenticazione winbind come linux anche senza sssd. Basta ricompilare samba4 dalle porte dopo aver abilitato 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
Questo ricompilerà samba con tutto il supporto necessario (gssapi, ldap, kerberos) quindi modifica nsswitch.conf in questo modo
passwd: files winbind
group: files winbind
Ciao,
Questo è un piccolo aggiornamento sull'uso di sssd v1.11.7
Se stai utilizzando "id_provider = ad" e visualizzi il seguente errore nel file di registro 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]
È possibile utilizzare la seguente procedura per risolvere questo problema e far funzionare correttamente l'integrazione AD. Ora compilate sssd v1.11.7 con il supporto di Samba, è necessario compilare da src sssd quindi è collegato a 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
Installazione (e divertenti problemi di imballaggio e dipendenza)
/usr/bin
e l'altro interno /usr/local/bin
. Poiché nessuno dei file di sistema di base sembra essere contenuto in un pacchetto, non è possibile semplicemente rimuovere il materiale Heimdal KRB. Qualcosa di cui essere consapevoli.Dipendenze forward dei vari pacchetti (deps interessanti in deps in grassetto e in conflitto in corsivo grassetto):
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
Dipendenze inverse dei vari pacchetti:
net/openldap24-sasl-client: sysutils/msktutil
net/openldap24-sasl-client: net/nss-pam-ldapd-sasl
net/openldap24-sasl-client: net-mgmt/adcli
sssd
, richiede il MIT Kerberos, anche se abbiamo Heimdal come pacchetto baseadcli
vuole openldap-sasl-client
, ma altri pacchetti (comprese le sotto-dipendenze di sssd
) openldap-client
vengono inseriti, che è mutex con il client sasl (per qualsiasi motivo sciocco). Questo rende l'installazione un po 'problematica, anche con un set minimo di pacchetti binari.Al momento della stesura di questo documento, il pacchetto binario per SSSD per FreeBSD non include il supporto AD in SSSD
SMB
adcli
esiste, ma al momento della stesura di questo documento, non funziona.
GSSAPI_MIT
cyrus-sasl-gssapi
è obbligatorio, ma la versione binaria di pkg non funziona e presenta strani problemi di dipendenza che causano la rimozione di SSSD.
GSSAPI_MIT
openldap-sasl-client
è richiesto per funzionalità ma SSSD vuole inserire la versione non SASL di openldap.
openldap-sasl-client
con l' GSSAPI
opzione selezionata ( make config
) nelle porte.pkg remove –f openldap-client
openldap-client
senza eseguire alcun movimento degli altri pacchetti (come SSSD) e consentirà l'installazione della versione SASLopenldap-sasl-client
pkg remove –f sssd
(Facoltativo) Una volta che tutto funziona e viene verificato, è possibile utilizzare pkg create
per creare pacchetti binari dei quattro pacchetti con le opzioni appropriate abilitate e utilizzare quelli invece di crearli nelle porte su ogni sistema. L'installazione del file binario segue un modello simile al processo di generazione delle porte:
pkg install sssd-1.11.7_8.txz
pkg add
gli altri pacchetti (non installare, aggiungere), salvando il pacchetto openldap per ultimo.openldap-sasl-client
fai apkg remove –f openldap-client
pkg add openldap-sasl-client-2.4.44.txz
pkg create
per sostituire la dipendenza openldap-client
con openldap-sasl-client
per eliminare la necessità di fare questo rimuovere / reinstallazione. Non ho avuto il tempo di esaminare questo.
openldap-client
dovresti risolvere anche quelle.Configurazione Kerberos:
[libdefaults] default_realm = MYDOMAIN.NET forwardable = true # Normalmente tutto ciò che serve in un ambiente AD, poiché i record DNS SRV # identificherà i server / servizi AD / KRB. Commenta se tu # desidera puntare manualmente al tuo server AD dns_lookup_kdc = true [regni] MYDOMAIN.NET = { # Se stai indicando manualmente un server AD diverso da quello che c'è nel 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 servizi = nss, pam, pac fallback_homedir = / home /% u [Dominio / MYDOMAIN.NET] id_provider = annuncio access_provider = annuncio auth_provider = annuncio chpass_provider = annuncio # usa gli attributi di POSIX AD, commenta se stai usando generato automaticamente # UID e GID. ldap_id_mapping = Falso cache_credentials = true ad_server = adserver.mydomain.net # se non hai bash o qualsiasi altra cosa sia nella loginShell dell'account AD # attributo installato override_shell = / bin / tcsh
/etc/pam.d
file che ho dovuto modificare per far funzionare SSSD con FreeBSD:/etc/pam.d/sshd:
# # $ FreeBSD: releng / 11.0 / etc / pam.d / sshd 197769 2009-10-05 09: 28: 54Z des $ # # Configurazione PAM per il servizio "sshd" # # auth auth sufficienti pam_opie.so no_warn no_fake_prompts autenticazione richiesta pam_opieaccess.so no_warn allow_local #auth sufficienti pam_krb5.so no_warn try_first_pass #auth sufficienti pam_ssh.so no_warn try_first_pass auth sufficienti pam_unix.so no_warn try_first_pass nullok auth sufficienti pam_sss.so use_first_pass autenticazione obbligatoria pam_unix.so no_warn use_first_pass # account account richiesto pam_nologin.so #account richiesto pam_krb5.so account richiesto pam_login_access.so account richiesto pam_unix.so account pam_sss.so sufficiente # sessione #session opzionale pam_ssh.so want_agent sessione opzionale pam_sss.so sessione richiesta pam_mkhomedir.so mode = 0700 sessione richiesta pam_permit.so # parola d'ordine #password sufficiente pam_krb5.so no_warn try_first_pass #password sufficiente pam_unix.so try_first_pass use_authtok nullok password sufficiente pam_unix.so try_first_pass use_authtok password sufficiente 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 $ # # Impostazioni predefinite a livello di sistema # # auth auth sufficienti pam_opie.so no_warn no_fake_prompts autenticazione richiesta pam_opieaccess.so no_warn allow_local #auth sufficienti pam_krb5.so no_warn try_first_pass #auth sufficienti pam_ssh.so no_warn try_first_pass #auth richiesto pam_unix.so no_warn try_first_pass nullok auth sufficienti pam_unix.so no_warn try_first_pass auth sufficienti pam_sss.so use_first_pass autenticazione obbligatoria pam_deny.so # account #account richiesto pam_krb5.so account richiesto pam_login_access.so account richiesto pam_unix.so account pam_sss.so sufficiente # sessione #session opzionale pam_ssh.so want_agent sessione richiesta pam_lastlog.so no_fail sessione opzionale pam_sss.so sessione richiesta pam_mkhomedir.so mode = 0700 # parola d'ordine #password sufficiente pam_krb5.so no_warn try_first_pass #password richiesto pam_unix.so no_warn try_first_pass password sufficiente pam_unix.so no_warn try_first_pass nullok use_authtok password sufficiente pam_sss.so use_authtok #password richiesto pam_deny.so
/etc/pam.d/su:
# # $ FreeBSD: releng / 11.0 / etc / pam.d / su 219663 2011-03-15 10: 13: 35Z des $ # # Configurazione PAM per il servizio "su" # # auth autenticazione sufficiente pam_rootok.so no_warn auth sufficienti pam_self.so no_warn pam_group.so no_warn group = ruota root_only fail_safe ruser auth include system.dist # account l'account include system.dist # sessione sessione richiesta pam_permit.so
(Trattino)
system.dist
è una copia del /etc/pam.d/system
file di scorta . È incluso nel /etc/pam.d/su
file sopra per evitare problemi con il comando su.su
AD account come root, poiché una volta root, su
non è necessario autenticarsi e le informazioni sull'account vengono estratte tramite l'interruttore del servizio nomi tramite SSSD.sudo
per motivi di sicurezzaksu
e funziona per passare dall'utente A all'utente B
ksu
(in /usr/bin
) non ha SUID impostato di default
ksu
funzionare Heimdal ,chmod u+s /usr/bin/ksu
krb5
pacchetto installato in /usr/local/bin
) è SUID all'installazione/usr/local/bin
sia prima /usr/bin
, eccksu
richiederà all'utente la password AD / Kerberos dell'utente di destinazionepasswd
non funzionerà per modificare la password di AD / Kerberos anche se si aggiunge pam_sss.so
al file PAM passwd. Il passwd
binario supporta solo l'uso locale e NIS kpasswd
per modificare la password sui server AD / Kerberos.Interruttore servizio nome:
/etc/nsswitch.conf
file deve essere configurato per utilizzare il servizio sss per passwd e gruppi. Esempio:
group: files sss
passwd: files sss
Iscrizione a un dominio:
adcli
kinit
prima dell'uso, lo fa per te in base ai crediti forniti.
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
Utilità
Sambanet
utilità fa parte della suite Samba.smb.conf
file di configurazione, il che rende più difficile e scomodo da usare, soprattutto in modo non interattivo.kinit
. Ancora una volta, questo è più scomodo e rende un po 'più difficile l'uso in modo non interattivo in uno script, poiché ci sono due passaggi anziché uno.
Considerazioni su SSHD:
/etc/ssh/sshd_config
GSSAPIAuthentication yes
PasswordAuthentication yes
ChallengeResponseAuthentication yes
PasswordAuthentication no
quando usi questa opzione./bin/passwd
, che non supporta nient'altro che NIS e file passwd locale.GSSAPICleanupCredentials yes
kdestroy
logoutGSSAPIStrictAcceptorCheck no
host/<FQDN>@REALM
per parlare con il KDC, ma a volte lo sbaglia (ad esempio, se il nome host non corrisponde al nome DNS del server SSH). Questa opzione consente a SSHD di utilizzare qualsiasi entità nel /etc/krb5.keytab
file, che include quella correttahost/<FQDN>@REALM
ssh -K <ip>
funzionino senza richiedere una password (supponendo che abbiate già fatto un "parent"), ovviamente).