Dans mon travail nous avons intégré tous les postes dans un domaine Active Directory récemment
Mais il restait quelques irréductibles: les quelques postes Linux (Ubuntu principalement)
Je savais qu’il était possible de les lier avec Samba, mais cela me semblait trop lourd pour le peu d’avantage que cela donnait

Mais alors, comment joindre facilement un domaine Active Directory sur Ubuntu?
Pour éviter la lourdeur de la configuration de Samba, j’ai découvert récemment l’outil « PowerBroker Identity Services Open » qui permet de simplifier la connexion au domaine
Via quelques commandes relativement intuitives il est donc possible de joindre le domaine sur un poste Ubuntu, puis de s’identifier avec son compte utilisateur Active Directory

Je vais d’abord introduire cet outil, puis vous expliquez la procédure pas à pas pour reproduire cette manipulation sur votre ordinateur ou celui de votre entreprise, et je terminerai par quelques informations supplémentaires sur l’intérêt de cette manipulation et les imperfections restantes

Présentation de PowerBroker Identity Services Open

J’étais donc à la recherche d’une solution pour améliorer l’administration des postes Linux de mon entreprise, mes critères de recherche étaient:

  • Permettre au minimum aux utilisateurs de s’identifier avec leur compte habituel (jusqu’a présent ils avaient un compte local)
  • L’utilisateur devra pouvoir être administrateur de son poste
  • Permettre au support informatique de disposer d’un compte local, administrateur, pour la maintenance du poste

Après quelques recherches je suis donc tombé sur le dépôt Github suivant, qui semblait permettre de faire tout cela (ou en tout cas la première partie qui est celle qui me posait le plus de problème)

L’outil PowerBroker Identity Services Open indique avoir plusieurs objectifs:

  • Simplifiez le processus de jonction des hôtes non-Microsoft aux domaines Active Directory.
  • Simplifiez la gestion de ces hôtes.
  • Fournir une plate-forme de développement riche pour l’écriture d’applications dans des réseaux hétérogènes.

J’ai donc fait le test et je n’ai pas été déçu, je vous présente la procédure en détail immédiatement

Procédure pas à pas

Voici donc la procédure que j’ai suivi et qui marche parfaitement (peut être qu’il y a d’autres solutions, je ne maîtrise pas encore cet outil):

  • Télécharger le fichier d’installation
    wget https://github.com/BeyondTrust/pbis-open/releases/download/8.7.1/pbis-open-8.7.1.494.linux.x86.deb.sh

    Pensez à mettre à jour le lien de téléchargement en récupérant la dernière version sur cette page

  • Autoriser l’exécution du fichier
    chmod +x chmod +x pbis-open-8.7.1.494.linux.x86_64.deb.sh
  • Lancer l’installation
    ./pbis-open-8.7.1.494.linux.x86_64.deb.sh
  • Joindre le domaine
    /opt/pbis/bin/domainjoin-cli join <DOMAIN.LOCAL> <Login Administrateur>

    Indiquez votre nom de domaine au complet, et l’identifiant de l’administrateur
    Le mot de passe vous sera demandé juste après

  • Un premier redémarrage du poste est nécessaire à cette étape
    Après le redémarrage, reconnectez vous avec le même compte (administrateur local)
  • Entrez ensuite les quatre commandes suivantes pour terminer la configuration
    /opt/pbis/bin/config UserDomainPrefix <DOMAIN.LOCAL>
    /opt/pbis/bin/config AssumeDefaultDomain true
    /opt/pbis/bin/config LoginShellTemplate /bin/bash
    /opt/pbis/bin/config HomeDirTemplate %H/%U
    

    Remplacez DOMAIN.LOCAL par votre nom de domaine complet dans la première ligne
    Puis adaptez si besoin le reste (pas indispensable normalement)

  • Redémarrez à nouveau l’ordinateur, la première partie est terminée

Si vous n’avez pas besoin que l’utilisateur AD soit administrateur du poste, vous pouvez vous arrêtez ici, le login fonctionnera et tout marchera normalement
Dans mon cas je voulais encore donner les droits de sudo à l’utilisateur AD, j’ai donc suivi cette procédure:

  • Connectez vous avec le compte administrateur local
  • Passez en root
    sudo su
  • Donner vous la permission d’écrire sur le fichier (c’est temporaire, peu importe les droits exacts)
    chmod 777 /etc/sudoers
  • Modifier le fichier
    nano /etc/sudoers
  • Ajouter une ligne au format suivant
    DOMAIN\\username    ALL=(ALL) ALL
  • Sauvegarder et quittez
  • Remettez les droits du fichier en place
    chmod 440 /etc/sudoers
  • Redémarrez une dernière fois

Je pense qu’il y a sans doute des moyens plus propres de faire cela, mais les commandes classiques avec usermod par exemple ne fonctionnaient pas (peut être a cause de l’antislash)

Avantages de cette procédure

L’avantage principal de cette procédure est la rapidité de mise en oeuvre
Certes il faut redémarrer le poste 2 ou 3 fois, mais on ne dépasse pas les 15min par poste, donc c’est largement tolérable
En plus contrairement à Windows, cela est « scriptable » donc vous pouvez automatiser une bonne partie du process
Et cela est incomparable avec la complexité de configuration d’un Samba

Je pense que l’outil fait beaucoup plus de choses que cela, je n’ai pas creusé davantage car je n’avais pas besoin de plus, mais au vu de la description sur la page Github, je pense qu’il est possible de faire plus (dites moi dans les commentaires si vous avez trouvez d’autres fonctionnalités sympas)

Limites et problèmes connus

La mise à jour des mots de passe

Pour l’instant le problème principal que j’ai rencontré c’est qu’en cas de changement de mot de passe sur l’AD, la prise en compte du changement n’est pas immédiate
Je pense que ca doit être 4h ou quelque chose comme ca par défaut

J’ai réussi à débloquer la situation avec la commande suivante:

sudo /opt/pbis/bin/ad-cache --delete-all

Et j’ai vu qu’il existait des options de configuration qu’il doit être possible de modifier pour réduire le temps entre les synchros

Ce n’est toujours pas un client Windows

Ensuite évidemment ça n’en fait pas un client Windows pour autant, dans le sens ou vous n’aurez pas tous les avantages de l’Active Directory en suivant cette simple procédure (pas de GPO notamment)

Encore une fois je n’ai pas tout testé, et peut être que j’ai raté ces fonctionnalités, mais dans un monde idéal j’aimerai une solution qui permette par exemple de:

  • Centraliser la gestion des mises à jour Ubuntu via l’AD?
  • Décider de l’installation de nouveaux paquets en amont?
  • Gérer la configuration du poste dans l’AD? (sudo notamment, mais pourquoi pas d’autres configurations du système)

Peut être qu’avec le rapprochement de Microsoft du monde open-source on y arrivera un jour, mais je crois qu’il nous reste encore un peu de temps 🙂

Conclusion

Voila pour cette procédure rapide, j’espère que ca aura pu en dépanner certains
J’ai vraiment apprécié cette solution et je voulais donc vous la partager

Je suis preneur de toute autre solution dans ce sens, donc n’hésitez pas à me laisser un commentaire si vous connaissez d’autres outils ou d’autres manières de faire certaines choses
Je vous tiendrai au courant si je pousse un peu plus le sujet à mon travail et découvre d’autres choses

A lire également