Projet

Général

Profil

Scribe AD » Historique » Version 21

Benjamin Bohard, 10/01/2018 16:32

1 1 Benjamin Bohard
h1. Scribe AD
2 1 Benjamin Bohard
3 18 Emmanuel GARETTE
{{>toc}}
4 18 Emmanuel GARETTE
5 1 Benjamin Bohard
h2. Actions
6 1 Benjamin Bohard
7 2 Benjamin Bohard
h3. Migration du Scribe NT vers Scribe AD
8 1 Benjamin Bohard
9 1 Benjamin Bohard
h4. Procédure classicupgrade
10 3 Benjamin Bohard
11 3 Benjamin Bohard
La procédure classicupgrade nécessite des interventions complémentaires (pouvant être scriptées).
12 3 Benjamin Bohard
13 20 Benjamin Bohard
En partant d’un Scribe fonctionnel instancié avec import de comptes et un poste joint au domaine.
14 3 Benjamin Bohard
15 3 Benjamin Bohard
h5. stopper et désactiver les services de samba en mode NT (smbd, nmbd, winbind),
16 10 Benjamin Bohard
17 3 Benjamin Bohard
<pre>
18 3 Benjamin Bohard
systemctl stop nmbd
19 3 Benjamin Bohard
systemctl stop smbd
20 3 Benjamin Bohard
systemctl stop winbind
21 3 Benjamin Bohard
systemctl disable nmbd
22 3 Benjamin Bohard
systemctl disable smbd
23 3 Benjamin Bohard
systemctl disable winbind
24 3 Benjamin Bohard
</pre>
25 3 Benjamin Bohard
26 3 Benjamin Bohard
h5. installer les outils nécessaires :
27 10 Benjamin Bohard
28 3 Benjamin Bohard
<pre>
29 11 Benjamin Bohard
apt-get install krb5-user ldb-tools
30 3 Benjamin Bohard
</pre>
31 3 Benjamin Bohard
32 3 Benjamin Bohard
h5. patcher nsswitch.conf.default, ldap.conf
33 3 Benjamin Bohard
34 3 Benjamin Bohard
<pre>
35 3 Benjamin Bohard
--- distrib/nsswitch.conf.default	2017-05-15 11:18:44.000000000 +0200
36 3 Benjamin Bohard
+++ modif/nsswitch.conf.default	2018-01-09 15:12:53.260292570 +0100
37 3 Benjamin Bohard
@@ -7,8 +7,8 @@
38 3 Benjamin Bohard
 ########################################################
39 3 Benjamin Bohard
 # /etc/nsswitch.conf
40 3 Benjamin Bohard
 
41 3 Benjamin Bohard
-%set %%active_winbind = %%getVar('activer_winbind', 'non') == 'oui'
42 3 Benjamin Bohard
-%set %%active_ldap =  %%getVar('ldap_nss', 'non') == 'oui'
43 3 Benjamin Bohard
+%set %%active_winbind = True
44 3 Benjamin Bohard
+%set %%active_ldap =  False
45 3 Benjamin Bohard
 
46 3 Benjamin Bohard
 passwd:         compat %slurp
47 3 Benjamin Bohard
 %if %%active_ldap
48 3 Benjamin Bohard
</pre>
49 3 Benjamin Bohard
50 12 Benjamin Bohard
<pre>
51 12 Benjamin Bohard
--- distrib/ldap.conf	2017-04-05 12:25:55.000000000 +0200
52 12 Benjamin Bohard
+++ modif/ldap.conf	2018-01-10 14:39:19.008000000 +0100
53 12 Benjamin Bohard
@@ -13,7 +13,7 @@
54 12 Benjamin Bohard
 
55 12 Benjamin Bohard
 %if %%active_ldap == 'oui'
56 12 Benjamin Bohard
 host %%adresse_ip_ldap
57 12 Benjamin Bohard
-base %%ldap_base_dn
58 12 Benjamin Bohard
+base DC=etb1,DC=lan
59 12 Benjamin Bohard
 port %%ldap_port
60 12 Benjamin Bohard
 timelimit 10
61 12 Benjamin Bohard
 bind_time_limit 10
62 12 Benjamin Bohard
@@ -23,8 +23,8 @@
63 12 Benjamin Bohard
 pam_login_attribute uid
64 12 Benjamin Bohard
 pam_password md5
65 12 Benjamin Bohard
 nss_map_attribute gecos displayName
66 12 Benjamin Bohard
-nss_base_passwd %%ldap_base_dn?sub
67 12 Benjamin Bohard
-nss_base_group %%ldap_base_dn?sub
68 12 Benjamin Bohard
+nss_base_passwd DC=etb1,DC=lan?sub
69 12 Benjamin Bohard
+nss_base_group DC=etb1,DC=lan?sub
70 12 Benjamin Bohard
 #fixe #1809
71 12 Benjamin Bohard
 nss_initgroups_ignoreusers root
72 12 Benjamin Bohard
  %if %%ldap_tls == 'oui'
73 12 Benjamin Bohard
</pre>
74 12 Benjamin Bohard
75 3 Benjamin Bohard
h5. déplacer la configuration samba actuelle dans un répertoire de travail
76 3 Benjamin Bohard
77 3 Benjamin Bohard
<pre>
78 3 Benjamin Bohard
mv /etc/samba/ /etc/samba.PDC/
79 3 Benjamin Bohard
</pre>
80 3 Benjamin Bohard
81 3 Benjamin Bohard
h5. renommer le fichier de configuration smb.conf de ce répertoire de travail,
82 3 Benjamin Bohard
83 3 Benjamin Bohard
<pre>
84 3 Benjamin Bohard
mv /etc/samba.PDC/smb.conf /etc/samba.PDC/smb.PDC.conf
85 3 Benjamin Bohard
</pre>
86 3 Benjamin Bohard
87 3 Benjamin Bohard
h5. copier les bases de données de samba dans un sous-répertoire du répertoire de travail
88 3 Benjamin Bohard
89 3 Benjamin Bohard
<pre>
90 14 Benjamin Bohard
mkdir /etc/samba.PDC/dbdir/
91 13 Benjamin Bohard
cp -p /var/lib/samba/private/secrets.tdb /etc/samba.PDC/dbdir/
92 13 Benjamin Bohard
cp -p /var/lib/samba/private/schannel_store.tdb /etc/samba.PDC/dbdir/
93 13 Benjamin Bohard
cp -p /var/lib/samba/private/passdb.tdb /etc/samba.PDC/dbdir/
94 15 Benjamin Bohard
#cp -p /var/lib/samba/var/lock/gencache_notrans.tdb /etc/samba.PDC/dbdir/
95 15 Benjamin Bohard
cp -p /var/lib/samba/group_mapping.tdb /etc/samba.PDC/dbdir/
96 15 Benjamin Bohard
cp -p /var/lib/samba/account_policy.tdb /etc/samba.PDC/dbdir/
97 1 Benjamin Bohard
</pre>
98 3 Benjamin Bohard
99 8 Benjamin Bohard
h5. lancer la commande samba-tool domain classicupgrade
100 8 Benjamin Bohard
101 1 Benjamin Bohard
<pre>
102 8 Benjamin Bohard
realm=$(CreoleGet nom_domaine_local)
103 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
104 8 Benjamin Bohard
</pre>
105 8 Benjamin Bohard
106 8 Benjamin Bohard
h5. créer le patch smb.conf à partir du nouveau fichier créer par samba-tool
107 8 Benjamin Bohard
108 21 Benjamin Bohard
<pre>
109 21 Benjamin Bohard
[global]
110 21 Benjamin Bohard
  realm = ETB1.LAN
111 21 Benjamin Bohard
  workgroup = DOMPEDAGO
112 21 Benjamin Bohard
  netbios name = SCRIBE
113 21 Benjamin Bohard
114 21 Benjamin Bohard
  # disable netbios legacy protocol, only port 445 !
115 21 Benjamin Bohard
  disable netbios = yes
116 21 Benjamin Bohard
  smb ports = 445
117 21 Benjamin Bohard
118 21 Benjamin Bohard
119 21 Benjamin Bohard
  vfs objects = acl_xattr
120 21 Benjamin Bohard
  map acl inherit = Yes
121 21 Benjamin Bohard
  store dos attributes = Yes
122 21 Benjamin Bohard
  winbind separator = /
123 21 Benjamin Bohard
124 21 Benjamin Bohard
  server role = active directory domain controller
125 21 Benjamin Bohard
  dns forwarder = 192.168.232.2
126 21 Benjamin Bohard
127 21 Benjamin Bohard
  # active TLS (pour LDAPS et la maj des mot de passe !
128 21 Benjamin Bohard
  tls enabled = yes
129 21 Benjamin Bohard
  tls keyfile = /var/lib/samba/private/tls/key.pem
130 21 Benjamin Bohard
  tls certfile = /var/lib/samba/private/tls/cert.pem
131 21 Benjamin Bohard
  tls cafile = /var/lib/samba/private/tls/ca.pem
132 21 Benjamin Bohard
133 21 Benjamin Bohard
[netlogon]
134 21 Benjamin Bohard
  comment = Network Logon Service
135 21 Benjamin Bohard
  path = /home/sysvol/ac-test.fr/scripts
136 21 Benjamin Bohard
  read only = No
137 21 Benjamin Bohard
  guest ok = yes
138 21 Benjamin Bohard
139 21 Benjamin Bohard
[sysvol]
140 21 Benjamin Bohard
  comment = Sysvol Service
141 21 Benjamin Bohard
  path = /home/sysvol
142 21 Benjamin Bohard
  read only = No
143 21 Benjamin Bohard
  guest ok = yes
144 21 Benjamin Bohard
145 21 Benjamin Bohard
[homes]
146 21 Benjamin Bohard
  path = "/home/a/%u"
147 21 Benjamin Bohard
  comment = Home Directories
148 21 Benjamin Bohard
  read only = no
149 21 Benjamin Bohard
  root preexec = /usr/share/eole/sbin/create_adhome.sh "%u" "/home/a/"
150 21 Benjamin Bohard
  invalid users = nobody guest
151 21 Benjamin Bohard
152 21 Benjamin Bohard
</pre>
153 21 Benjamin Bohard
154 8 Benjamin Bohard
h5. stopper et désactiver le service slapd
155 8 Benjamin Bohard
156 8 Benjamin Bohard
<pre>
157 8 Benjamin Bohard
systemctl stop slapd
158 8 Benjamin Bohard
systemctl disable slapd
159 8 Benjamin Bohard
</pre>
160 8 Benjamin Bohard
161 8 Benjamin Bohard
h5. créer le compte reader
162 8 Benjamin Bohard
163 8 Benjamin Bohard
<pre>
164 8 Benjamin Bohard
cat /root/.reader
165 8 Benjamin Bohard
samba-tool user create reader
166 8 Benjamin Bohard
</pre>
167 8 Benjamin Bohard
168 8 Benjamin Bohard
h5. modifier les variables
169 8 Benjamin Bohard
170 8 Benjamin Bohard
Le base DN est maintenant du type DC=etb1,DC=lan.
171 8 Benjamin Bohard
172 8 Benjamin Bohard
Le compte reader est maintenant du type CN=reader,CN=Users,DC=etb1,DC=lan.
173 8 Benjamin Bohard
174 8 Benjamin Bohard
h5. modifier les scripts de posttemplate 00-annuaire, 02-annuaire et 04-fichier
175 8 Benjamin Bohard
176 8 Benjamin Bohard
exit 0 ajouté en tête des fichiers pour ne pas faire les traitements.
177 8 Benjamin Bohard
178 8 Benjamin Bohard
h5. activer et démarrer le service samba-ad-dc
179 8 Benjamin Bohard
180 8 Benjamin Bohard
<pre>
181 8 Benjamin Bohard
systemctl enable samba-ad-dc
182 8 Benjamin Bohard
systemctl start samba-ad-dc
183 8 Benjamin Bohard
</pre>
184 8 Benjamin Bohard
185 8 Benjamin Bohard
h5. reconfigure
186 8 Benjamin Bohard
187 8 Benjamin Bohard
h5. stopper le service nmbd
188 8 Benjamin Bohard
189 8 Benjamin Bohard
Le service nmbd est démarré automatiquement par creole
190 8 Benjamin Bohard
<pre>
191 8 Benjamin Bohard
systemctl stop nmbd
192 3 Benjamin Bohard
</pre>
193 1 Benjamin Bohard
194 10 Benjamin Bohard
h4. Points à traiter
195 10 Benjamin Bohard
196 10 Benjamin Bohard
h5. service nmbd
197 10 Benjamin Bohard
198 10 Benjamin Bohard
Le service nmbd est géré par creole et sa désactivation manuelle n’est pas suffisante
199 10 Benjamin Bohard
200 10 Benjamin Bohard
h5. variables creole
201 10 Benjamin Bohard
202 10 Benjamin Bohard
Les variables concernant l’annuaire sont verrouillées (même après import du fichier de configuration : valeurs par défaut).
203 10 Benjamin Bohard
204 10 Benjamin Bohard
Il n’est pas possible de modifier, hors des patchs, les valeurs pour le base DN, le protocole (ldaps), etc.
205 10 Benjamin Bohard
206 10 Benjamin Bohard
h5. dns
207 10 Benjamin Bohard
208 10 Benjamin Bohard
Un problème subsiste pour le dns, peut-être lié à un problème kerberos
209 10 Benjamin Bohard
210 10 Benjamin Bohard
<pre>
211 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)
212 10 Benjamin Bohard
janv. 10 11:49:15 scribe samba[15840]:   /usr/sbin/samba_dnsupdate: Traceback (most recent call last):
213 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)
214 10 Benjamin Bohard
janv. 10 11:49:15 scribe samba[15840]:   /usr/sbin/samba_dnsupdate:   File "/usr/sbin/samba_dnsupdate", line 621, in <module>
215 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)
216 10 Benjamin Bohard
janv. 10 11:49:15 scribe samba[15840]:   /usr/sbin/samba_dnsupdate:     get_credentials(lp)
217 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)
218 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
219 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)
220 10 Benjamin Bohard
janv. 10 11:49:15 scribe samba[15840]:   /usr/sbin/samba_dnsupdate:     raise e
221 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)
222 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
223 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)
224 10 Benjamin Bohard
janv. 10 11:49:15 scribe samba[15840]:   /usr/sbin/samba_dnsupdate:
225 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)
226 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
227 10 Benjamin Bohard
</pre>
228 10 Benjamin Bohard
229 10 Benjamin Bohard
Un essai de modification de la configuration de kerberos (krb5.conf) a été tenté mais les résultats sont incertains.
230 10 Benjamin Bohard
231 16 Benjamin Bohard
Il est peut-être nécessaire de renseigner un DNS forwarder dans la configuration de samba.
232 16 Benjamin Bohard
233 10 Benjamin Bohard
<pre>
234 10 Benjamin Bohard
[libdefaults]
235 10 Benjamin Bohard
    default_realm = ETB1.LAN
236 10 Benjamin Bohard
    dns_lookup_kdc = true
237 10 Benjamin Bohard
    dns_lookup_realm = true
238 10 Benjamin Bohard
</pre>
239 4 Benjamin Bohard
240 9 Philippe Caseiro
h2. Pistes de travail pour la migration de l'annuaire
241 9 Philippe Caseiro
242 9 Philippe Caseiro
Proposition de méthode pour arriver a un Scribe AD en utilisant malgré-tout une
243 9 Philippe Caseiro
partie du travail déjà fait par l'équipe samba dans sa procédure
244 9 Philippe Caseiro
classicupgrade.
245 9 Philippe Caseiro
246 9 Philippe Caseiro
La procédure proprement dite n'est pas suffisante pour nous et l'utilisation
247 9 Philippe Caseiro
brute de l'outil samba non plus, cet outil réalise le provisionning AD et les
248 9 Philippe Caseiro
initialisations des fichiers db, hors pour bien faire nous avons besoin que samba ai
249 9 Philippe Caseiro
connaissance des schemas complémentaires du scribe (radius, eole, ent ...).
250 9 Philippe Caseiro
avant la migration des comptes. Pour lui ajouter les dit schémas il faut que
251 9 Philippe Caseiro
les fichiers db soient initialisées, donc l'utilisation de l'outil est
252 9 Philippe Caseiro
impossible. Par chance il utilise la lib python samaba, ce qui nous ouvre des
253 9 Philippe Caseiro
possibilités. Sans oublié que l'outil samba crée la configuration pour samba
254 9 Philippe Caseiro
a partir de l'ancienne et cette fonctionnalités ne nous ai pas vraiment utile.
255 9 Philippe Caseiro
256 9 Philippe Caseiro
Donc l'idée est de recréer une procédure de migration complête pour nos
257 9 Philippe Caseiro
besoins.
258 9 Philippe Caseiro
259 9 Philippe Caseiro
Il faut donc refaire le provisionning de l'AD ce qui est fait dans Seth donc
260 9 Philippe Caseiro
nous pouvons utiliser cette base de travail
261 9 Philippe Caseiro
262 9 Philippe Caseiro
Migrer les shemas complémentaires actuels au format lisible par samba4.
263 9 Philippe Caseiro
264 9 Philippe Caseiro
Créer un script de migration des comptes qui ajoute les schemas, utilise la
265 9 Philippe Caseiro
lib python samba4 pour migrer les comptes et ensuite mettre à jour les comptes
266 9 Philippe Caseiro
avec les attributs supplémentaires de l'ancien annuaire.
267 17 Emmanuel GARETTE
268 17 Emmanuel GARETTE
269 17 Emmanuel GARETTE
h3. Remplacement du Client Scribe :
270 17 Emmanuel GARETTE
271 17 Emmanuel GARETTE
* application de policies : https://dev-eole.ac-dijon.fr/issues/22666
272 17 Emmanuel GARETTE
273 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.
274 17 Emmanuel GARETTE
275 17 Emmanuel GARETTE
Si on veut générer les règles depuis Gaspacho il va falloir : 
276 17 Emmanuel GARETTE
277 17 Emmanuel GARETTE
# connaitre le format de chaque règle ;
278 17 Emmanuel GARETTE
# créer des parsers pour chaque format ;
279 17 Emmanuel GARETTE
# écrire les fichiers ".gasp" pour que les règles soient prise en compte dans Gaspacho ;
280 17 Emmanuel GARETTE
# créer les GPO suivant les groupes gaspacho + associer les différents critères de sélection (utilisateur/machine) ;
281 17 Emmanuel GARETTE
# lancer les différents parsers quand on applique les règles Gaspacho ;
282 17 Emmanuel GARETTE
283 17 Emmanuel GARETTE
284 17 Emmanuel GARETTE
* exécuter des scripts au démarrage de la machine/connexion des utilisateurs : https://dev-eole.ac-dijon.fr/issues/22665
285 17 Emmanuel GARETTE
286 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).
287 17 Emmanuel GARETTE
288 17 Emmanuel GARETTE
Il faut un mécanisme pour générer les scripts comme c'était fait sous Scribe.
289 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.
290 17 Emmanuel GARETTE
291 19 Emmanuel GARETTE
* mappage des partages : https://dev-eole.ac-dijon.fr/issues/22667
292 19 Emmanuel GARETTE
293 19 Emmanuel GARETTE
C'est un fichier XML par GPO possiblement générable.
294 19 Emmanuel GARETTE
295 19 Emmanuel GARETTE
* pouvoir lancer des commandes à distance : https://dev-eole.ac-dijon.fr/issues/22665
296 19 Emmanuel GARETTE
297 19 Emmanuel GARETTE
Il y a plusieurs pistes possible mais aucune n'ont été testé avec succès.
298 19 Emmanuel GARETTE
299 19 Emmanuel GARETTE
* observation des postes : https://dev-eole.ac-dijon.fr/issues/22664
300 19 Emmanuel GARETTE
301 19 Emmanuel GARETTE
Nécessite l'exécution de commande a distance.