Migrer un domaine Samba3 vers Samba4

Magazine
Marque
GNU/Linux Magazine
Numéro
154
|
Mois de parution
novembre 2012
|
Domaines


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.


Sur le même sujet

Attaques par fabrication de liens dans le SDN

Magazine
Marque
MISC
Numéro
109
|
Mois de parution
mai 2020
|
Domaines
Résumé

Imaginez suivre un itinéraire indiqué par votre GPS en qui vous avez toute confiance, et vous retrouver sur un chemin de terre, seul et vulnérable à une attaque par des personnes malintentionnées… Et cela à cause d’un petit malin qui a réussi à faire croire à l’algorithme de votre GPS que cette route était le moyen le plus rapide de rejoindre votre destination ! C’est le sort que nous réserve cet article, avec dans le rôle du GPS un contrôleur SDN (ONOS) et un ensemble de switchs OpenFlow ; et dans le rôle du méchant deux machines disposant de la librairie SCAPY dans leur boite à outils.

Comment bien choisir son prestataire d’hébergement ?

Magazine
Marque
Linux Pratique
Numéro
119
|
Mois de parution
mai 2020
|
Domaines
Résumé

Avoir son propre serveur, sa propre production, ses propres baies… Bien souvent, cela est juste nécessaire pour la continuité de service et c’est un des métiers clés de l’informatique contemporaine. Sauf que voilà, posséder sa baie à la maison ou dans l’entreprise n’est plus depuis longtemps la meilleure façon de faire. Et la mode des clouds (du « nuagique » en français) nous a même expliqué que tout cela était dépassé, has been, remisé aux poubelles de l’Histoire. Mais alors, quand on a besoin de ses propres serveurs (et pas de services clés en main) et de continuité de services, comment fait-on ? Allons voir ensemble ce que recouvre la notion d’hébergement.

9P, le protocole parfait pour l’IoT

Magazine
Marque
MISC
Numéro
109
|
Mois de parution
mai 2020
|
Domaines
Résumé

Plutôt que de faire passer du JSON sur la couche HTTP, faisons un saut dans le passé pour voir à quoi le futur pourrait ressembler. Développé à partir de la fin des années 80 à Bell Labs, le système d’exploitation Plan 9 utilise le protocole 9P pour rendre le réseau cohérent, sûr et transparent, trois caractéristiques qui manquent à l’IoT...

« Certifier » son serveur mail

Magazine
Marque
Linux Pratique
Numéro
118
|
Mois de parution
mars 2020
|
Domaines
Résumé

Avoir son propre serveur de mails bien à soi est le rêve de beaucoup d’utilisateurs GNU/Linux. Cependant, depuis quelque temps, les principaux acteurs du net exigent que nous montrions patte blanche avant de transférer ou d'accepter nos courriels. Voyons donc comment faire.

Maîtriser la sécurité de son accès Internet avec OpenWRT

Magazine
Marque
Linux Pratique
Numéro
117
|
Mois de parution
janvier 2020
|
Domaines
Résumé

Nous allons voir dans cet article comment installer le système GNU/Linux embarqué de type OpenWRT. OpenWRT est un système GNU/Linux pour les matériels embarqués et pour les matériels de types routeurs et box. Il constitue donc la part essentielle pour se libérer des GAFA. C’est un système léger, rapide et performant pour administrer et contrôler son accès Internet. Ce système est optimisé pour la gestion des ressources et supporte de nombreux routeurs.

WireGuard, le VPN simple et efficace

Magazine
Marque
Linux Pratique
Numéro
116
|
Mois de parution
novembre 2019
|
Domaines
Résumé

Les logiciels de sécurité peuvent être complexes à comprendre et lourds à mettre en œuvre. Cela peut nous freiner dans l’usage et le déploiement d'architectures sécurisées. Mais le logiciel WireGuard veut nous réconcilier avec les solutions de sécurité. Il a pour but de créer un accès VPN performant entre deux machines et ne propose que peu de choix de configuration. En effet, son développeur, Jason A. Donenfeld a pris le parti de n'implémenter qu'un jeu restreint de protocoles cryptographiques, tous à l'état de l'art, et de ne fournir à l'utilisateur qu'une simple interface réseau. Ces choix permettent de masquer beaucoup de la complexité sous-jacente du VPN derrière cette abstraction. Et en plus de cette simplicité de configuration, WireGuard affirme aussi apporter un haut niveau de performance. Je vous propose de vérifier ensemble si cette promesse est bien tenue !

Par le même auteur

Développez vos photos numériques avec darktable

Magazine
Marque
Linux Pratique
Numéro
117
|
Mois de parution
janvier 2020
|
Domaines
Résumé

Après une séance photo, il faut travailler et développer un nombre important d’images avec des outils dédiés à la photo. Dans ce domaine, un outil comme GIMP est inadapté. Je vous propose de voir comment darktable peut résoudre tous vos besoins pour gérer un vrai workflow dans le développement des photos numériques.

Introduction aux déploiements et configurations automatisés avec Puppet

Magazine
Marque
Linux Pratique
Numéro
115
|
Mois de parution
septembre 2019
|
Domaines
Résumé

Dans chaque infrastructure sérieuse, cela demande un temps conséquent pour maintenir le paramétrage des systèmes lorsque cela est réalisé manuellement. En outre, ces opérations manuelles peuvent être à l'origine d’erreurs ou de divergences dans les configurations et cela pose des difficultés lorsque des ajustements de configuration ou des déploiements doivent être réalisés rapidement sur un parc de machines. Puppet est là pour vous faciliter la vie dans ces situations.

Infrastructure As Code sous AWS avec Terraform

Magazine
Marque
GNU/Linux Magazine
Numéro
216
|
Mois de parution
juin 2018
|
Résumé
Dans cet article, je vous propose de plonger au cœur de Terraform, outil permettant d’automatiser le déploiement d’infrastructures complètes sur des plateformes IaaS avec un langage de description simple et flexible.

Haute Disponibilité et répartition de charge avec KeepAlived !

Magazine
Marque
GNU/Linux Magazine
Numéro
163
|
Mois de parution
septembre 2013
|
Domaines
Résumé
Keepalived c'est un peu comme le miel, au début ça colle aux doigts et après on s'aperçoit que son parfum sucré est drôlement agréable. Je vais donc aborder les fondements de la haute disponibilité de services réseaux au niveau kernel pour arriver à une solution entièrement pilotée.