Projet

Général

Profil

Scribe AD » Historique » Version 25

Philippe Caseiro, 11/01/2018 16:19

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