Projet

Général

Profil

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