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