¿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 sssdcon 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 sssdcon 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 sssdversió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, sssdno puede manejar este caso.
Entonces, en la versión real de sssdusted, 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.confcon 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.confcon 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.confpara 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.confpara 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 PAMreinos 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/biny 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-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/ldbDependencias inversas de los diversos paquetes:
net/openldap24-sasl-client: sysutils/msktutilnet/openldap24-sasl-client: net/nss-pam-ldapd-saslnet/openldap24-sasl-client: net-mgmt/adclisssd, requiere el Kerberos MIT, a pesar de que tenemos a Heimdal como paquete baseadclideseosopenldap-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
SMBadcliexiste, pero al momento de escribir esto, no funciona.GSSAPI_MITcyrus-sasl-gssapies obligatorio, pero la versión binaria pkg no funciona y tiene problemas de dependencia extraños que hacen que elimine SSSD.GSSAPI_MITopenldap-sasl-clientes necesario para la funcionalidad, pero SSSD quiere incorporar la versión no SASL de openldap.openldap-sasl-clientcon laGSSAPIopción seleccionada (make config) en los puertos.pkg remove –f openldap-clientopenldap-clientsin realizar ningún movimiento automático de ningún otro paquete (como SSSD) y permitirá la instalación de la versión SASLopenldap-sasl-clientpkg remove –f sssd(Opcional) Una vez que todo esté funcionando y verificado, puede usarlo
pkg createpara 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.txzpkg addlos otros paquetes (no instalar, agregar), guardando el paquete openldap para el final.openldap-sasl-clienthacer unpkg remove –f openldap-clientpkg add openldap-sasl-client-2.4.44.txzpkg createde sustituir la dependenciaopenldap-clientcon elopenldap-sasl-clientde 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:
[libdefaults] default_realm = MYDOMAIN.NET reenviable = verdadero # Normalmente todo lo que necesita en un entorno AD, ya que DNS SRV registra # identificará los servidores / servicios AD / KRB. Comenta si # desea apuntar manualmente a su servidor AD dns_lookup_kdc = verdadero [reinos] MYDOMAIN.NET = { # Si está apuntando manualmente a un servidor AD diferente al que está en DNS # admin_server = adserver.mydomain.net # kdc = adserver.mydomain.net } [dominio_dominio] mydomain.net = MYDOMAIN.NET .midominio.net = MYDOMAIN.NET/etc/pam.darchivos 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.distes una copia del/etc/pam.d/systemarchivo de stock . Se incluye en el/etc/pam.d/suarchivo anterior para evitar problemas con el comando su.suagregar cuentas AD como root, ya que una vez que es root,suno necesita autenticarse y la información de la cuenta se extrae mediante el cambio del servicio de nombres a través de SSSD.sudopor razones de seguridadksuy eso funciona para cambiar del usuario A al usuario Bksu(in/usr/bin) no tiene SUID configurado por defectoksufuncione,chmod u+s /usr/bin/ksukrb5paquete instalado en/usr/local/bin) es SUID en la instalación/usr/local/binsea anterior/usr/bin, etc.ksule pedirá al usuario la contraseña AD / Kerberos del usuario objetivopasswdno funcionará para cambiar su contraseña de AD / Kerberos incluso si agregapam_sss.soal archivo PAM passwd. Elpasswdbinario solo admite el uso local y NISkpasswdpara cambiar su contraseña en los servidores AD / Kerberos.Interruptor de servicio de nombres:
/etc/nsswitch.confarchivo debe configurarse para usar el servicio sss para passwd y grupos. Ejemplo:group: files ssspasswd: files sssUnirse a un dominio:
adclikinitantes de usar, lo hace por usted en función de los créditos proporcionados.adcli join -D mydomain.net -U Administrator--show-details –vadcli join –H adclient.mydomain.net -D mydomain.net -U Administrator --show-details -vnetUtilidad Sambanetutilidad es parte de la suite Samba.smb.confarchivo 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_configGSSAPIAuthentication yesPasswordAuthentication yesChallengeResponseAuthentication yesPasswordAuthentication nocuando use esta opción./bin/passwd, que no admite nada más que NIS y el archivo passwd local.GSSAPICleanupCredentials yeskdestroyal cerrar sesiónGSSAPIStrictAcceptorCheck nohost/<FQDN>@REALMpara 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.keytabarchivo, que incluye el correctohost/<FQDN>@REALMssh -K <ip>funcionen sin solicitar una contraseña (suponiendo que ya haya hecho un 'kinit', por supuesto).fuente