¿Cuáles son los pasos necesarios para autenticar a los usuarios de un Active Directory que se ejecuta en Windows Server 2012 R2 en FreeBSD 10.0 sssd
con el backend AD con Kerberos TGT funcionando?
fuente
¿Cuáles son los pasos necesarios para autenticar a los usuarios de un Active Directory que se ejecuta en Windows Server 2012 R2 en FreeBSD 10.0 sssd
con el backend AD con Kerberos TGT funcionando?
Hay algunas consideraciones difíciles para que todo funcione de forma inmediata. FreeBSD solo es compatible con la sssd
versión 1.9.6 en este momento. Por lo tanto, no hay soporte para Enterprise Principal Names.
Si tiene un dominio con UPN no coincidentes, no podrá iniciar sesión, ya que la autenticación Kerberos fallará durante el proceso, incluso con FreeBSD que admite nombres principales de empresa con Kerberos, sssd
no puede manejar este caso.
Entonces, en la versión real de sssd
usted, está limitado a tener el Nombre principal del usuario dentro del mismo Nombre de dominio, por ejemplo:
Domain Name = example.com
NetBIOS Name = EXAMPLE
User Principal Name:
[email protected] sAMAccountName: username
Sabiendo esto, podemos describir los pasos para autenticar con éxito a los usuarios de AD en FreeBSD.
Cree el archivo /etc/krb5.conf
con el siguiente contenido:
[libdefaults]
default_realm = EXAMPLE.COM
dns_lookup_realm = true
dns_lookup_kdc = true
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = yes
Instale Samba 4.1:
$ pkg install samba41
Cree el archivo /usr/local/etc/smb4.conf
con el siguiente contenido:
[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
Solicite un ticket Kerberos de administrador:
$ kinit Administrator
Luego únete al dominio y crea una tabla de claves
$ net ads join createupn=host/[email protected] -k
$ net ads keytab create -k
Instalar paquetes requeridos:
$ pkg install sssd cyrus-sasl-gssapi
Edite el archivo /usr/local/etc/sssd/sssd.conf
para que coincida con esta configuración:
[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 = [email protected]
Edite el archivo /etc/nsswitch.conf
para que coincida con esta configuración:
group: files sss
passwd: files sss
Instale paquetes opcionales para la creación del directorio de inicio:
$ pkg install pam_mkhomedir
Modifique los PAM
reinos necesarios para que coincidan con esta configuración:
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>
¿Qué Kerberos estás usando aquí? ¿El incorporado o seguridad / krb5 de MIT?
Al instalar sssd, requiere que se instale security / krb5, que en este momento todavía se considera experimental en FreeBSD. De ahí esta pregunta.
No tengo suerte de obtener los usuarios / grupos de AD al ejecutar comandos 'getent'. puede deberse al hecho de que el nombre NETBIOS difiere del nombre de dominio; en mi caso, el nombre de dominio es dawnsign.com y el nombre NETBIOS es DSP.
Configuré solo el módulo de inicio de sesión pam.d. ¿Qué otros módulos de pam deben editarse para que se realice una autenticación exitosa?
Cualquier información adicional sería muy apreciada!
fuente
Es posible volver a compilar samba4 desde los puertos para usar la autenticación winbind como linux incluso sin sssd. Simplemente recompile samba4 desde los puertos después de habilitar sasl ldap
Esto recompilará samba con todo el soporte necesario (gssapi, ldap, kerberos) y luego editará nsswitch.conf de esta manera
fuente
Hola
Esta es una pequeña actualización sobre el uso de sssd v1.11.7
Si está utilizando el "id_provider = ad" y ve el siguiente error en el archivo de registro sssd:
Puede usar el siguiente procedimiento para resolver este problema y hacer que la integración de AD funcione correctamente. Ahora compile sssd v1.11.7 con soporte Samba, se necesita compilar desde src sssd para que esté vinculado con libsasl2
fuente
Aquí está mi guía sobre la integración de AD a través de SSSD con estas versiones de FreeBSD, en el momento de escribir este artículo (6/2017)
Instalación (y los divertidos problemas de empaque y dependencia)
/usr/bin
y el otro dentro/usr/local/bin
. Como ninguno de los archivos del sistema base parece estar en un paquete, no puede simplemente eliminar las cosas de Heimdal KRB. Algo a tener en cuenta.Dependencias directas de los diversos paquetes (deps interesantes en negrita, deps en conflicto en negrita cursiva):
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
Dependencias inversas de los diversos paquetes:
net/openldap24-sasl-client: sysutils/msktutil
net/openldap24-sasl-client: net/nss-pam-ldapd-sasl
net/openldap24-sasl-client: net-mgmt/adcli
sssd
, requiere el Kerberos MIT, a pesar de que tenemos a Heimdal como paquete baseadcli
deseosopenldap-sasl-client
, pero otros paquetes (incluyendo sub-dependencias desssd
) Tirandoopenldap-client
, que es exclusión mutua con el cliente sasl (por la razón que sea tonto). Esto hace que la instalación sea un poco difícil, incluso con un conjunto mínimo de paquetes binarios.Al momento de escribir esto, el paquete binario para SSSD para FreeBSD no incluye soporte AD en SSSD
SMB
adcli
existe, pero al momento de escribir esto, no funciona.GSSAPI_MIT
cyrus-sasl-gssapi
es obligatorio, pero la versión binaria pkg no funciona y tiene problemas de dependencia extraños que hacen que elimine SSSD.GSSAPI_MIT
openldap-sasl-client
es necesario para la funcionalidad, pero SSSD quiere incorporar la versión no SASL de openldap.openldap-sasl-client
con laGSSAPI
opción seleccionada (make config
) en los puertos.pkg remove –f openldap-client
openldap-client
sin realizar ningún movimiento automático de ningún otro paquete (como SSSD) y permitirá la instalación de la versión SASLopenldap-sasl-client
pkg remove –f sssd
(Opcional) Una vez que todo esté funcionando y verificado, puede usarlo
pkg create
para crear paquetes binarios de los cuatro paquetes con las opciones adecuadas habilitadas y usarlas en lugar de construirlas en puertos en cada sistema. La instalación de binarios sigue un patrón similar al proceso de compilación de puertos:pkg install sssd-1.11.7_8.txz
pkg add
los otros paquetes (no instalar, agregar), guardando el paquete openldap para el final.openldap-sasl-client
hacer unpkg remove –f openldap-client
pkg add openldap-sasl-client-2.4.44.txz
pkg create
de sustituir la dependenciaopenldap-client
con elopenldap-sasl-client
de eliminar la necesidad de hacer esto remove / reinstalación. No he tenido tiempo de mirar para hacer esto.openldap-client
, por lo que también debería corregirlas.Configuración de Kerberos:
/etc/pam.d
archivos que he tenido que modificar para que SSSD funcione con FreeBSD:/etc/pam.d/sshd:
/etc/pam.d/system:
/etc/pam.d/su:
(sangrar)
system.dist
es una copia del/etc/pam.d/system
archivo de stock . Se incluye en el/etc/pam.d/su
archivo anterior para evitar problemas con el comando su.su
agregar cuentas AD como root, ya que una vez que es root,su
no necesita autenticarse y la información de la cuenta se extrae mediante el cambio del servicio de nombres a través de SSSD.sudo
por razones de seguridadksu
y eso funciona para cambiar del usuario A al usuario Bksu
(in/usr/bin
) no tiene SUID configurado por defectoksu
funcione,chmod u+s /usr/bin/ksu
krb5
paquete instalado en/usr/local/bin
) es SUID en la instalación/usr/local/bin
sea anterior/usr/bin
, etc.ksu
le pedirá al usuario la contraseña AD / Kerberos del usuario objetivopasswd
no funcionará para cambiar su contraseña de AD / Kerberos incluso si agregapam_sss.so
al archivo PAM passwd. Elpasswd
binario solo admite el uso local y NISkpasswd
para cambiar su contraseña en los servidores AD / Kerberos.Interruptor de servicio de nombres:
/etc/nsswitch.conf
archivo debe configurarse para usar el servicio sss para passwd y grupos. Ejemplo:group: files sss
passwd: files sss
Unirse a un dominio:
adcli
kinit
antes de usar, lo hace por usted en función de los créditos proporcionados.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
Utilidad Sambanet
utilidad es parte de la suite Samba.smb.conf
archivo de configuración, lo que hace que su uso sea más difícil e inconveniente, especialmente de forma no interactiva.kinit
. Nuevamente, esto es más inconveniente y hace que sea un poco más difícil de usar de manera no interactiva en un script, ya que hay dos pasos en lugar de uno.Consideraciones de SSHD:
/etc/ssh/sshd_config
GSSAPIAuthentication yes
PasswordAuthentication yes
ChallengeResponseAuthentication yes
PasswordAuthentication no
cuando use esta opción./bin/passwd
, que no admite nada más que NIS y el archivo passwd local.GSSAPICleanupCredentials yes
kdestroy
al cerrar sesiónGSSAPIStrictAcceptorCheck no
host/<FQDN>@REALM
para hablar con el KDC, pero a veces se equivoca (por ejemplo, si el nombre de host no coincide con el nombre DNS del servidor SSH). Esta opción permite que SSHD use cualquier entidad principal en el/etc/krb5.keytab
archivo, que incluye el correctohost/<FQDN>@REALM
ssh -K <ip>
funcionen sin solicitar una contraseña (suponiendo que ya haya hecho un 'kinit', por supuesto).fuente