¿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?
¿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?
Respuestas:
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:
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.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/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.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 = SERVER-HOSTNAME$@EXAMPLE.COM
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!
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/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
deseos 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
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 la GSSAPI
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 dependencia openldap-client
con el openldap-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:
[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.d
archivos 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.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 B
ksu
(in /usr/bin
) no tiene SUID configurado por defecto
ksu
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 agrega pam_sss.so
al archivo PAM passwd. El passwd
binario solo admite el uso local y NIS kpasswd
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).