Migrer un domaine Samba3 vers Samba4

Magazine
Marque
GNU/Linux Magazine
Numéro
154
Mois de parution
novembre 2012
Spécialité(s)


Résumé
Dans un précédent article, j'avais abordé le fonctionnement de l'Active Directory et sa mise en place avec Samba4. De nombreux domaines sont en place sous Samba3, mais les limites de cette technologie font qu'il devient grand temps pour un certain nombre d'administrateurs de migrer vers un domaine de type Active Directory. Nous allons voir dans cet article ce que propose Samba4 actuellement pour ne pas avoir besoin de mettre en œuvre des serveurs sous Windows.

Body

1. Introduction et processus de migration

Le processus proposé par Samba n'implique pas de devoir recréer le domaine ainsi que l'ensemble des comptes. Bien qu'il soit possible de mettre à jour un serveur existant, il est par contre nettement préférable de passer par un nouveau serveur. Sachant qu'il y a deux types de sysadmins, ceux qui ont fait une boulette et ceux qui ne vont pas tarder à en faire une, autant passer par cette méthode et repousser l'échéance de la prochaine bourde.

Pour la démonstration, je vais partir d'un domaine existant PLANETEXPRESS disposant de quelques comptes utilisateurs actifs. Pour le lecteur curieux qui souhaite reproduire les étapes de migration mais qui n'a pas de serveur samba3 sous la main, je vais très succinctement rappeler la mise en place d'un domaine NT4, sans entrer dans le détail de la configuration ou des partages.

Le futur serveur de son côté est donc une nouvelle installation. Dans le processus de migration du domaine, on ne procède pas à la création d'un nouveau domaine via un samba-tool provision, mais on créé le domaine en aspirant le contenu des bases Samba3 afin de migrer l'ensemble des objets du domaine tout en conservant les identifiants de sécurité (SID).

2. Le domaine NT4

Je vais partir d'un serveur samba3 en version 3.5.6 nommé disons srv-pdc et faire fonctionner une Debian Squeeze, donc stable. La configuration exposée ici n'a pas pour but de rentrer dans le détail du fonctionnement et de la configuration de Samba, aussi je resterai assez succinct.

On va commencer par créer deux groupes dont le nom parle de lui-même quant à leur fonction, puis on associe les groupes Windows génériques à nos comptes Unix :

# groupadd g 514 sambausers

# groupadd -g 515 sambamachines

# net groumap add rid=515 unixgroup=sambamachines ntgroup="Domain Computers"

# net groumap set "Domain Users" sambausers

# net groupmap add rid=514 unixgroup=sambausers ntgroup="Domain Users"

On ajoute au moins un compte à ce domaine et on génère un mot de passe avec un hash NTLM :

# useradd -g sambausers philip.fry && smbpasswd -a philip.fry

Enfin, il faut bien entendu déclarer notre serveur comme étant capable de gérer les authentifications sur le réseau et on le déclare sur les listes d'exploration Netbios. Pour faire court, les lignes utiles à ce niveau se résument à :

[global]

   workgroup = PLANETEXPRESS

   security = user

   domain logons = yes

   os level = 65

   domain master = yes

   local master = yes

   preferred master = yes

Il ne reste plus qu'à redémarrer Samba3 et on peut enfin attaquer les choses sérieuses !

3. Le nouveau serveur Samba4

3.1. Pré-requis :

Le futur serveur nommé srv-ad est sous Debian Testing pour des raisons de compatibilité entre le plugin pour les backend de zones dynamiques pour Bind fourni par Samba4 et la version de Bind de la distribution. Bien entendu, il est possible de compiler la bonne version de Bind pour Debian Testing. Le serveur se prépare de la même manière qu'un nouveau domaine. Le serveur devra donc être maintenu à l'heure par un serveur NTP proprement configuré et les partitions devront être montées avec les attributs user_xattr et acl.

Tout comme pour un nouveau serveur, on va avoir besoin des dépendances suivantes, je vous conseille également d'adapter votre variable d'environnement $PATH avec la valeur ci-dessous :

apt-get -y install build-essential libacl1-dev libattr1-dev \

   libblkid-dev libgnutls-dev libreadline-dev python-dev \

   python-dnspython gdb pkg-config libpopt-dev libldap2-dev \

   bind9utils dnsutils libtool git xsltproc libpam0g-dev \

   attr acl psmisc bind9 ntp libtalloc2 libtalloc-dev

echo "export PATH=$PATH:/usr/local/samba/bin/:/usr/local/samba/sbin/:" >> ~/.bashrc && source ~/.bashrc

Il restera ensuite à récupérer les sources de ldb et samba4 (en beta5 lors de la rédaction de cet article ) depuis ftp.samba.org et à les compiler à l'aide des traditionnels ./configure && make && make install.

3.2 Migration

Tout d'abord, il va donc falloir récupérer la configuration qui nous intéresse, disons dans le répertoire /samba3 préalablement créé.

scp -r root@srv-dc:/var/lib/samba/* /samba3

scp root@srv-dc:/etc/samba/smb.conf /samba3

scp root@srv-dc:/etc/group /samba3/

Ensuite, on peut vampiriser les bases issues de l'installation du domaine Samba3 pour créer le domaine Active Directory. Le domaine NT4 se nomme PLANETEXPRESS, j'ai par convention suffixé le domaine du TLD .local, mais ceci n'est en rien une obligation.

# samba-tool domain classicupgrade --dbdir=/samba3/ --use-xattrs=yes --realm=planetexpress.local /samba3/smb.conf

[...]

Ignoring group 'Domain Users' S-1-5-21-587561313-451766989-2726486068-1000 listed but then not found: Unable to enumerate group members, (-1073741722,No such group)

Ignoring group 'Domain Computers' S-1-5-21-587561313-451766989-2726486068-515 listed but then not found: Unable to enumerate group members, (-1073741722,No such group)

Exporting users

  Skipping wellknown rid=501 (for username=nobody)

Ignoring group memberships of 'hubert.farnsworth' S-1-5-21-587561313-451766989-2726486068-1002: Unable to enumerate group memberships, (-1073741724,No such user)

Ignoring group memberships of 'kif.kroker' S-1-5-21-587561313-451766989-2726486068-1004: Unable to enumerate group memberships, (-1073741724,No such user)

Ignoring group memberships of 'zapp.brannigan' S-1-5-21-587561313-451766989-2726486068-1001: Unable to enumerate group memberships, (-1073741724,No such user)

Ignoring group memberships of 'philip.fry' S-1-5-21-587561313-451766989-2726486068-1003: Unable to enumerate group memberships, (-1073741724,No such user)

Ignoring group memberships of 'turanga.leela' S-1-5-21-587561313-451766989-2726486068-1005: Unable to enumerate group memberships, (-1073741724,No such user)

Ignoring group memberships of 'docteur.zoidberg' S-1-5-21-587561313-451766989-2726486068-1006: Unable to enumerate group memberships, (-1073741724,No such user)

Ignoring group memberships of 'amy.wong' S-1-5-21-587561313-451766989-2726486068-1007: Unable to enumerate group memberships, (-1073741724,No such user)

Ignoring group memberships of 'hermes.conrad' S-1-5-21-587561313-451766989-2726486068-1008: Unable to enumerate group memberships, (-1073741724,No such user)

Ignoring group memberships of 'VM-XP-01$' S-1-5-21-587561313-451766989-2726486068-1010: Unable to enumerate group memberships, (-1073741724,No such user)

[...]

Once the above files are installed, your Samba4 server will be ready to use

Admin password:        u5DDH$O~BbUh8Ix=%2K[bc2TZ>;c

Server Role:           active directory domain controller

Hostname:              srv-ad

NetBIOS Domain:        PLANETEXPRESS

DNS Domain:            planetexpress.local

DOMAIN SID:            S-1-5-21-587561313-451766989-2726486068

[...]

Importing groups

[...]

Importing users

User root has been kept in the directory, it should be removed in favour of the Administrator user

Adding users to groups

Setting password for administrator

Administrator password has been set to password of user 'root'

Si tout va bien, le domaine aura été aspiré de la même façon, avec une série de jolies erreurs qui pourraient servir à effrayer de jeunes enfants. En effet, le serveur a été migré mais pas les groupes attenants, c'est pour cette raison que le fichier /etc/group de srv-pdc a été récupéré. Je vous propose par conséquent le script suivant qui remettra les choses d'aplomb. Une fois ce script exécuté, je vous invite à démarrer Samba en lançant la commande du même nom.

for line in ` cat /samba3/group `

do

        GID=` echo $line | cut -d ':' -f 3 `

        NOM=` echo $line | cut -d ':' -f 1 `

        MEMBRES=` echo $line | cut -d ':' -f 4 `

        # On ignore les comptes systèmes

        if [ $GID -gt 100 ]; then

                grep $NOM /etc/group

                  # Si le groupe n'est pas présent sur le nouveau serveur, alors on l'ajoute

                if [ $? == 1 ]; then

                        echo $line >> /etc/group

                        /usr/local/samba/bin/samba-tool group add $NOM

                        /usr/local/samba/bin/samba-tool group addmembers $NOM $MEMBRES

                fi

        fi

done

On peut désormais vérifier que notre domaine est correctement remonté et que l'on liste bien les utilisateurs et leur appartenance aux groupes :

root@srv-ad:~# samba-tool domain info 192.168.1.231                                                                                                                                                                                            

Forest           : planetexpress.local                                                                                                                                                                                                         

Domain           : planetexpress.local                                                                                                                                                                                                         

Netbios domain   : PLANETEXPRESS                                                                                                                                                                                                               

DC name          : srv-ad.planetexpress.local                                                                                                                                                                                                  

DC netbios name : SRV-AD                                                                                                                                                                                                                      

Server site      : Default-First-Site-Name                                                                                                                                                                                                     

Client site      : Default-First-Site-Name                                                                                                                                                                                                     

root@srv-ad:~# samba-tool group listmembers sambausers

hubert.farnsworth

docteur.zoidberg

hermes.conrad

amy.wong

kif.kroker

philip.fry

turanga.leela

zapp.brannigan

Si tout est en ordre, je vous invite alors à valider la connexion au domaine depuis un poste client Windows. Si l'authentification a fonctionné, le poste doit renvoyer le nom du nouveau serveur. Notez que bien entendu pour que l'authentification fonctionne, le poste client devra être en mesure de résoudre les enregistrements du domaine planetexpress.local, que ce soit au moyen d'un redirecteur DNS pour ce domaine ou bien en indiquant srv-ad comme serveur DNS.

C:\Documents and Settings\amy.wong>echo %LOGONSERVER%

\\SRV-AD

4. Que reste-t-il ensuite ?

Le plus urgent consiste en premier lieu à arrêter les services Samba de l'ancien serveur. Un petit exit 0 au début du script d'init est un choix judicieux car il permet de s'assurer que même en cas de redémarrage de l'ancien serveur, il n'y aura pas les deux serveurs actifs sur le réseau. En effet, le rôle émulateur de contrôleur de domaine de type NT4 est géré par un serveur unique sur l'AD et un seul serveur de ce type doit être présent sur un réseau. De plus, les bases doivent rester cohérentes et donc un seul serveur doit gérer le domaine à la fois.

Au niveau réseau, si vous utilisez encore du WINS, il est toujours possible de paramétrer le fichier smb.conf pour que ce soit pris en charge par les anciens démons samba3, mais il serait sans doute temps de retirer ces options DHCP si elles sont présentes afin de se débarrasser d'une telle vieillerie. Si vous avez une zone DNS sur l'ancien serveur qui risque d'entrer en conflit, je vous conseille de la migrer également dans Samba4. Il est très facile d'automatiser cela via samba-tool. Par exemple :

samba-tool dns add srv-ad planetexpress.local srv-pdc A 192.168.1.230

Il restera enfin les services de fichiers et d'imprimantes. Bien que le fichier smb.conf ait été transféré dans le répertoire /samba3 avant de lancer la migration des bases, cela n'a eu aucun effet sur les partages. Il faudra donc les réintégrer dans le fichier /usr/local/samba/etc/smb.conf. Bien que je n'aborde ce point qu'en fin d'article, c'est finalement presque le plus critique. C'est celui qui touche directement les utilisateurs. Le nom de serveur ayant changé, il est donc fort souhaitable que les utilisateurs travaillent via des lecteurs réseau mappés à la connexion, la directive logon script paramétrée sur le serveur Samba3 vous sera d'une aide précieuse. Enfin, la migration des données est bien entendu à opérer en amont. Il n'est pas tenable de laisser patienter les utilisateurs le temps que les données arrivent. Je ne saurais donc que trop vous recommander un transfert via rsync -AXLzvp –delete afin d'une part de préserver les propriétés des fichiers et surtout de n'avoir qu'un différentiel à traiter lors de la migration en cas réel.




Article rédigé par

Par le(s) même(s) auteur(s)

Galera, la solution pour des bases de données hautement disponibles

Magazine
Marque
Linux Pratique
Numéro
137
Mois de parution
mai 2023
Spécialité(s)
Résumé

Lorsqu’une application ne peut tolérer d’indisponibilités ou quand il devient nécessaire de fournir de la redondance au service de bases de données, il convient de mettre en place une architecture limitant les risques d’interruption de service. De même, le besoin de performance peut se faire sentir avec la croissance du nombre d’utilisateurs. Galera est une extension pour MariaDB aidant à résoudre ces deux situations.

Gérez votre stockage avec Stratis

Magazine
Marque
Linux Pratique
Numéro
128
Mois de parution
novembre 2021
Spécialité(s)
Résumé

Quand on parle de gestion du stockage local à un administrateur système Linux, il est généralement question de LVM et de filesystem XFS ou ext4. À un niveau plus évolué, on trouvera ZFS qui n'est pas libre ou bien Btrfs qui tarde à tenir ses promesses. Stratis a pour vocation de proposer quelque chose de neuf avec l’existant !

Déployer des environnements de développement avec Vagrant

Magazine
Marque
Linux Pratique
Numéro
127
Mois de parution
septembre 2021
Spécialité(s)
Résumé

Vagrant est un logiciel libre permettant de déployer rapidement des machines virtuelles. C'est un logiciel développé par la société Hashicorp, déjà connue pour d'autres logiciels comme Terraform, Packer ou Vault. Historiquement lié à VirtualBox, Vagrant s'est désormais largement ouvert à d'autres solutions de virtualisation comme Libvirt ou de conteneurisation comme Docker.

Les derniers articles Premiums

Les derniers articles Premium

Quarkus : applications Java pour conteneurs

Magazine
Marque
Contenu Premium
Spécialité(s)
Résumé

Initié par Red Hat, il y a quelques années le projet Quarkus a pris son envol et en est désormais à sa troisième version majeure. Il propose un cadre d’exécution pour une application de Java radicalement différente, où son exécution ultra optimisée en fait un parfait candidat pour le déploiement sur des conteneurs tels que ceux de Docker ou Podman. Quarkus va même encore plus loin, en permettant de transformer l’application Java en un exécutable natif ! Voici une rapide introduction, par la pratique, à cet incroyable framework, qui nous offrira l’opportunité d’illustrer également sa facilité de prise en main.

De la scytale au bit quantique : l’avenir de la cryptographie

Magazine
Marque
Contenu Premium
Spécialité(s)
Résumé

Imaginez un monde où nos données seraient aussi insaisissables que le célèbre chat de Schrödinger : à la fois sécurisées et non sécurisées jusqu'à ce qu'un cryptographe quantique décide d’y jeter un œil. Cet article nous emmène dans les méandres de la cryptographie quantique, où la physique quantique n'est pas seulement une affaire de laboratoires, mais la clé d'un futur numérique très sécurisé. Entre principes quantiques mystérieux, défis techniques, et applications pratiques, nous allons découvrir comment cette technologie s'apprête à encoder nos données dans une dimension où même les meilleurs cryptographes n’y pourraient rien faire.

Les nouvelles menaces liées à l’intelligence artificielle

Magazine
Marque
Contenu Premium
Spécialité(s)
Résumé

Sommes-nous proches de la singularité technologique ? Peu probable. Même si l’intelligence artificielle a fait un bond ces dernières années (elle est étudiée depuis des dizaines d’années), nous sommes loin d’en perdre le contrôle. Et pourtant, une partie de l’utilisation de l’intelligence artificielle échappe aux analystes. Eh oui ! Comme tout système, elle est utilisée par des acteurs malveillants essayant d’en tirer profit pécuniairement. Cet article met en exergue quelques-unes des applications de l’intelligence artificielle par des acteurs malveillants et décrit succinctement comment parer à leurs attaques.

Les listes de lecture

8 article(s) - ajoutée le 01/07/2020
Découvrez notre sélection d'articles pour faire vos premiers pas avec les conteneurs, apprendre à les configurer et les utiliser au quotidien.
11 article(s) - ajoutée le 02/07/2020
Si vous recherchez quels sont les outils du DevOps et comment les utiliser, cette liste est faite pour vous.
8 article(s) - ajoutée le 02/07/2020
Il est essentiel d'effectuer des sauvegardes régulières de son travail pour éviter de perdre toutes ses données bêtement. De nombreux outils sont disponibles pour nous assister dans cette tâche.
Voir les 58 listes de lecture

Abonnez-vous maintenant

et profitez de tous les contenus en illimité

Je découvre les offres

Déjà abonné ? Connectez-vous