Authentification des postes Linux à un Samba4 ou un AD avec SSSD/Kerberos
Le but
Cela vous permet d’utiliser des comptes réseaux pour vous authentifier aux Linux.
Cela évite les comptes locaux qui sont compliqués à gérer et jamais à jour au niveau des autorisations et des mots de passe.
Pré-requis
Vous devez avoir un domaine qui propose la méthode d’authentification Kerberos, donc Samba4 ou AD.
SSSD peut aussi s’authentifier sur du LDAP mais Kerberos est une méthode plus robuste et permettant un SSO.
Vous ne devez pas avoir une autre méthode d’authentification en parallèle : NSCD, NSLCD et cie.
apt -y remove --purge libnss-ldapd libpam-ldapd nslcd nscd
apt -y autoremove --purge
apt -y update
apt -y dist-upgrade
Installation
Installer les paquets nécessaires et joindre la machine au domaine avec un compte d’administration
apt -y install realmd sssd adcli samba-common ntpdate ntp packagekit sssd-tools krb5-user
realm join --user=moncompteadmin mondomaine.fr
Problèmes connus
-
La jonction au domaine ne se fait pas bien (messages comme “Failed to read keytab [default]: Aucun fichier ou dossier de ce type”).
- Sortir la machine du domaine
- Re-rentrer la machine dans le domaine
- Réécrire le fichier sssd.conf
-
Debian 8 : Pas de paquet oddjob oddjob-mkhomedir, ces paquets ne sont pas utiles, pam-mkhomedir fera le job.
Configuration
System Security Services
Editer le fichier /etc/sssd/sssd.conf :
[sssd]
domains = mondomaine.fr
config_file_version = 2
services = nss, pam
[domain/mondomaine.fr]
ad_domain = mondomaine.fr
krb5_realm = MONDOMAINE.FR
enumerate = false
realmd_tags = manages-system joined-with-samba
cache_credentials = True
id_provider = ad
krb5_store_password_if_offline = True
default_shell = /bin/bash
ldap_id_mapping = False
use_fully_qualified_names = False
fallback_homedir = /home/%u
access_provider = ad
auth_provider = ad
override_shell= /bin/bash
override_homedir = /home/%u
ad_gpo_access_control = disabled
Modifier les droits :
chmod 600 /etc/sssd/sssd.conf
Kerberos
Éditer le fichier /etc/krb5.conf :
[libdefaults]
default_realm = MONDOMAINE.FR
clockskew = 3600
dns_lookup_kdc = false
dns_lookup_realm=false
[realms]
MONDOMAINE.FR = {
kdc = IP.DU.SRV.AD1
kdc = IP.DU.SRV.AD2
kdc = IP.DU.SRV.AD3
}
[domain_realms]
.mondomaine.fr = MONDOMAINE.FR
mondomaine.fr = MONDOMAINE.FR
NS Switch
Vérifier le fichier /etc/nsswitch.conf :
passwd: compat sss
group: compat sss
shadow: compat sss
hosts: files dns
networks: files
protocols: db files
services: db files sss
ethers: db files
rpc: db files
netgroup: files sss
sudoers: files sss
PAM
echo "session required pam_mkhomedir.so skel=/etc/skel umask=0077" >> /etc/pam.d/common-session
Sudo
Avec la commande … visudo
… ajouter les groupes des administrateurs, typiquement “domain admins” :
"%domain admins" ALL=(ALL:ALL) ALL
Tests
Redémarrer SSSD et tester :
rm -f /var/lib/sss/db/cache_mondomaine.fr.ld
service sssd restart
id moncompteadmin
su - moncompteadmin
moncompteadmin@SERVER:~$ sudo -i