Projet

Général

Profil

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).