Intégration d'un parc de machines Linux à un domaine Active Directory

3 minutes read

Linux sur WindowsDans un monde professionnel où les environnements informatiques sont de plus en plus hétérogènes, il est nécessaire de pouvoir centraliser les informations la gestion des comptes ainsi que les droits associés. Alors que la documentation d'intégration des Linux (ou Mac) à un annuaire LDAP est très documentée sur internet, les guides pour l'intégration à un Active Directory est quasi absente. Elle est pourtant de plus en plus requise ... et facile ! Des comptes unifiés pour tous les OS. Une gestion des comptes fines et centralisés est alors en place. Un sudo centralisé sur l'Active Directory implique un fichier /etc/sudoers obsolète.

Avant propos

Pour la suite différents points sont supposés acquis ou en place. Vous disposez d'un domaine Active Directory Windows 2008 R2 en place. Ici, nous l'appellerons integration.infra. Notez que les manipulations peuvent se faire à partir des versions Windows 2003 sans problème.

Les Linux sont des debian. Encore une fois, les packages sont disponibles pour toutes les grosses distributions, donc je vous laisse adapter.

Côté résolution DNS, les machines Linux doivent pouvoir déjà résoudre le domaine integration.infra :

dig +short integration.infra
192.168.101.1

Si ce n'est pas le cas, une petite modification du /etc/resolv.conf est à faire en rajoutant l'Active Directory :

echo nameserver 192.168.101.1 >> /etc/resolv.conf

L'intégration à l'Active Directory est simplfiée depuis l'arrivée de Likewise Open (maintenant appelé PowerBroker Identity Services). On supposera nos Linux comme étant en 64 bits.

Dernier point, on suppose avoir un compte ADMIN côté Windows avec les droits de rajout de machines.

Côté Active Directory

Pré-requis

Avant Windows 2008, il est nécessaire de rajouter les attributs Unix à l'Active Directory. Pour cela, il suffit d'installer le package Identity Management for UNIX.

Ensuite, nous devons rajouter un compte ldapquery : en effet, nous voulons centralisé la gestion des droits sudo et ceci ne peut se fait que via le protocole LDAP nativement embarqué dans l'AD. Pour cela, on ouvre Active Directory Users and Computers puis on clique droit sur Users puis New et User. On note le mot de passe.

NB : Il peut être intéressant de travailler en LDAPS plutôt qu'en LDAP. Je vous renvoie aux nombreuses documentations disponibles sur internet (ou à votre administrateur Windows) pour son activation.

Modification de l'Active Directory

Arrive alors la partie tricky : étendre le schéma Active Directory pour y intégrer le sudo. Le fichier de schéma est disponible sur vos Linux dans /usr/share/doc/sudo-ldap/schema.ActiveDirectory.gz mais également ici.

Pensez à l'éditer pour remplacer le dc=X par votre domaine (ici, dc=integration,dc.infra).

En ligne de commande, il ne reste alors qu'à taper :

ldifde -i -e schema.ActiveDirectory.txt -c "CN=Schema,CN=Configuration,DC=integration,DC=infra" #schemaNamingContext

Ceci va vous rajouter tous les attributs sudo (sudoHost, sudoUser, ...) ainsi que la classe sudoRole.

Création des groupes

Concernant sudo, une dernière manipulation est à faire : créer une OU sudoers"(via l'ADSI) puis la "peupler" avec des sudoRole comme vous le feriez avec le fichiers /etc/sudoers :

  • une ligne revient à un rôle
  • un rôle contient un ou plusieurs sudoHost
  • un rôle contient un ou plusieurs sudoUser en corrélation avec les groupes utilisateurs que nous souhaiterions
  • un rôle contient un ou plusieurs sudoOptions
  • un rôle contient un ou plusieurs sudoCommand
  • un rôle contient un ou plusieurs sudoRunAs (ALL à mettre par défault)

On peut alors créer les utilisateurs et groupes dont on aura besoin pour l'usage normal.

Côté Linux

L'ensemble des commandes s'enchaîne rapidement :

wget http://download.beyondtrust.com/PBISO/7.0.4/918/pbis-open-7.0.4.918.linux.x86_64.deb.sh
chmod +x pbis-open-7.0.4.918.linux.x86_64.deb.sh
./pbis-open-7.0.4.918.linux.x86_64.deb.sh
cd /opt/pbis/bin
./domainjoin-cli join integration.infra ADMIN
./domainjoin-cli configure --enable nsswitch
./domainjoin-cli configure --enable pam
./domainjoin-cli configure --enable ssh
./config HomeDirTemplate %H/%D/%U
./config AssumeDefaultDomain true
./config LoginShellTemplate /bin/bash
aptitude install nslcd sudo-ldap
grep bind /etc/nslcd.conf >> /etc/ldap/ldap.conf
echo "sudoers_base ou=sudoers,dc=integration,dc=infra" >> /etc/ldap/ldap.conf
ln -s /etc/ldap/ldap.conf /etc/sudo-ldap.conf

Pour l'installation de nslcd, préciser la bonne URI mais surtout le compte ldapquery.

Pour ceux qui voudrait automatiser l'installation (via Fabric par exemple), le déroulement du script de PBIS requiert l'utilisation d'expect :

aptitude install expect tcl8.5
echo < EOF > /opt/install_pbis.sh
#!/bin/bash
VAR=$(expect -c "
spawn sh pbis-open-7.0.4.918.linux.x86_64.deb.sh --confirm
expect {
Y/n { send \"y\r\"; exp_continue }
Y/n { send \"y\r\"; exp_continue }
yes/no { send \"yes\r\"; exp_continue }
yes/no { send \"yes\r\"; exp_continue }
}
exit
")
EOF
chmod +x /opt/install_pbis.sh

L'installation et le déploiement s'en trouvera grandement faciliter. Petite subtilité à prévoir : l'obligation de reboot les Linux pour une intégration propre de l'authentification Active Directory en local à la machine.

Updated: