Scribe+eole-ad+samba-ad-dc-conteneur » Historique » Version 24
Joël Cuissinat, 01/03/2018 17:53
1 | 1 | Joël Cuissinat | h1. Scribe+eole-ad+samba-ad-dc-conteneur |
---|---|---|---|
2 | 14 | Joël Cuissinat | |
3 | 14 | Joël Cuissinat | {{>toc}} |
4 | 1 | Joël Cuissinat | |
5 | 1 | Joël Cuissinat | On part d'un Scribe sur lequel on installe et on configure le service samba-ad-dc dans un conteneur LXC puis on met en œuvre Eole-AD comme si on avait deux serveurs distincts. |
6 | 1 | Joël Cuissinat | |
7 | 1 | Joël Cuissinat | _Pour la maquette, j'ai choisi d'utiliser un serveur aca.scribe-2.6.2-instance-AvecImport afin de minimiser les problèmes liés à l'environnement réseau._ |
8 | 1 | Joël Cuissinat | |
9 | 1 | Joël Cuissinat | h2. Mise en œuvre de samba-ad-dc dans un conteneur LXC |
10 | 1 | Joël Cuissinat | |
11 | 1 | Joël Cuissinat | Pour mettre en place le conteneur, nous sommes repartis de l'étude précédente ("Mise en œuvre du module Seth dans un conteneur LXC":https://dev-eole.ac-dijon.fr/projects/scribe/wiki/Scribe+eole-ad+Seth-conteneur#Mise-en-%C5%93uvre-du-module-Seth-dans-un-conteneur-LXC). |
12 | 1 | Joël Cuissinat | |
13 | 1 | Joël Cuissinat | Toutes les étapes ont été intégrées afin d'obtenir une procédure automatisée (script joint). |
14 | 1 | Joël Cuissinat | |
15 | 1 | Joël Cuissinat | h3. Détails du script |
16 | 1 | Joël Cuissinat | |
17 | 1 | Joël Cuissinat | Comme dans l'étude précédente, le conteneur doit posséder 2 IP : |
18 | 1 | Joël Cuissinat | * une sur le bridge interne, actuellement forcée en 192.0.2.2 |
19 | 1 | Joël Cuissinat | * une sur le réseau "pédagogique" qui est à choisir dans la même plage d'adresses que celle du module Scribe (exemple : 192.168.0.27 en "aca") |
20 | 1 | Joël Cuissinat | |
21 | 1 | Joël Cuissinat | _NB : Comme cette dernière adresse est en mode bridge, le maître (module Scribe) ne la voit pas._ |
22 | 1 | Joël Cuissinat | |
23 | 1 | Joël Cuissinat | Le script exécute les étapes suivantes : |
24 | 1 | Joël Cuissinat | * installation des paquets nécessaires sur le maître |
25 | 1 | Joël Cuissinat | * génération d'un conteneur lxc "ubuntu" |
26 | 1 | Joël Cuissinat | * configuration du conteneur (réseau, clés SSH) |
27 | 1 | Joël Cuissinat | * pré-paramétrage des services (/etc/krb5.conf, /etc/nsswitch.conf, /etc/eole/samba4-vars.conf) |
28 | 2 | Joël Cuissinat | * installation des libraires et des scripts (samba4.sh, validSambaPassword, ...), FIXME : cette partie effectue actuellement des copies de fichiers depuis le maître ainsi que des *wget sur gitweb* |
29 | 1 | Joël Cuissinat | * configuration des sources.list EOLE et samba-4.7 |
30 | 1 | Joël Cuissinat | * démarrage du conteneur |
31 | 1 | Joël Cuissinat | * installation des paquets samba-4.7 |
32 | 1 | Joël Cuissinat | * configuration de samba |
33 | 1 | Joël Cuissinat | * initialisation du DC à l'aide des scripts du module Seth _(samba_instance)_ |
34 | 1 | Joël Cuissinat | |
35 | 1 | Joël Cuissinat | h3. Résultat |
36 | 1 | Joël Cuissinat | |
37 | 1 | Joël Cuissinat | Une fois le script exécuté, le service samba-ad-dc est totalement fonctionnel dans le conteneur. |
38 | 4 | Gérald Schwartzmann | <pre> |
39 | 4 | Gérald Schwartzmann | ssh 192.0.2.2 |
40 | 4 | Gérald Schwartzmann | service samba-ad-dc status |
41 | 4 | Gérald Schwartzmann | </pre> |
42 | 4 | Gérald Schwartzmann | |
43 | 1 | Joël Cuissinat | Il est possible de joindre une station au domaine. |
44 | 1 | Joël Cuissinat | |
45 | 5 | Gérald Schwartzmann | * Le DNS à utiliser est l'adresse qui a été choisie sur le réseau "pédagogique" (192.168.0.27 dans notre exemple, cette IP peut être retrouvée ssh sur le conteneur, IP eth0) |
46 | 1 | Joël Cuissinat | * Le nom du domaine à utiliser correspond au "Nom DNS du réseau local" du module Scribe (ac-test.fr dans notre exemple) |
47 | 6 | Joël Cuissinat | |
48 | 6 | Joël Cuissinat | h2. Mise en place d'Eole-AD sur Scribe |
49 | 6 | Joël Cuissinat | |
50 | 6 | Joël Cuissinat | Utilisation de la procédure habituelle : installation du paquet + configuration + enregistrement des certificats d'autorité. |
51 | 6 | Joël Cuissinat | |
52 | 8 | Gérald Schwartzmann | h3. Installation |
53 | 8 | Gérald Schwartzmann | |
54 | 8 | Gérald Schwartzmann | <pre> |
55 | 8 | Gérald Schwartzmann | apt-eole install eole-ad |
56 | 8 | Gérald Schwartzmann | </pre> |
57 | 8 | Gérald Schwartzmann | |
58 | 16 | Joël Cuissinat | h3. Configuration |
59 | 16 | Joël Cuissinat | |
60 | 6 | Joël Cuissinat | *Tous les paramètres à renseigner peuvent être calculés.* |
61 | 6 | Joël Cuissinat | |
62 | 6 | Joël Cuissinat | Le dictionnaire joint pré-remplit tout ce qui doit l'être (FIXME : en l'état, cela écrase les "noms d'hôtes supplémentaires" ajoutés par les utilisateurs). |
63 | 7 | Gérald Schwartzmann | |
64 | 7 | Gérald Schwartzmann | <pre> |
65 | 20 | Joël Cuissinat | wget https://dev-eole.ac-dijon.fr/attachments/download/2613/27_eolead_container.xml -O /usr/share/eole/creole/dicos/27_eolead_container.xml |
66 | 7 | Gérald Schwartzmann | </pre> |
67 | 1 | Joël Cuissinat | |
68 | 20 | Joël Cuissinat | Il faut également ajouter des règles afin que le conteneur soit joignable même quand le pare-feu est en mode forteresse : |
69 | 20 | Joël Cuissinat | |
70 | 1 | Joël Cuissinat | <pre> |
71 | 22 | Joël Cuissinat | wget https://dev-eole.ac-dijon.fr/attachments/download/2616/90-lxc_rules -O /usr/share/eole/bastion/data/90-lxc_rules |
72 | 23 | Joël Cuissinat | chmod +x /usr/share/eole/bastion/data/90-lxc_rules |
73 | 20 | Joël Cuissinat | </pre> |
74 | 21 | Joël Cuissinat | |
75 | 8 | Gérald Schwartzmann | <pre> |
76 | 8 | Gérald Schwartzmann | gen_config |
77 | 8 | Gérald Schwartzmann | </pre> |
78 | 8 | Gérald Schwartzmann | |
79 | 11 | Gérald Schwartzmann | -Adresse du serveur NTP → 192.0.2.2- |
80 | 11 | Gérald Schwartzmann | |
81 | 11 | Gérald Schwartzmann | Copie de la clé secrète |
82 | 11 | Gérald Schwartzmann | |
83 | 11 | Gérald Schwartzmann | <pre> |
84 | 8 | Gérald Schwartzmann | root@scribe:~# scp 192.0.2.2:/var/lib/samba/private/tls/ca.pem /root/ |
85 | 8 | Gérald Schwartzmann | </pre> |
86 | 8 | Gérald Schwartzmann | |
87 | 8 | Gérald Schwartzmann | <pre> |
88 | 7 | Gérald Schwartzmann | root@scribe:~# keytool -import -trustcacerts -keystore /etc/ssl/certs/java/cacerts -storepass changeit -noprompt -alias eole-ad -file /root/ca.pem |
89 | 10 | Gérald Schwartzmann | </pre> |
90 | 1 | Joël Cuissinat | |
91 | 11 | Gérald Schwartzmann | En une seule commande en passant par le filesystem du conteneur : |
92 | 10 | Gérald Schwartzmann | |
93 | 1 | Joël Cuissinat | <pre> |
94 | 10 | Gérald Schwartzmann | keytool -import -trustcacerts -keystore /etc/ssl/certs/java/cacerts -storepass changeit -noprompt -alias eole-ad -file /var/lib/lxc/addc/rootfs/var/lib/samba/private/tls/ca.pem |
95 | 1 | Joël Cuissinat | </pre> |
96 | 1 | Joël Cuissinat | |
97 | 16 | Joël Cuissinat | h3. Instanciation |
98 | 1 | Joël Cuissinat | |
99 | 16 | Joël Cuissinat | <pre> |
100 | 16 | Joël Cuissinat | instance |
101 | 16 | Joël Cuissinat | </pre> |
102 | 16 | Joël Cuissinat | |
103 | 24 | Joël Cuissinat | h3. Synchronisation des mots de passe |
104 | 24 | Joël Cuissinat | |
105 | 24 | Joël Cuissinat | Après instance (ie après synchronisation lsc), il est possible synchroniser les mots de passe de tous les utilisateurs à l'aide des commandes suivantes : |
106 | 24 | Joël Cuissinat | |
107 | 24 | Joël Cuissinat | <pre> |
108 | 24 | Joël Cuissinat | pdbedit -L -w | sed -e "/^.*$:/d" | awk -F: '{print "pdbedit -u " $1 " --set-nt-hash " $4}' > /var/lib/lxc/addc/rootfs/tmp/injectpwd |
109 | 24 | Joël Cuissinat | ssh root@addc "bash /tmp/injectpwd" |
110 | 24 | Joël Cuissinat | </pre> |
111 | 24 | Joël Cuissinat | |
112 | 16 | Joël Cuissinat | h3. Débogage |
113 | 16 | Joël Cuissinat | |
114 | 12 | Gérald Schwartzmann | Sur le maître |
115 | 12 | Gérald Schwartzmann | |
116 | 12 | Gérald Schwartzmann | <pre> |
117 | 16 | Joël Cuissinat | LDAPTLS_REQCERT=never ldapsearch -x -H ldaps://addc.ac-test.fr:636 -bDC=ac-test,DC=fr -DCN=admin,CN=Users,DC=ac-test,DC=fr -W |
118 | 1 | Joël Cuissinat | </pre> |
119 | 15 | Joël Cuissinat | |
120 | 15 | Joël Cuissinat | h2. Problèmes rencontrés et pistes à creuser |
121 | 15 | Joël Cuissinat | |
122 | 15 | Joël Cuissinat | h3. Réussite de l'intégration au domaine à l'instance du Scribe |
123 | 15 | Joël Cuissinat | |
124 | 15 | Joël Cuissinat | En général, l'intégration au domaine échoue lors de l'instance. |
125 | 15 | Joël Cuissinat | Nous pensons que cela est du à des règles de pare-feu qui empêchent l'accès au bridge interne. |
126 | 17 | Joël Cuissinat | Visiblement, il faut s'inspirer du template /usr/share/eole/bastion/data/90-lxc_rules (projet project:eole-common). |
127 | 18 | Joël Cuissinat | => adaptation en fichier joint |
128 | 15 | Joël Cuissinat | |
129 | 19 | Joël Cuissinat | NB : on peut également conserver l'idée du template, en injectant les lignes suivantes à l'original : |
130 | 19 | Joël Cuissinat | <pre> |
131 | 19 | Joël Cuissinat | %set %%adresse_network_br0 = %%ad_address |
132 | 19 | Joël Cuissinat | %set %%adresse_netmask_br0 = '255.255.255.0' |
133 | 19 | Joël Cuissinat | </pre> |
134 | 19 | Joël Cuissinat | |
135 | 15 | Joël Cuissinat | h3. Fonctionnement des services après redémarrage du serveur |
136 | 15 | Joël Cuissinat | |
137 | 15 | Joël Cuissinat | Le démarrage du service lsc nécessite l'accès à l'annuaire Active Directory mais comme celui-ci est dans le conteneur, il démarre certainement trop tard... |
138 | 15 | Joël Cuissinat | |
139 | 15 | Joël Cuissinat | h3. NTP signé |
140 | 15 | Joël Cuissinat | |
141 | 15 | Joël Cuissinat | Un serveur NTP "signé" est nécessaire pour que les stations d'un domaine AD acceptent de se mettre à l'heure. |
142 | 15 | Joël Cuissinat | La maquette actuelle ne propose pas ce service (contrairement à un module Seth). |