¿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?
¿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?
Respuestas:
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:
username@example.com 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/server-hostname.example.com@EXAMPLE.COM -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 = SERVER-HOSTNAME$@EXAMPLE.COM
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!
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
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
Esto recompilará samba con todo el soporte necesario (gssapi, ldap, kerberos) y luego editará nsswitch.conf de esta manera
passwd: files winbind
group: files winbind
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:
/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]
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
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
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/adcli
sssd, requiere el Kerberos MIT, a pesar de que tenemos a Heimdal como paquete baseadclideseos openldap-sasl-client, pero otros paquetes (incluyendo sub-dependencias de sssd) Tirando openldap-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-gssapi es obligatorio, pero la versión binaria pkg no funciona y tiene problemas de dependencia extraños que hacen que elimine SSSD.
GSSAPI_MITopenldap-sasl-client es necesario para la funcionalidad, pero SSSD quiere incorporar la versión no SASL de openldap.
openldap-sasl-clientcon la GSSAPIopción seleccionada ( make config) en los puertos.pkg remove –f openldap-client
openldap-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-client
pkg 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.txz
pkg add los otros paquetes (no instalar, agregar), guardando el paquete openldap para el final.openldap-sasl-clienthacer unpkg remove –f openldap-client
pkg add openldap-sasl-client-2.4.44.txz
pkg createde sustituir la dependencia openldap-clientcon el openldap-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
[sssd] config_file_version = 2 dominios = MYDOMAIN.NET servicios = nss, pam, pac fallback_homedir = / home /% u [dominio / MYDOMAIN.NET] id_provider = anuncio access_provider = anuncio auth_provider = anuncio chpass_provider = anuncio # use los atributos de AD POSIX, comente si está usando automáticamente # UID y GID. ldap_id_mapping = False cache_credentials = true ad_server = adserver.mydomain.net # si no tiene bash, o lo que sea que esté en el inicio de sesión de la cuenta AD # atributo instalado override_shell = / bin / tcsh
/etc/pam.darchivos que he tenido que modificar para que SSSD funcione con FreeBSD:/etc/pam.d/sshd:
# # # $ FreeBSD: releng / 11.0 / etc / pam.d / sshd 197769 05-10-2009 09: 28: 54Z des $ # # # Configuración de PAM para el servicio "sshd" # # # auth autenticación suficiente pam_opie.so no_warn no_fake_prompts auth requisito pam_opieaccess.so no_warn allow_local #auth suficiente pam_krb5.so no_warn try_first_pass #auth suficiente pam_ssh.so no_warn try_first_pass auth suficiente pam_unix.so no_warn try_first_pass nullok auth suficiente pam_sss.so use_first_pass se requiere autenticación pam_unix.so no_warn use_first_pass # cuenta cuenta requerida pam_nologin.so #account required pam_krb5.so cuenta requerida pam_login_access.so cuenta requerida pam_unix.so cuenta suficiente pam_sss.so # sesión #session opcional pam_ssh.so want_agent sesión opcional pam_sss.so se requiere sesión pam_mkhomedir.so mode = 0700 se requiere sesión pam_permit.so # contraseña # contraseña suficiente pam_krb5.so no_warn try_first_pass # contraseña suficiente pam_unix.so try_first_pass use_authtok nullok contraseña suficiente pam_unix.so try_first_pass use_authtok contraseña suficiente pam_sss.so use_authtok
/etc/pam.d/system:
# # # $ FreeBSD: releng / 11.0 / etc / pam.d / system 197769 05-10-2009 09: 28: 54Z des $ # # # Valores predeterminados de todo el sistema # # # auth autenticación suficiente pam_opie.so no_warn no_fake_prompts auth requisito pam_opieaccess.so no_warn allow_local #auth suficiente pam_krb5.so no_warn try_first_pass #auth suficiente pam_ssh.so no_warn try_first_pass #auth required pam_unix.so no_warn try_first_pass nullok auth suficiente pam_unix.so no_warn try_first_pass auth suficiente pam_sss.so use_first_pass se requiere autenticación pam_deny.so # cuenta #account required pam_krb5.so cuenta requerida pam_login_access.so cuenta requerida pam_unix.so cuenta suficiente pam_sss.so # sesión #session opcional pam_ssh.so want_agent se requiere sesión pam_lastlog.so no_fail sesión opcional pam_sss.so se requiere sesión pam_mkhomedir.so mode = 0700 # contraseña # contraseña suficiente pam_krb5.so no_warn try_first_pass # contraseña requerida pam_unix.so no_warn try_first_pass contraseña suficiente pam_unix.so no_warn try_first_pass nullok use_authtok contraseña suficiente pam_sss.so use_authtok # contraseña requerida pam_deny.so
/etc/pam.d/su:
# # # $ FreeBSD: releng / 11.0 / etc / pam.d / su 219663 15/03/2011 10: 13: 35Z des $ # # # Configuración de PAM para el servicio "su" # # # auth auth suficiente pam_rootok.so no_warn auth suficiente pam_self.so no_warn auth requisito pam_group.so no_warn group = rueda root_only fail_safe ruser auth include system.dist # cuenta cuenta incluye system.dist # sesión se requiere sesión pam_permit.so
(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 B
ksu(in /usr/bin) no tiene SUID configurado por defecto
ksufuncione,chmod u+s /usr/bin/ksukrb5paquete instalado en /usr/local/bin) es SUID en la instalación/usr/local/binsea anterior /usr/bin, etc.ksu le pedirá al usuario la contraseña AD / Kerberos del usuario objetivopasswdno funcionará para cambiar su contraseña de AD / Kerberos incluso si agrega pam_sss.soal archivo PAM passwd. El passwdbinario solo admite el uso local y NIS kpasswdpara 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:
adcli
kinitantes 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 -v
netUtilidad
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_config
GSSAPIAuthentication yes
PasswordAuthentication yes
ChallengeResponseAuthentication yes
PasswordAuthentication nocuando use esta opción./bin/passwd, que no admite nada más que NIS y el archivo passwd local.GSSAPICleanupCredentials yes
kdestroyal cerrar sesiónGSSAPIStrictAcceptorCheck no
host/<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).