samba – authentification avec sssd
SSSD permet de faire communiquer une machine linux et un domaine Active Directory. L’AD gère la gestion des identités dans de nombreux parcs informatique. SSSD permet d’authentifier les utilisateurs de linux sur l’Active Directory. Il offre également l’authentification hors-ligne et évite le doublement de compte en cas de non-connexion avec le réseau de l’entreprise.
Pour DEBIAN
Vérifier que vous n’utilisiez pas précédemment nscd, dans le cas contraire, il vous faut les désinstaller
# apt-get remove --purge nscd nslcd nslcd-utils ldap-utils libnss-ldapd libpam-ldapd
Installer sssd
# apt-get autoclean && apt-get autoremove
# apt-get install samba-common-bin sssd-tools sssd libnss-sss libpam-sss realmd packagekit
Intégrer la machine avant Debian 9 au domaine avec les commandes suivantes
# mkdir -p /var/lib/samba/private
# realm join --user=colombet AD.MONDOMAINE.FR
ou intégrer la machine après Debian 9 au domaine avec les commandes suivantes
# realm join --user=colombet AD.MONDOMAINE.FR --install=/
# adcli join --user=colombet AD.MONDOMAINE.FR
Création automatique du homedirectory avec le paquet suivant
# apt-get install oddjob-mkhomedir
# echo "session required pam_mkhomedir.so skel=/etc/skel/ umask=0022" | tee -a /etc/pam.d/common-session
Créer un fichier template de sssd
# vi /etc/sssd/sssd.conf.ori
[sssd]
domains = AD.MONDOMAINE.FR
config_file_version = 2
services = nss, pam
sbus_timeout = 30
[nss]
filter_users = root
filter_groups = root
reconnection_retries = 5
[pam]
reconnection_retries = 5
offline_credentials_expiration = 0
[domain/AD.MONDOMAINE.FR]
ad_domain = AD.MONDOMAINE.FR
krb5_realm = AD.MONDOMAINE.FR
realmd_tags = manages-system joined-with-samba
cache_credentials = True
id_provider = ad
krb5_store_password_if_offline = True
default_shell = /bin/bash
ldap_sasl_authid = NOM_DE_LA_MACHINE$
ldap_id_mapping = True
use_fully_qualified_names = False
fallback_homedir = /home/%u
#access_provider = ad
access_provider = simple
Copier le fichier template sssd
# cp /etc/sssd/sssd.conf.ori /etc/sssd/sssd.conf
# chmod 600 /etc/sssd/sssd.conf*
Activer le service sssd et relancer la machine
# systemctl enable sssd && systemctl start sssd
# pam-auth-update --force
# reboot
Tester la bonne intégration au domaine
# id colombet
uid=1000(colombet) gid=1000(colombet) groups=2000(sudo)
Activer l’utilisateur de faire su sudo via le groupe sudo
# apt-get install libsss-sudo
# echo "%sudo ALL=(ALL:ALL) NOPASSWD:ALL" | sudo tee -a /etc/sudoers.d/domain_admins
# vi /etc/nsswitch.conf
sudoers: files
Pour CENTOS 6
Installer sssd
# yum install realmd sssd oddjob oddjob-mkhomedir adcli samba-common ntpdate ntp
Intégrer la machine au domaine avec les commandes suivantes
# adcli join --user=colombet AD.MONDOMAINE.FR
Password for colombet@AD.MONDOMAINE.FR:
Créer le fichier sssd
# egrep -v '(^#|^$)' /etc/sssd/sssd.conf
[sssd]
domains = AD.MONDOMAINE.FR
config_file_version = 2
reconnection_retries = 3
sbus_timeout = 30
services = nss, pam
[nss]
filter_groups = root
filter_users = root
reconnection_retries = 3
entry_cache_timeout = 300
entry_cache_nowait_percentage = 75
[domain/AD.MONDOMAINE.FR]
ad_domain = AD.MONDOMAINE.FR
krb5_realm = AD.MONDOMAINE.FR
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 = True
use_fully_qualified_names = False
fallback_homedir = /home/%u
access_provider = ad
# chmod 600 /etc/sssd/sssd.conf*
# /etc/init.d/sssd restart
# chkconfig sssd on
# chkconfig sssd --list
sssd 0:arrêt 1:arrêt 2:marche 3:marche 4:marche 5:marche 6:arrêt
# authconfig --enablesssd --enablesssdauth --enablemkhomedir --update
# egrep -v '(^#|^$)' /etc/nsswitch.conf
passwd: files sss
shadow: files sss
group: files sss
hosts: files dns
bootparams: nisplus [NOTFOUND=return] files
ethers: files
netmasks: files
networks: files
protocols: files
rpc: files
services: files sss
netgroup: files sss
sudoers: files sss
publickey: nisplus
automount: files sss
aliases: files nisplus
# ln -s /etc/pam.d/system-auth-local /etc/pam.d/system-auth
# echo "%domain\ admins ALL=(ALL:ALL) NOPASSWD:ALL" | sudo tee -a /etc/sudoers.d/domain_admins
# egrep -v '(^#|^$)' /etc/pam.d/system-auth
auth required pam_env.so
auth sufficient pam_unix.so try_first_pass nullok
auth requisite pam_succeed_if.so uid >= 500 quiet
auth sufficient pam_sss.so use_first_pass
auth required pam_deny.so
account required pam_unix.so broken_shadow
account sufficient pam_localuser.so
account sufficient pam_succeed_if.so uid < 500 quiet
account [default=bad success=ok user_unknown=ignore] pam_sss.so
account required pam_permit.so
password requisite pam_cracklib.so try_first_pass retry=3
password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok
password sufficient pam_sss.so use_authtok
password required pam_deny.so
session optional pam_keyinit.so revoke
session required pam_limits.so
session optional pam_oddjob_mkhomedir.so
session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session required pam_unix.so
session optional pam_sss.so
DEBUG
Sortir du domaine :
# realm leave -U colombet AD.MONDOMAINE.FR
Entrer dans un domaine :
# realm join -U colombet AD.MONDOMAINE.FR
Effacer le cache SSSD
sss_cache -E
service sssd stop
rm -f /var/lib/sss/db/*
rm -f /var/lib/sss/mc/*
service sssd start
getent passwd Administrator@ad.example.com
Erreurs pouvant apparaitre dans vos logs :
Comment faire pour que sudo cesse de vous envoyer des mails inutiles ? Ce problème est causé par le fait que le sudo cherche des directives dans un endroit où il ne les trouve pas : sss. Editer le fichier /etc/nsswitch.conf afin de modifier les valeurs de l’entrée sudoers.
sudoers: files sss
par
sudoers: files
L’erreur suivante apparait, car il manque des paquets debian :
localhost realmd[12345]: couldn't check polkit authorization: GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name org.freedesktop.PolicyKit1 was not provided by any .service files
Pour y remédier, installer les paquets suivants :
# apt-get install libpolkit-agent-1-0 libpolkit-backend-1-0 policykit-1