Projet

Général

Profil

Scribe AD » Historique » Version 17

Emmanuel GARETTE, 10/01/2018 16:07

1 1 Benjamin Bohard
h1. Scribe AD
2 1 Benjamin Bohard
3 1 Benjamin Bohard
h2. Actions
4 1 Benjamin Bohard
5 2 Benjamin Bohard
h3. Migration du Scribe NT vers Scribe AD
6 1 Benjamin Bohard
7 1 Benjamin Bohard
h4. Procédure classicupgrade
8 3 Benjamin Bohard
9 3 Benjamin Bohard
La procédure classicupgrade nécessite des interventions complémentaires (pouvant être scriptées).
10 3 Benjamin Bohard
11 3 Benjamin Bohard
En partant d’un Scribe fonctionnel instancié avec import de comptes
12 3 Benjamin Bohard
13 3 Benjamin Bohard
h5. stopper et désactiver les services de samba en mode NT (smbd, nmbd, winbind),
14 10 Benjamin Bohard
15 3 Benjamin Bohard
<pre>
16 3 Benjamin Bohard
systemctl stop nmbd
17 3 Benjamin Bohard
systemctl stop smbd
18 3 Benjamin Bohard
systemctl stop winbind
19 3 Benjamin Bohard
systemctl disable nmbd
20 3 Benjamin Bohard
systemctl disable smbd
21 3 Benjamin Bohard
systemctl disable winbind
22 3 Benjamin Bohard
</pre>
23 3 Benjamin Bohard
24 3 Benjamin Bohard
h5. installer les outils nécessaires :
25 10 Benjamin Bohard
26 3 Benjamin Bohard
<pre>
27 11 Benjamin Bohard
apt-get install krb5-user ldb-tools
28 3 Benjamin Bohard
</pre>
29 3 Benjamin Bohard
30 3 Benjamin Bohard
h5. patcher nsswitch.conf.default, ldap.conf
31 3 Benjamin Bohard
32 3 Benjamin Bohard
<pre>
33 3 Benjamin Bohard
--- distrib/nsswitch.conf.default	2017-05-15 11:18:44.000000000 +0200
34 3 Benjamin Bohard
+++ modif/nsswitch.conf.default	2018-01-09 15:12:53.260292570 +0100
35 3 Benjamin Bohard
@@ -7,8 +7,8 @@
36 3 Benjamin Bohard
 ########################################################
37 3 Benjamin Bohard
 # /etc/nsswitch.conf
38 3 Benjamin Bohard
 
39 3 Benjamin Bohard
-%set %%active_winbind = %%getVar('activer_winbind', 'non') == 'oui'
40 3 Benjamin Bohard
-%set %%active_ldap =  %%getVar('ldap_nss', 'non') == 'oui'
41 3 Benjamin Bohard
+%set %%active_winbind = True
42 3 Benjamin Bohard
+%set %%active_ldap =  False
43 3 Benjamin Bohard
 
44 3 Benjamin Bohard
 passwd:         compat %slurp
45 3 Benjamin Bohard
 %if %%active_ldap
46 3 Benjamin Bohard
</pre>
47 3 Benjamin Bohard
48 12 Benjamin Bohard
<pre>
49 12 Benjamin Bohard
--- distrib/ldap.conf	2017-04-05 12:25:55.000000000 +0200
50 12 Benjamin Bohard
+++ modif/ldap.conf	2018-01-10 14:39:19.008000000 +0100
51 12 Benjamin Bohard
@@ -13,7 +13,7 @@
52 12 Benjamin Bohard
 
53 12 Benjamin Bohard
 %if %%active_ldap == 'oui'
54 12 Benjamin Bohard
 host %%adresse_ip_ldap
55 12 Benjamin Bohard
-base %%ldap_base_dn
56 12 Benjamin Bohard
+base DC=etb1,DC=lan
57 12 Benjamin Bohard
 port %%ldap_port
58 12 Benjamin Bohard
 timelimit 10
59 12 Benjamin Bohard
 bind_time_limit 10
60 12 Benjamin Bohard
@@ -23,8 +23,8 @@
61 12 Benjamin Bohard
 pam_login_attribute uid
62 12 Benjamin Bohard
 pam_password md5
63 12 Benjamin Bohard
 nss_map_attribute gecos displayName
64 12 Benjamin Bohard
-nss_base_passwd %%ldap_base_dn?sub
65 12 Benjamin Bohard
-nss_base_group %%ldap_base_dn?sub
66 12 Benjamin Bohard
+nss_base_passwd DC=etb1,DC=lan?sub
67 12 Benjamin Bohard
+nss_base_group DC=etb1,DC=lan?sub
68 12 Benjamin Bohard
 #fixe #1809
69 12 Benjamin Bohard
 nss_initgroups_ignoreusers root
70 12 Benjamin Bohard
  %if %%ldap_tls == 'oui'
71 12 Benjamin Bohard
</pre>
72 12 Benjamin Bohard
73 3 Benjamin Bohard
h5. déplacer la configuration samba actuelle dans un répertoire de travail
74 3 Benjamin Bohard
75 3 Benjamin Bohard
<pre>
76 3 Benjamin Bohard
mv /etc/samba/ /etc/samba.PDC/
77 3 Benjamin Bohard
</pre>
78 3 Benjamin Bohard
79 3 Benjamin Bohard
h5. renommer le fichier de configuration smb.conf de ce répertoire de travail,
80 3 Benjamin Bohard
81 3 Benjamin Bohard
<pre>
82 3 Benjamin Bohard
mv /etc/samba.PDC/smb.conf /etc/samba.PDC/smb.PDC.conf
83 3 Benjamin Bohard
</pre>
84 3 Benjamin Bohard
85 3 Benjamin Bohard
h5. copier les bases de données de samba dans un sous-répertoire du répertoire de travail
86 3 Benjamin Bohard
87 3 Benjamin Bohard
<pre>
88 14 Benjamin Bohard
mkdir /etc/samba.PDC/dbdir/
89 13 Benjamin Bohard
cp -p /var/lib/samba/private/secrets.tdb /etc/samba.PDC/dbdir/
90 13 Benjamin Bohard
cp -p /var/lib/samba/private/schannel_store.tdb /etc/samba.PDC/dbdir/
91 13 Benjamin Bohard
cp -p /var/lib/samba/private/passdb.tdb /etc/samba.PDC/dbdir/
92 15 Benjamin Bohard
#cp -p /var/lib/samba/var/lock/gencache_notrans.tdb /etc/samba.PDC/dbdir/
93 15 Benjamin Bohard
cp -p /var/lib/samba/group_mapping.tdb /etc/samba.PDC/dbdir/
94 15 Benjamin Bohard
cp -p /var/lib/samba/account_policy.tdb /etc/samba.PDC/dbdir/
95 1 Benjamin Bohard
</pre>
96 3 Benjamin Bohard
97 8 Benjamin Bohard
h5. lancer la commande samba-tool domain classicupgrade
98 8 Benjamin Bohard
99 1 Benjamin Bohard
<pre>
100 8 Benjamin Bohard
realm=$(CreoleGet nom_domaine_local)
101 8 Benjamin Bohard
samba-tool domain classicupgrade --dbdir=/etc/samba.PDC/dbdir --use-xattrs=yes --realm=${realm^^} --dns-backend=SAMBA_INTERNAL /etc/samba.PDC/smb.PDC.conf
102 8 Benjamin Bohard
</pre>
103 8 Benjamin Bohard
104 8 Benjamin Bohard
h5. créer le patch smb.conf à partir du nouveau fichier créer par samba-tool
105 8 Benjamin Bohard
106 8 Benjamin Bohard
h5. stopper et désactiver le service slapd
107 8 Benjamin Bohard
108 8 Benjamin Bohard
<pre>
109 8 Benjamin Bohard
systemctl stop slapd
110 8 Benjamin Bohard
systemctl disable slapd
111 8 Benjamin Bohard
</pre>
112 8 Benjamin Bohard
113 8 Benjamin Bohard
h5. créer le compte reader
114 8 Benjamin Bohard
115 8 Benjamin Bohard
<pre>
116 8 Benjamin Bohard
cat /root/.reader
117 8 Benjamin Bohard
samba-tool user create reader
118 8 Benjamin Bohard
</pre>
119 8 Benjamin Bohard
120 8 Benjamin Bohard
h5. modifier les variables
121 8 Benjamin Bohard
122 8 Benjamin Bohard
Le base DN est maintenant du type DC=etb1,DC=lan.
123 8 Benjamin Bohard
124 8 Benjamin Bohard
Le compte reader est maintenant du type CN=reader,CN=Users,DC=etb1,DC=lan.
125 8 Benjamin Bohard
126 8 Benjamin Bohard
h5. modifier les scripts de posttemplate 00-annuaire, 02-annuaire et 04-fichier
127 8 Benjamin Bohard
128 8 Benjamin Bohard
exit 0 ajouté en tête des fichiers pour ne pas faire les traitements.
129 8 Benjamin Bohard
130 8 Benjamin Bohard
h5. activer et démarrer le service samba-ad-dc
131 8 Benjamin Bohard
132 8 Benjamin Bohard
<pre>
133 8 Benjamin Bohard
systemctl enable samba-ad-dc
134 8 Benjamin Bohard
systemctl start samba-ad-dc
135 8 Benjamin Bohard
</pre>
136 8 Benjamin Bohard
137 8 Benjamin Bohard
h5. reconfigure
138 8 Benjamin Bohard
139 8 Benjamin Bohard
h5. stopper le service nmbd
140 8 Benjamin Bohard
141 8 Benjamin Bohard
Le service nmbd est démarré automatiquement par creole
142 8 Benjamin Bohard
<pre>
143 8 Benjamin Bohard
systemctl stop nmbd
144 3 Benjamin Bohard
</pre>
145 1 Benjamin Bohard
146 10 Benjamin Bohard
h4. Points à traiter
147 10 Benjamin Bohard
148 10 Benjamin Bohard
h5. service nmbd
149 10 Benjamin Bohard
150 10 Benjamin Bohard
Le service nmbd est géré par creole et sa désactivation manuelle n’est pas suffisante
151 10 Benjamin Bohard
152 10 Benjamin Bohard
h5. variables creole
153 10 Benjamin Bohard
154 10 Benjamin Bohard
Les variables concernant l’annuaire sont verrouillées (même après import du fichier de configuration : valeurs par défaut).
155 10 Benjamin Bohard
156 10 Benjamin Bohard
Il n’est pas possible de modifier, hors des patchs, les valeurs pour le base DN, le protocole (ldaps), etc.
157 10 Benjamin Bohard
158 10 Benjamin Bohard
h5. dns
159 10 Benjamin Bohard
160 10 Benjamin Bohard
Un problème subsiste pour le dns, peut-être lié à un problème kerberos
161 10 Benjamin Bohard
162 10 Benjamin Bohard
<pre>
163 10 Benjamin Bohard
janv. 10 11:49:15 scribe samba[15840]: [2018/01/10 11:49:15.837313,  0] ../lib/util/util_runcmd.c:328(samba_runcmd_io_handler)
164 10 Benjamin Bohard
janv. 10 11:49:15 scribe samba[15840]:   /usr/sbin/samba_dnsupdate: Traceback (most recent call last):
165 10 Benjamin Bohard
janv. 10 11:49:15 scribe samba[15840]: [2018/01/10 11:49:15.837535,  0] ../lib/util/util_runcmd.c:328(samba_runcmd_io_handler)
166 10 Benjamin Bohard
janv. 10 11:49:15 scribe samba[15840]:   /usr/sbin/samba_dnsupdate:   File "/usr/sbin/samba_dnsupdate", line 621, in <module>
167 10 Benjamin Bohard
janv. 10 11:49:15 scribe samba[15840]: [2018/01/10 11:49:15.837579,  0] ../lib/util/util_runcmd.c:328(samba_runcmd_io_handler)
168 10 Benjamin Bohard
janv. 10 11:49:15 scribe samba[15840]:   /usr/sbin/samba_dnsupdate:     get_credentials(lp)
169 10 Benjamin Bohard
janv. 10 11:49:15 scribe samba[15840]: [2018/01/10 11:49:15.837630,  0] ../lib/util/util_runcmd.c:328(samba_runcmd_io_handler)
170 10 Benjamin Bohard
janv. 10 11:49:15 scribe samba[15840]:   /usr/sbin/samba_dnsupdate:   File "/usr/sbin/samba_dnsupdate", line 125, in get_credentials
171 10 Benjamin Bohard
janv. 10 11:49:15 scribe samba[15840]: [2018/01/10 11:49:15.837691,  0] ../lib/util/util_runcmd.c:328(samba_runcmd_io_handler)
172 10 Benjamin Bohard
janv. 10 11:49:15 scribe samba[15840]:   /usr/sbin/samba_dnsupdate:     raise e
173 10 Benjamin Bohard
janv. 10 11:49:15 scribe samba[15840]: [2018/01/10 11:49:15.837737,  0] ../lib/util/util_runcmd.c:328(samba_runcmd_io_handler)
174 10 Benjamin Bohard
janv. 10 11:49:15 scribe samba[15840]:   /usr/sbin/samba_dnsupdate: RuntimeError: kinit for SCRIBE$@ETB1.LAN failed (Cannot contact any KDC f
175 10 Benjamin Bohard
janv. 10 11:49:15 scribe samba[15840]: [2018/01/10 11:49:15.837778,  0] ../lib/util/util_runcmd.c:328(samba_runcmd_io_handler)
176 10 Benjamin Bohard
janv. 10 11:49:15 scribe samba[15840]:   /usr/sbin/samba_dnsupdate:
177 10 Benjamin Bohard
janv. 10 11:49:15 scribe samba[15840]: [2018/01/10 11:49:15.853639,  0] ../source4/dsdb/dns/dns_update.c:294(dnsupdate_nameupdate_done)
178 10 Benjamin Bohard
janv. 10 11:49:15 scribe samba[15840]:   ../source4/dsdb/dns/dns_update.c:294: Failed DNS update - NT_STATUS_ACCESS_DENIED
179 10 Benjamin Bohard
</pre>
180 10 Benjamin Bohard
181 10 Benjamin Bohard
Un essai de modification de la configuration de kerberos (krb5.conf) a été tenté mais les résultats sont incertains.
182 10 Benjamin Bohard
183 16 Benjamin Bohard
Il est peut-être nécessaire de renseigner un DNS forwarder dans la configuration de samba.
184 16 Benjamin Bohard
185 10 Benjamin Bohard
<pre>
186 10 Benjamin Bohard
[libdefaults]
187 10 Benjamin Bohard
    default_realm = ETB1.LAN
188 10 Benjamin Bohard
    dns_lookup_kdc = true
189 10 Benjamin Bohard
    dns_lookup_realm = true
190 10 Benjamin Bohard
</pre>
191 4 Benjamin Bohard
192 9 Philippe Caseiro
h2. Pistes de travail pour la migration de l'annuaire
193 9 Philippe Caseiro
194 9 Philippe Caseiro
Proposition de méthode pour arriver a un Scribe AD en utilisant malgré-tout une
195 9 Philippe Caseiro
partie du travail déjà fait par l'équipe samba dans sa procédure
196 9 Philippe Caseiro
classicupgrade.
197 9 Philippe Caseiro
198 9 Philippe Caseiro
La procédure proprement dite n'est pas suffisante pour nous et l'utilisation
199 9 Philippe Caseiro
brute de l'outil samba non plus, cet outil réalise le provisionning AD et les
200 9 Philippe Caseiro
initialisations des fichiers db, hors pour bien faire nous avons besoin que samba ai
201 9 Philippe Caseiro
connaissance des schemas complémentaires du scribe (radius, eole, ent ...).
202 9 Philippe Caseiro
avant la migration des comptes. Pour lui ajouter les dit schémas il faut que
203 9 Philippe Caseiro
les fichiers db soient initialisées, donc l'utilisation de l'outil est
204 9 Philippe Caseiro
impossible. Par chance il utilise la lib python samaba, ce qui nous ouvre des
205 9 Philippe Caseiro
possibilités. Sans oublié que l'outil samba crée la configuration pour samba
206 9 Philippe Caseiro
a partir de l'ancienne et cette fonctionnalités ne nous ai pas vraiment utile.
207 9 Philippe Caseiro
208 9 Philippe Caseiro
Donc l'idée est de recréer une procédure de migration complête pour nos
209 9 Philippe Caseiro
besoins.
210 9 Philippe Caseiro
211 9 Philippe Caseiro
Il faut donc refaire le provisionning de l'AD ce qui est fait dans Seth donc
212 9 Philippe Caseiro
nous pouvons utiliser cette base de travail
213 9 Philippe Caseiro
214 9 Philippe Caseiro
Migrer les shemas complémentaires actuels au format lisible par samba4.
215 9 Philippe Caseiro
216 9 Philippe Caseiro
Créer un script de migration des comptes qui ajoute les schemas, utilise la
217 9 Philippe Caseiro
lib python samba4 pour migrer les comptes et ensuite mettre à jour les comptes
218 9 Philippe Caseiro
avec les attributs supplémentaires de l'ancien annuaire.
219 17 Emmanuel GARETTE
220 17 Emmanuel GARETTE
221 17 Emmanuel GARETTE
h3. Remplacement du Client Scribe :
222 17 Emmanuel GARETTE
223 17 Emmanuel GARETTE
* application de policies : https://dev-eole.ac-dijon.fr/issues/22666
224 17 Emmanuel GARETTE
225 17 Emmanuel GARETTE
Le portage des règles Esu en policies AD va être compliqué et aléatoire. Il existe beaucoup de manières d'implémenter ces règles (fichier INI, fichier XML, Register.pol, ...). Il va falloir tester règle par règle comment c'est généré via RSAT.
226 17 Emmanuel GARETTE
227 17 Emmanuel GARETTE
Si on veut générer les règles depuis Gaspacho il va falloir : 
228 17 Emmanuel GARETTE
229 17 Emmanuel GARETTE
# connaitre le format de chaque règle ;
230 17 Emmanuel GARETTE
# créer des parsers pour chaque format ;
231 17 Emmanuel GARETTE
# écrire les fichiers ".gasp" pour que les règles soient prise en compte dans Gaspacho ;
232 17 Emmanuel GARETTE
# créer les GPO suivant les groupes gaspacho + associer les différents critères de sélection (utilisateur/machine) ;
233 17 Emmanuel GARETTE
# lancer les différents parsers quand on applique les règles Gaspacho ;
234 17 Emmanuel GARETTE
235 17 Emmanuel GARETTE
236 17 Emmanuel GARETTE
* exécuter des scripts au démarrage de la machine/connexion des utilisateurs : https://dev-eole.ac-dijon.fr/issues/22665
237 17 Emmanuel GARETTE
238 17 Emmanuel GARETTE
L'exécution de script de démarrage est pris en compte par le système de GPO. Cela peut être des scripts "machines" (au démarrage ou arrêt du serveur) ou "utilisateurs" (à l'ouverture ou fermeture de la session).
239 17 Emmanuel GARETTE
240 17 Emmanuel GARETTE
Il faut un mécanisme pour générer les scripts comme c'était fait sous Scribe.
241 17 Emmanuel GARETTE
De plus nous n'avons pas réussi a lancer un Script diffuser via le partage netlogon. Il va falloir trouver un moyen de les diffuser.
242 17 Emmanuel GARETTE
243 17 Emmanuel GARETTE
*