Projet

Général

Profil

Scribe AD 2srv classic upg » Historique » Version 7

Version 6 (Joël Cuissinat, 09/02/2018 14:33) → Version 7/8 (Joël Cuissinat, 12/02/2018 12:19)

{{>toc}}

h1. Scribe membre d'un AD Seth : tests classicupgrade

Deux essais infructueux :
* Classicupgrade effectué sur Scribe puis copie du résultat su Seth
** plus de compte @Administrator@
** problèmes de DNS, @scribe.dompedago.etb1.lan@ apparaît dans les bases Samba4 comme étant le DC
** Le poste ne peuvent pas se connecter au domaine AD

* Classicupgrade effectué sur Seth:
** Les comptes sont bien présents
** On perd le mot de passe du compte @Administrator@. Il faut le réinitialiser
** Il est quand même nécessaire de sortir les postes du domaine NT pour les joindre au domaine AD

Voici les notes des commandes exécutées.

h2. Préparer le Classicupgrade sur Scribe en prod en mode NT

h3. Backup annuaire de Scribe

<pre>
service slapd stop
tar czvf ldap.backup.tgz /etc/ldap* /var/lib/ldap/
# slapcat -f /etc/ldap/slapd.conf -o ldif-wrap=no -l ldap.backup.ldif
service slapd start
</pre>



h3. Backup Samba de Scribe

<pre>
service smbd stop
service nmbd stop
mkdir /etc/samba.NT
mkdir /var/lib/samba.NT
#cp --preserve /etc/hostname{,.NT}
cp -r --preserve /etc/samba/* /etc/samba.NT/
cp -r --preserve /var/lib/samba/* /var/lib/samba.NT/
rm -f /etc/samba/smb.conf
</pre>



h3. Préparer le classicupgrade

* Copier les fichiers dans le répertoire spécial : /var/lib/samba.PDC

<pre>
mkdir -p /var/lib/samba.PDC/{etc,dbdir}
cp -p /var/lib/samba/private/secrets.tdb /var/lib/samba.PDC/dbdir/
cp -p /var/lib/samba/private/schannel_store.tdb /var/lib/samba.PDC/dbdir/
cp -p /var/lib/samba/private/passdb.tdb /var/lib/samba.PDC/dbdir/
#cp -p /var/lib/samba/var/lock/gencache_notrans.tdb /var/lib/samba.PDC/dbdir/
cp -p /var/lib/samba/group_mapping.tdb /var/lib/samba.PDC/dbdir/
cp -p /var/lib/samba/account_policy.tdb /var/lib/samba.PDC/dbdir/
cp -p /var/lib/samba/wins* /var/lib/samba.PDC/dbdir/
cp /etc/samba/smb.conf /var/lib/samba.PDC/etc/smb.PDC.conf
</pre>

* Renommage du serveur (en "seth") (selon infrastructure cible)

Samba 4.7

<pre>
sed -e "s/\(netbios name = \).*/\1seth/" -e "/logging/,/enable privileges/""s/^/#/" /etc/samba/smb.conf > /var/lib/samba.PDC/etc/smb.PDC.conf
sed -i "s/$(CreoleGet nom_machine)/seth/" /etc/hostname
</pre>

Samba 4.3

<pre>
sed -i "s/\(netbios name = \).*/\1seth/" /var/lib/samba.PDC/etc/smb.PDC.conf
sed -i "s/$(CreoleGet nom_machine)/seth/" /etc/hostname
</pre>

* Sauvegarde des données (facultatif mais peut servir)

<pre>
tar czvf samba.PDC.tgz /var/lib/samba.PDC
</pre>



h3. Adapter les configuration ETB1

* Amon
** Forward de zone DNS : dompedago.etb1.lan 10.1.3.6 (ip de Seth en DMZ)
** Authentification proxy en NTLM/KERBEROS
* Scribe
** domaine local passe à dompedago.etb1.lan
** DHCP -> changer le DNS renvoyé avec l'IP de Seth ainsi que le domaine DNS à renvoyer (celui de Seth)
* Seth
** nom_machine : seth
** domaine local : dompedago.etb1.lan
** dns : ip Amon sur la dmz
** NTP : ip Amon sur la dmz
** Pas de DC additionnel

h2. Option Classicupgrade depuis Scribe

h3. Génération de la configuration Samba AD depuis Scribe

* Exécuter la procédure
<pre>
samba-tool domain classicupgrade --dbdir=/var/lib/samba.PDC/dbdir --use-xattrs=yes --realm=dompedago.etb1.lan --dns-backend=SAMBA_INTERNAL /var/lib/samba.PDC/etc/smb.PDC.conf
</pre>

* Vérifier que la base sam est bien remplie
<pre>
apt-get install ldb-tools
ldbsearch -H /var/lib/samba/private/sam.ldb -S '(objectclass=user)' cn
</pre>

* sauvegarde la conf générée
<pre>
mv /var/lib/samba{,AD}
mv /etc/samba{,AD}
tar czvf samba.AD.tgz /var/lib/sambaAD
</pre>

* Relancer Samba en mode NT
<pre>
mv /etc/hostname{.NT,}
mv /etc/samba{.NT,}
mv /var/lib/samba{.NT,}
service smbd start
service nmbd start
</pre>

h3. Mise en place sur Seth

* Instancier Seth

* Copier l'archive obtenue sur Scribe
<pre>
scp root@scribe.etb1.lan:/root/samba.AD.tgz .
tar xzvf samba.AD.tgz -C /
</pre>

* Arrêter Samba
<pre>
service samba-ad-dc stop
</pre>

* Sauvegarder les bases samba
<pre>
mv /var/lib/samba{,SVG}
</pre>

* Restaurer les bases issues de Scribe
<pre>
mv /var/lib/samba{AD,}
cp /var/lib/sambaSVG/.instance_ok /var/lib/samba/
</pre>

* Reconfigurer Seth

* Ajouter une entrée DNS seth.dompedago.etb1.lan dans le DNS Samba
<pre>
samba-tool dns add 10.1.3.6 dompedago.etb1.lan seth A 10.1.3.6 -U admin
</pre>

h2. Option Classicupgrade depuis Seth

h3. Instancier Seth

Le serveur est opérationnel en tant que DC

h3. Préparer le classicupgrade sur Seth

* Sur Seth instancié, arrêter samba
<pre>
service samba-ad-dc stop
</pre>

* Copier les backup obtenus sur Seth (depuis Seth)
<pre>
scp root@scribe.etb1.lan:~/ldap.backup.tgz .
scp root@scribe.etb1.lan:/root/samba.PDC.tgz .
</pre>

* Installer openldap, restaurer l'annuaire et lancer le service
<pre>
apt-eole install slapd
service slapd stop
tar xzvf ldap.backup.tgz -C /
tar xzvf samba.PDC.tgz -C /
#service slapd start
/usr/sbin/slapd -g openldap -u openldap -f /etc/ldap/slapd.conf
</pre>

* Lancer la procédure classic upgrade :
<pre>
samba-tool domain classicupgrade --dbdir=/var/lib/samba.PDC/dbdir/ --realm=dompedago.etb1.lan --dns-backend=SAMBA_INTERNAL /var/lib/samba.PDC/etc/smb.PDC.conf
</pre>

* Stopper le service slapd, relancer Samba et réinitialiser le mot de passe @Administrator@
pkill slapd
service samba-ad-dc restart
samba-tool user setpassword Administrator
</pre>

h3. Effectuer la procédure d'intégration du serveur Scribe dans le domaine AD de Seth

http://eole.ac-dijon.fr/documentations/2.6/partielles/beta/ModuleSeth/co/eole-AD.html

Il est tout de même nécessaire de sortir les postes du domaine NT pour les joindre au domaine AD

h2. Conclusion

Finalement, dans cette situation, on ne peut pas utiliser la méthode classicupgrade pour éviter l'opération de sortie/jonction au domaine AD à cause du changement de nom du serveur (Scribe->Seth).

On devra se contenter de la procédure avec eole-ad et LSC.

Il est toutefois possible de réinjecter les nt-hash des passwords des comptes de Scribe sur Seth :

* Extraction des Hash sur Scribe
<pre>
pdbedit -L -w | sed -e "/^.*$:/d" |cut -d":" -f 1,4 > hash_passwd
</pre>
* Injection des Hash sur Seth pour chaque USERNAME
<pre>
pdbedit -u USERNAME --set-nt-hash PASSWORD_HASH
</pre>

La jonction des postes sur le nouveau DC pourra se faire à l'aide du script @joinDom.ps1@ présent dans le dépôt GIT seth-ecologie de project:pne-sr en adaptant @joinDom.psd1@.
Ce script pourra être lancé à l'ouverture de session de chaque poste avant la procédure d'intégration du serveur Scribe dans le domaine AD de Seth.

h1. Classic Upgrade sur un Scribe existant

Test réalisé à partir d'un etb1.scribe avec poste 1703 intégré avec joineole.

h2. Préparation

h3. Configuration

* smb_netbios_name="scribe"
* smb_workgroup="dompedago"
* nom_domaine_local="etb1.lan"

=> realm=dompedago.etb1.lan

h3. Dépendances

<pre>
apt-get install krb5-user ldb-tools
</pre>

h2. Réalisation du Classicupgrade

h3. Exécution de la procédure

Mise en application de la procédure décrite ci-dessus (_Option Classicupgrade depuis Scribe_).

NB : Stocker le mot de passe Administrator, affiché lors de la procédure :)

h3. Adaptations

Attention à la configuration DNS :
* modifier le resolv.conf
* ajouter dans /etc/samba/smb.conf
** @dns forwarder = 10.1.3.1@
* les DNS diffusés par le DHCP

Arrêter slapd

Utiliser le fichier kerberos généré par la procédure :
<pre>
cp /var/lib/samba/private/krb5.conf /etc/
</pre>

Vérification possible
<pre>
kinit Administrator@ETB1.lan
</pre>

h3. Résultat

Après upgrade, on s'aperçoit que contrairement à la synchronisation LSC, les SID sont conservés :

<pre>
root@scribe:~# ldbsearch -S 'cn=prenom.eleve107' | grep -i sid
objectSid: S-1-5-21-682346051-3557492774-2305020224-21042
</pre>

<pre>
root@scribe:~# ldapsearch -x 'uid=prenom.eleve107' | grep -i sid
sambaSID: S-1-5-21-682346051-3557492774-2305020224-21042
</pre>

Les anciennes ACL sont fonctionnelles même si l'on constate toujours une différence avec celles ajoutées via Windows :

<pre>
root@scribe:~# getfacl /home/p/prenom.eleve112/perso/test
getfacl : suppression du premier « / » des noms de chemins absolus
# file: home/p/prenom.eleve112/perso/test
# owner: prenom.eleve112
# group: DomainUsers
user::rwx
user:prenom.eleve112:rwx
user:3000008:rwx
group::---
group:DomainUsers:---
group:professeurs:r-x
group:3000008:rwx
mask::rwx
other::---
default:user::rwx
default:user:prenom.eleve112:rwx
default:user:3000008:rwx
default:group::---
default:group:DomainUsers:---
default:group:professeurs:r-x
default:group:3000008:rwx
default:mask::rwx
default:other::---
</pre>