Scribe+eole-ad+samba-ad-dc-conteneur » Historique » Version 26
Joël Cuissinat, 03/05/2018 16:40
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 | 25 | Joël Cuissinat | <pre> |
16 | 25 | Joël Cuissinat | wget https://dev-eole.ac-dijon.fr/attachments/download/2615/scribead.sh |
17 | 25 | Joël Cuissinat | chmod +x scribead.sh |
18 | 25 | Joël Cuissinat | ./scribead.sh |
19 | 25 | Joël Cuissinat | </pre> |
20 | 25 | Joël Cuissinat | |
21 | 25 | Joël Cuissinat | |
22 | 1 | Joël Cuissinat | h3. Détails du script |
23 | 1 | Joël Cuissinat | |
24 | 1 | Joël Cuissinat | Comme dans l'étude précédente, le conteneur doit posséder 2 IP : |
25 | 1 | Joël Cuissinat | * une sur le bridge interne, actuellement forcée en 192.0.2.2 |
26 | 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") |
27 | 1 | Joël Cuissinat | |
28 | 1 | Joël Cuissinat | _NB : Comme cette dernière adresse est en mode bridge, le maître (module Scribe) ne la voit pas._ |
29 | 1 | Joël Cuissinat | |
30 | 1 | Joël Cuissinat | Le script exécute les étapes suivantes : |
31 | 1 | Joël Cuissinat | * installation des paquets nécessaires sur le maître |
32 | 1 | Joël Cuissinat | * génération d'un conteneur lxc "ubuntu" |
33 | 1 | Joël Cuissinat | * configuration du conteneur (réseau, clés SSH) |
34 | 1 | Joël Cuissinat | * pré-paramétrage des services (/etc/krb5.conf, /etc/nsswitch.conf, /etc/eole/samba4-vars.conf) |
35 | 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* |
36 | 1 | Joël Cuissinat | * configuration des sources.list EOLE et samba-4.7 |
37 | 1 | Joël Cuissinat | * démarrage du conteneur |
38 | 1 | Joël Cuissinat | * installation des paquets samba-4.7 |
39 | 1 | Joël Cuissinat | * configuration de samba |
40 | 1 | Joël Cuissinat | * initialisation du DC à l'aide des scripts du module Seth _(samba_instance)_ |
41 | 1 | Joël Cuissinat | |
42 | 1 | Joël Cuissinat | h3. Résultat |
43 | 1 | Joël Cuissinat | |
44 | 1 | Joël Cuissinat | Une fois le script exécuté, le service samba-ad-dc est totalement fonctionnel dans le conteneur. |
45 | 4 | Gérald Schwartzmann | <pre> |
46 | 4 | Gérald Schwartzmann | ssh 192.0.2.2 |
47 | 4 | Gérald Schwartzmann | service samba-ad-dc status |
48 | 4 | Gérald Schwartzmann | </pre> |
49 | 4 | Gérald Schwartzmann | |
50 | 1 | Joël Cuissinat | Il est possible de joindre une station au domaine. |
51 | 1 | Joël Cuissinat | |
52 | 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) |
53 | 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) |
54 | 6 | Joël Cuissinat | |
55 | 6 | Joël Cuissinat | h2. Mise en place d'Eole-AD sur Scribe |
56 | 6 | Joël Cuissinat | |
57 | 6 | Joël Cuissinat | Utilisation de la procédure habituelle : installation du paquet + configuration + enregistrement des certificats d'autorité. |
58 | 6 | Joël Cuissinat | |
59 | 8 | Gérald Schwartzmann | h3. Installation |
60 | 8 | Gérald Schwartzmann | |
61 | 8 | Gérald Schwartzmann | <pre> |
62 | 8 | Gérald Schwartzmann | apt-eole install eole-ad |
63 | 8 | Gérald Schwartzmann | </pre> |
64 | 8 | Gérald Schwartzmann | |
65 | 16 | Joël Cuissinat | h3. Configuration |
66 | 16 | Joël Cuissinat | |
67 | 6 | Joël Cuissinat | *Tous les paramètres à renseigner peuvent être calculés.* |
68 | 6 | Joël Cuissinat | |
69 | 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). |
70 | 7 | Gérald Schwartzmann | |
71 | 7 | Gérald Schwartzmann | <pre> |
72 | 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 |
73 | 7 | Gérald Schwartzmann | </pre> |
74 | 1 | Joël Cuissinat | |
75 | 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 : |
76 | 20 | Joël Cuissinat | |
77 | 1 | Joël Cuissinat | <pre> |
78 | 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 |
79 | 23 | Joël Cuissinat | chmod +x /usr/share/eole/bastion/data/90-lxc_rules |
80 | 20 | Joël Cuissinat | </pre> |
81 | 21 | Joël Cuissinat | |
82 | 8 | Gérald Schwartzmann | <pre> |
83 | 8 | Gérald Schwartzmann | gen_config |
84 | 8 | Gérald Schwartzmann | </pre> |
85 | 8 | Gérald Schwartzmann | |
86 | 11 | Gérald Schwartzmann | -Adresse du serveur NTP → 192.0.2.2- |
87 | 11 | Gérald Schwartzmann | |
88 | 11 | Gérald Schwartzmann | Copie de la clé secrète |
89 | 11 | Gérald Schwartzmann | |
90 | 11 | Gérald Schwartzmann | <pre> |
91 | 8 | Gérald Schwartzmann | root@scribe:~# scp 192.0.2.2:/var/lib/samba/private/tls/ca.pem /root/ |
92 | 8 | Gérald Schwartzmann | </pre> |
93 | 8 | Gérald Schwartzmann | |
94 | 8 | Gérald Schwartzmann | <pre> |
95 | 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 |
96 | 10 | Gérald Schwartzmann | </pre> |
97 | 1 | Joël Cuissinat | |
98 | 11 | Gérald Schwartzmann | En une seule commande en passant par le filesystem du conteneur : |
99 | 10 | Gérald Schwartzmann | |
100 | 1 | Joël Cuissinat | <pre> |
101 | 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 |
102 | 1 | Joël Cuissinat | </pre> |
103 | 1 | Joël Cuissinat | |
104 | 16 | Joël Cuissinat | h3. Instanciation |
105 | 1 | Joël Cuissinat | |
106 | 16 | Joël Cuissinat | <pre> |
107 | 16 | Joël Cuissinat | instance |
108 | 16 | Joël Cuissinat | </pre> |
109 | 16 | Joël Cuissinat | |
110 | 24 | Joël Cuissinat | h3. Synchronisation des mots de passe |
111 | 24 | Joël Cuissinat | |
112 | 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 : |
113 | 24 | Joël Cuissinat | |
114 | 24 | Joël Cuissinat | <pre> |
115 | 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 |
116 | 24 | Joël Cuissinat | ssh root@addc "bash /tmp/injectpwd" |
117 | 24 | Joël Cuissinat | </pre> |
118 | 24 | Joël Cuissinat | |
119 | 16 | Joël Cuissinat | h3. Débogage |
120 | 16 | Joël Cuissinat | |
121 | 12 | Gérald Schwartzmann | Sur le maître |
122 | 12 | Gérald Schwartzmann | |
123 | 12 | Gérald Schwartzmann | <pre> |
124 | 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 |
125 | 1 | Joël Cuissinat | </pre> |
126 | 15 | Joël Cuissinat | |
127 | 15 | Joël Cuissinat | h2. Problèmes rencontrés et pistes à creuser |
128 | 15 | Joël Cuissinat | |
129 | 15 | Joël Cuissinat | h3. Réussite de l'intégration au domaine à l'instance du Scribe |
130 | 15 | Joël Cuissinat | |
131 | 15 | Joël Cuissinat | En général, l'intégration au domaine échoue lors de l'instance. |
132 | 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. |
133 | 17 | Joël Cuissinat | Visiblement, il faut s'inspirer du template /usr/share/eole/bastion/data/90-lxc_rules (projet project:eole-common). |
134 | 18 | Joël Cuissinat | => adaptation en fichier joint |
135 | 15 | Joël Cuissinat | |
136 | 19 | Joël Cuissinat | NB : on peut également conserver l'idée du template, en injectant les lignes suivantes à l'original : |
137 | 19 | Joël Cuissinat | <pre> |
138 | 19 | Joël Cuissinat | %set %%adresse_network_br0 = %%ad_address |
139 | 19 | Joël Cuissinat | %set %%adresse_netmask_br0 = '255.255.255.0' |
140 | 19 | Joël Cuissinat | </pre> |
141 | 19 | Joël Cuissinat | |
142 | 15 | Joël Cuissinat | h3. Fonctionnement des services après redémarrage du serveur |
143 | 15 | Joël Cuissinat | |
144 | 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... |
145 | 15 | Joël Cuissinat | |
146 | 15 | Joël Cuissinat | h3. NTP signé |
147 | 15 | Joël Cuissinat | |
148 | 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. |
149 | 15 | Joël Cuissinat | La maquette actuelle ne propose pas ce service (contrairement à un module Seth). |