Comment joindre un serveur CentOS à un domaine Active Directory

linux arras
27Fév, 2018

Dans ce tuto je vais vous montrer comment joindre un serveur CentOS à un domaine Active Directory (AD).
Ensuite nous autoriserons l’accès SSH uniquement à un groupe d’utilisateurs du domaine.

Joindre un serveur CentOS à un domaine Active Directory

 

Préparation du serveur CentOS

Premierement nous installons les pré-requis (packages) necessaire pour ajouter le serveur CentOS à l’Active Directory.
yum install sssd realmd oddjob oddjob-mkhomedir adcli samba-common samba-common-tools krb5-workstation openldap-clients policycoreutils-python -y

Le serveur CentOS devra être capable de résoudre le domaine Active Directory afin de le rejoindre avec succès. Dans ce cas, mon serveur DNS dans /etc/resolv.conf est défini sur l’un des serveurs Active Directory hébergeant le domaine example.com que je souhaite rejoindre.

[root@centos7 ~]# cat /etc/resolv.conf
search example.com
nameserver 192.168.1.2

 

Joindre un serveur CentOS à un domaine Active Directory

Maintenant que nous avons tout ce qu’il faut pour rejoindre le domaine, cela peut être fait avec la commande ‘realm join’ comme indiqué ci-dessous. Vous devrez spécifier le nom d’utilisateur d’un utilisateur dans le domaine qui a les privilèges pour joindre un ordinateur au domaine.

[root@centos7 ~]# realm join --user=administrator example.com
Password for administrator:


Une fois que vous avez entré le mot de passe pour votre compte spécifique, les fichiers /etc/sssd/sssd.conf et /etc/krb.conf seront automatiquement configurés. C'est vraiment génial car l'édition manuelle de ces derniers conduit généralement à toutes sortes de problèmes triviaux lors de l'adhésion au domaine. Le fichier /etc/krb5.keytab est également créé au cours de ce processus.
Si cela échoue, vous pouvez ajouter -v à la fin de la commande pour une sortie très verbeuse, ce qui devrait vous donner des informations plus détaillées sur le problème pour un dépannage supplémentaire.
Nous pouvons confirmer que nous sommes dans le domaine (terminologie Linux pour le domaine) en exécutant la commande 'realm list', comme indiqué ci-dessous.


[root@centos7 ~]# realm list
example.com
  type: kerberos
  realm-name: EXAMPLE.COM
  domain-name: example.com
  configured: kerberos-member
  server-software: active-directory
  client-software: sssd
  required-package: oddjob
  required-package: oddjob-mkhomedir
  required-package: sssd
  required-package: adcli
  required-package: samba-common-tools
  login-formats: %U@example.com
  login-policy: allow-realm-logins

 

Une fois que cela s’est terminé avec succès, un objet ordinateur sera créé dans Active Directory dans le conteneur d’ordinateurs par défaut comme indiqué ci-dessous.

Active Directory Users and Computers - Linux Computer Object

Pour garder les choses au point, j’aime le déplacer dans une autre unité organisationnelle (OU) pour les serveurs Linux plutôt que de laisser les choses dans le conteneur des ordinateurs par défaut, mais cela n’a pas vraiment d’importance pour cet exercice.

Maintenant que notre serveur Linux est membre du domaine Active Directory, nous pouvons effectuer quelques tests. Par défaut, si nous voulons spécifier des utilisateurs dans le domaine, nous devons spécifier le nom de domaine. Par exemple, avec la commande ‘id’ ci-dessous, nous ne recevons rien pour ‘administrator’, cependant ‘administrator@example.com’ montre l’UID du compte ainsi que tous les groupes dont le compte est membre dans le domaine Active Directory .

 

[root@centos7 ~]# id administrator
id: administrator: no such user

[root@centos7 ~]# id administrator@example.com
uid=1829600500(administrator@example.com) gid=1829600513(domain users@example.com) groups=1829600513(domain users@example.com),1829600512(domain admins@example.com),1829600572(denied rodc password replication group@example.com),1829600519(enterprise admins@example.com),1829600518(schema admins@example.com),1829600520(group policy creator owners@example.com)


Nous pouvons changer ce comportement en modifiant le fichier /etc/sssd/sssd.conf, les lignes suivantes doivent changer:

use_fully_qualified_names = True
fallback_homedir = /home/%u@%d


Ci-dessous, qui ne nécessite pas le nom de domaine complet (FQDN) à spécifier. Cela modifie également le répertoire utilisateur dans / home d'avoir le nom de domaine complet spécifié après le nom d'utilisateur.


use_fully_qualified_names = False
fallback_homedir = /home/%u


Pour appliquer ces modifications, redémarrez sssd.

[root@centos7 ~]# systemctl restart sssd

 

Maintenant, nous devrions être en mesure de trouver des comptes d’utilisateur sans spécifier le domaine, comme indiqué ci-dessous cela fonctionne maintenant où il ne l’était pas auparavant.

Configuration de SSH

Afin d’autoriser l’acces ssh à certains utilisateurs, nous allons ajouter le nom du groupe dans le fichier de configuration du service SSH.

 

cat >> /etc/ssh/sshd_config <<EOF
#Autorise uniquement les membres du groupe AD admins_linux
AllowGroups admins_linux
EOF

 

Pour appliquer ces modifications, redémarrez ssh.

[root@centos7 ~]# systemctl restart sshd

Quitter le domaine

Si vous souhaitez inverser le processus et vous retirer du domaine, exécutez simplement la commande ‘realm leave’ suivie du nom de domaine, comme indiqué ci-dessous.

 

[root@centos7 ~]# realm leave example.com



Cela se terminera sans autre intervention de l'utilisateur. Il supprime l'objet ordinateur créé dans Active Directory, supprime le fichier keytab et rétablit les fichiers sssd.conf et krb5.conf par défaut.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *