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

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