Intégrer des machines Linux dans le domaine Samba-AD

Serveurs CentOS7 sans couche graphique

Note

Sous supposons que la machine CentOS aura été installée en suivant dans les grandes lignes la procédure d’intallation de Centos décrite dans cette documentation.

  • Installer les paquets nécessaires pour CentOS ;

    yum install realmd sssd oddjob oddjob-mkhomedir adcli samba-common samba-common-tools
    
  • Installer les paquets NTP et faire pointer NTP sur un contrôleur de domaine

    yum install ntpdate ntpd
    ntpdate -bu srvads1.mydomain.lan
    

Serveurs Debian / Ubuntu sans couche graphique

Note

Nous supposons que la machine Debian aura été installée en suivant dans les grandes lignes la procédure d’intallation de Debian.

apt-get install realmd sssd oddjob oddjob-mkhomedir adcli samba-common packagekit sssd-tools
  • installer les paquets NTP et faire pointer NTP sur un contrôleur de domaine ;
apt-get install ntpdate ntpd
ntpdate -bu srvads1.mydomain.lan

Joindre la machine Linux au domaine

realm join --user=administrator ad.mydomain.lan
  • modifier /etc/sssd/sssd.conf :

    [sssd]
    domains = mydomain.lan
    config_file_version = 2
    services = nss, pam
    
    [domain/mydomain.lan]
    enumerate = true
    ad_domain = mydomain.lan
    krb5_realm = MYDOMAIN.LAN
    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@%d
    access_provider = ad
    auth_provider = ad
    override_shell= /bin/bash
    override_homedir = /home/homes/%u
    ad_gpo_access_control = disabled
    enumerate = true
    
  • si vous êtes en rfc2307, ajoutez dans la section [domain] :

    ldap_id_mapping = False
    
  • si vous êtes en rid, ajoutez dans la section [domain] :

    ldap_id_mapping = True
    ldap_idmap_autorid_compat = true
    ldap_idmap_range_min = 10000
    
  • enfin, forcer la suppression du mapping existant :

    rm -f /var/lib/sss/db/cache_mydomain.lan.ldb
    

Stations de travail Debian ou Ubuntu avec une couche graphique

  • supprimer les paquets de gestion des couches réseaux :

    Attention

    Si vous êtes connecté en SSH à la machine, vous perdrez la main. Cette opération est à faire depuis le poste à intégrer au domaine.

    apt-get remove network-manager avahi-daemon resolvconf
    
  • configurer /etc/network/interfaces :

    auto lo
    iface lo inet loopback
    
    auto eth0
    iface eth0 inet dhcp
    
  • configurer /etc/hosts :

    127.0.0.1      localhost
    192.168.1.1    myworkstation.mydomain.lan      myworkstation
    
  • configurer /etc/hostname :

    myworkstation.mydomain.lan
    
  • configurer /etc/resolv.conf :

    search mydomain.lan
    nameserver IP_srvads
    
  • vérifier que vous listez bien les utilisateurs et les groupes avec leur uidNumber tels qu’interprété par samba:

    getent passwd
    getent group
    

Après reboot l’authentification doit être fonctionnelle.

Intégration PAM pour client Linux

il faut d’abord faire les étapes ci-dessus pour intégrer la machine au domaine.

Installation du paquet

apt-get install  libpam-krb5

Faire la même chose que pour srvfichiers avec la conf pam en plus :

Edition du fichier /etc/pam.d/common-account

account      [success=2 new_authtok_reqd=done default=ignore]    pam_unix.so
account      required                                            pam_winbind.so
account      requisite                                           pam_deny.so
account      required                                            pam_permit.so

Edition du fichier /etc/pam.d/common-auth

auth  [success=2 default=ignore]           pam_unix.so nullok_secure try_first_pass
auth  [success=1 default=ignore]           pam_winbind.so use_first_pass krb5_auth krb5_ccache_type=FILE
auth  requisite                            pam_deny.so
auth  required                             pam_permit.so

Edition du fichier /etc/pam.d/common-passwd

password [success=2 default=ignore]                       pam_unix.so obscure sha512
password requisite                                        pam_deny.so
password required                                         pam_permit.so

Edition du fichier /etc/pam.d/common-session

session       [default=1]        pam_permit.so
session       requisite          pam_deny.so
session       required           pam_permit.so
session       required           pam_unix.so
session       required           pam_mkhomedir.so silent skel=/etc/skel.empty
session  optional           pam_winbind.so krb5_auth krb5_ccache_type=FILE

Pour utiliser aussi l’authentification kerberos avec le ssh (note : c’est pas du SSO, sinon il faut kerberiser le ssh), vérifier que l’on a bien la ligne suivante dans /etc/ssh/sshd_config

UsePAM yes

Ajouter une CentOS7 au domaine avec NSLCD

https://linux.die.net/man/8/nslcd

Installation :

yum install -y nss-pam-ldapd nscd

Modification du fichier /etc/nslcd.conf

uid nslcd
gid ldap
uri ldap://srvads.mydomain.lan/
base dc=mondomaine, dc=lan
binddn cn=compte_test,ou=service_accounts,ou=monentreprise,dc=mondomaine,dc=lan
bindpw mot_de_passe
pagesize 1000
referrals off
idle_timelimit 800
filter passwd (&(objectClass=user)(!(objectClass=computer))(uidNumber=*)(unixHomeDirectory=*))
map    passwd uid              sAMAccountName
map    passwd homeDirectory    unixHomeDirectory
map    passwd gecos            displayName
filter shadow (&(objectClass=user)(!(objectClass=computer))(uidNumber=*)(unixHomeDirectory=*))
map    shadow uid              sAMAccountName
map    shadow shadowLastChange pwdLastSet
filter group  (objectClass=group)
ssl no
tls_cacertdir /etc/openldap/cacerts

Pour reconfigurer la partie pam:

authconfig-tui

Reconfiguration du nsswitch /etc/nsswitch.conf :

passwd:     files ldap
shadow:     files ldap
group:      files ldap
systemctl restart nslcd

Purge du cache si nécessaire :

nscd --invalidate=passwd
nscd --invalidate=group