Projet

Général

Profil

Scribe+eole-ad+samba-ad-dc-conteneur » Historique » Version 22

Joël Cuissinat, 01/03/2018 17:27

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 20 Joël Cuissinat
</pre>
73 21 Joël Cuissinat
74 8 Gérald Schwartzmann
<pre>
75 8 Gérald Schwartzmann
gen_config
76 8 Gérald Schwartzmann
</pre>
77 8 Gérald Schwartzmann
78 11 Gérald Schwartzmann
-Adresse du serveur NTP → 192.0.2.2-
79 11 Gérald Schwartzmann
80 11 Gérald Schwartzmann
Copie de la clé secrète
81 11 Gérald Schwartzmann
82 11 Gérald Schwartzmann
<pre>
83 8 Gérald Schwartzmann
root@scribe:~# scp 192.0.2.2:/var/lib/samba/private/tls/ca.pem /root/
84 8 Gérald Schwartzmann
</pre>
85 8 Gérald Schwartzmann
86 8 Gérald Schwartzmann
<pre>
87 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
88 10 Gérald Schwartzmann
</pre>
89 1 Joël Cuissinat
90 11 Gérald Schwartzmann
En une seule commande en passant par le filesystem du conteneur :
91 10 Gérald Schwartzmann
92 1 Joël Cuissinat
<pre>
93 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
94 1 Joël Cuissinat
</pre>
95 1 Joël Cuissinat
96 16 Joël Cuissinat
h3. Instanciation
97 1 Joël Cuissinat
98 16 Joël Cuissinat
<pre>
99 16 Joël Cuissinat
instance
100 16 Joël Cuissinat
</pre>
101 16 Joël Cuissinat
102 16 Joël Cuissinat
h3. Débogage
103 16 Joël Cuissinat
104 12 Gérald Schwartzmann
Sur le maître
105 12 Gérald Schwartzmann
106 12 Gérald Schwartzmann
<pre>
107 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
108 1 Joël Cuissinat
</pre>
109 15 Joël Cuissinat
110 15 Joël Cuissinat
h2. Problèmes rencontrés et pistes à creuser
111 15 Joël Cuissinat
112 15 Joël Cuissinat
h3. Réussite de l'intégration au domaine à l'instance du Scribe
113 15 Joël Cuissinat
114 15 Joël Cuissinat
En général, l'intégration au domaine échoue lors de l'instance. 
115 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.
116 17 Joël Cuissinat
Visiblement, il faut s'inspirer du template /usr/share/eole/bastion/data/90-lxc_rules (projet project:eole-common).
117 18 Joël Cuissinat
=> adaptation en fichier joint
118 15 Joël Cuissinat
119 19 Joël Cuissinat
NB : on peut également conserver l'idée du template, en injectant les lignes suivantes à l'original :
120 19 Joël Cuissinat
<pre>
121 19 Joël Cuissinat
%set %%adresse_network_br0 = %%ad_address
122 19 Joël Cuissinat
%set %%adresse_netmask_br0 = '255.255.255.0'
123 19 Joël Cuissinat
</pre>
124 19 Joël Cuissinat
125 15 Joël Cuissinat
h3. Fonctionnement des services après redémarrage du serveur
126 15 Joël Cuissinat
127 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...
128 15 Joël Cuissinat
129 15 Joël Cuissinat
h3. NTP signé
130 15 Joël Cuissinat
131 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.
132 15 Joël Cuissinat
La maquette actuelle ne propose pas ce service (contrairement à un module Seth).