Compare commits

...

13 Commits

Author SHA1 Message Date
b1f39ac48c détail éval 2023-04-14 09:55:45 +02:00
7cd332a19e bugfix cron 2023-04-14 09:45:49 +02:00
d04fdd4200 install phpldapadmin 2023-04-14 09:44:02 +02:00
5359e1fcd4 doc install phpldapadmin 2023-04-14 08:36:16 +02:00
7e1fe7214c commande install phpldapadmin 2023-04-14 08:35:36 +02:00
c1eeec5210 lien phpldapadmin 2023-04-14 08:32:31 +02:00
c95a0ceb5b bugfix lien 2023-04-03 16:16:23 +02:00
62619ff736 tp ldap 2023-04-03 10:11:21 +02:00
97fd7b25ad tp ldap 2023-04-03 10:10:54 +02:00
cb09d624cc tp https 2023-01-16 11:39:10 +01:00
75a616bd9c ajout htaccess tp apache 2023-01-10 13:40:06 +01:00
7c4e38dbf5 ajout .gitignore 2023-01-10 13:36:36 +01:00
60dd6a2740 typos 2023-01-10 13:35:39 +01:00
7 changed files with 172 additions and 33 deletions

12
.gitignore vendored Normal file
View File

@ -0,0 +1,12 @@
output/
*.aux
*.log
*.nav
*.out
*.pdf
*.snm
*.synctex.gz
*.toc
notes
cours-crypto-old.md
tp-bd-files/prof/

25
Makefile Normal file
View File

@ -0,0 +1,25 @@
OUTDIR= output
SRC= $(wildcard *.md)
PDF= $(addprefix $(OUTDIR)/,$(SRC:.md=.pdf))
HTML= $(addprefix $(OUTDIR)/,$(SRC:.md=.html))
all: $(PDF) $(HTML)
pdf: $(PDF)
html: $(HTML)
directories: $(OUTDIR)
$(OUTDIR):
mkdir $(OUTDIR)
$(OUTDIR)/%.html: %.md $(OUTDIR)
pandoc --from=markdown+lists_without_preceding_blankline $< -o $@ -s
$(OUTDIR)/%.pdf: $(OUTDIR)/%.html
wkhtmltopdf $< $@
clean:
\rm -rf *.html *.pdf $(OUTDIR)

View File

@ -5,7 +5,5 @@ Authentification et sécurité des données pour les LP DLIS - IUT Vannes
* [Cours Cryptographie (2*1h)](cours-crypto.md) * [Cours Cryptographie (2*1h)](cours-crypto.md)
* [TD crypto asymétrique (2h)](td-crypto.md) * [TD crypto asymétrique (2h)](td-crypto.md)
* [Passwords (2h)](td-passwords.md) * [Passwords (2h)](td-passwords.md)
* [TP HTTPS / Authentification mutuelle (4,5h)](tp-https.md) * [TP HTTPS / Authentification mutuelle (beaucoup d'heures)](tp-https.md)
* [Cours Authentification (1h)](cours-auth.md) * [TP LDAP (plein d'heures)](tp-ldap.md)
* [TP Sécurité des BD (12h)](tp-bd.md)
* [LDAP (10,5h)](tp-ldap.md)

View File

@ -16,7 +16,7 @@ Comment permettre à Alice et Bob de communiquer de manière *sûre* sur un cana
* Orange sur les livebox * Orange sur les livebox
* Lumen sur du transatlantique * Lumen sur du transatlantique
* Autre transitaire fournissant le service au serveur visé * Autre transitaire fournissant le service au serveur visé
* Attaquant sur le réseau local (attention aux LP Cyber qui jouent par là...) * Attaquant sur le réseau local
* ... * ...
* L'objectif de la crypto : communiquer de manière *sûre* sur un medium *non sûr* * L'objectif de la crypto : communiquer de manière *sûre* sur un medium *non sûr*
* Aujourd'hui, (très) peu de services réseau sans crypto * Aujourd'hui, (très) peu de services réseau sans crypto

View File

@ -21,7 +21,7 @@ Ces deux mesures sont bien complémentaires car il est du devoir de chaque site
Squelette de code fourni Squelette de code fourni
======================== ========================
Vous devez télécharger le squelette de code [ici](td-passwords-files). Vous pouvez récupérer l'intégralité du dépôt en tapant `git clone https://git.kaz.bzh/francois.lesueur/LPCyber.git`, puis aller dans le dossier `td-passwords-files`. Vous pourriez avoir besoin d'installer la bibliothèque python PyCryptodome (de préférence, et nécessaire avec Python 3.8) ou PyCrypto (dépréciée, mais a priori fonctionnelle jusque Python 3.7). Par exemple avec pip3 pour avoir PyCryptodome uniquement (les deux ne peuvent pas coexister sur le système) : Vous devez télécharger le squelette de code [ici](td-passwords-files). Vous pouvez récupérer l'intégralité du dépôt en tapant `git clone https://git.kaz.bzh/francois.lesueur/LPDLIS.git`, puis aller dans le dossier `td-passwords-files`. Vous pourriez avoir besoin d'installer la bibliothèque python PyCryptodome (de préférence, et nécessaire avec Python 3.8) ou PyCrypto (dépréciée, mais a priori fonctionnelle jusque Python 3.7). Par exemple avec pip3 pour avoir PyCryptodome uniquement (les deux ne peuvent pas coexister sur le système) :
``` ```
pip3 uninstall PyCrypto pip3 uninstall PyCrypto

View File

@ -4,10 +4,14 @@ Ce TP présente le modèle des autorités de certification et l'applique au prot
Ce TD sera réalisé dans la VM MI-LXC/SNSTER disponible [ici](https://flesueur.irisa.fr/mi-lxc/images/milxc-snster-vm-2.0.0.ova). Avant de lancer la VM, il peut être nécessaire de diminuer la RAM allouée. Par défaut, la VM a 3GO : si vous avez 4GO sur votre machine physique, il vaut mieux diminuer à 2GO, voire 1.5GO pour la VM (la VM devrait fonctionner de manière correcte toujours). Ce TD sera réalisé dans la VM MI-LXC/SNSTER disponible [ici](https://flesueur.irisa.fr/mi-lxc/images/milxc-snster-vm-2.0.0.ova). Avant de lancer la VM, il peut être nécessaire de diminuer la RAM allouée. Par défaut, la VM a 3GO : si vous avez 4GO sur votre machine physique, il vaut mieux diminuer à 2GO, voire 1.5GO pour la VM (la VM devrait fonctionner de manière correcte toujours).
Pour vous connecter à la VM, utilisez le compte `root` avec le mot de passe `root`.
L'infrastructure déployée simule plusieurs postes dont le SI de l'entreprise _target_ (routeur, serveur web, poste admin), le SI de l'autorité de certification _mica_, un AS d'attaquant _ecorp_ et quelques autres servant à l'intégration de l'ensemble. L'infrastructure déployée simule plusieurs postes dont le SI de l'entreprise _target_ (routeur, serveur web, poste admin), le SI de l'autorité de certification _mica_, un AS d'attaquant _ecorp_ et quelques autres servant à l'intégration de l'ensemble.
**L'objectif du TP est de permettre à la machine isp-a-home de naviguer de manière sécurisée sur le site `www.target.milxc` (hébergé sur la machine target-dmz) et à ce site de faire une authentification forte de ses clients.** **L'objectif du TP est de permettre à la machine isp-a-home de naviguer de manière sécurisée sur le site `www.target.milxc` (hébergé sur la machine target-dmz) et à ce site de faire une authentification forte de ses clients.**
> Pour les curieux, le code de MI-LXC, qui sert à générer cette VM automatiquement, est disponible avec une procédure d'installation documentée [ici](https://github.com/flesueur/mi-lxc/tree/snster). Attention, nous utilisons ici la branche SNSTER de MI-LXC, qui utilise le framework [SNSTER](https://framagit.org/flesueur/snster) en cours de mise au point.
> Si vous êtes sous Windows et que la VM ne fonctionne pas avec VirtualBox, vous pouvez utiliser à la place VMWare Player. Dans ce cas, il faudra cliquer sur "Retry" lors de l'import. > Si vous êtes sous Windows et que la VM ne fonctionne pas avec VirtualBox, vous pouvez utiliser à la place VMWare Player. Dans ce cas, il faudra cliquer sur "Retry" lors de l'import.
> Le compte-rendu est à déposer en binôme sur Moodle. > Le compte-rendu est à déposer en binôme sur Moodle.
@ -33,6 +37,90 @@ Rappel: Vous devez être dans le répertoire `/root/mi-lxc/` pour exécuter ces
> Dans la VM et sur les machines MI-LXC, vous pouvez installer des logiciels supplémentaires. Par défaut, vous avez mousepad pour éditer des fichiers de manière graphique. La VM peut être affichée en plein écran. Si cela ne fonctionne pas, il faut parfois changer la taille de fenêtre manuellement, en tirant dans l'angle inférieur droit, pour que VirtualBox détecte que le redimensionnement automatique est disponible. Il y a une case adéquate (taille d'écran automatique) dans le menu écran qui doit être cochée. Si rien ne marche, c'est parfois en redémarrant la VM que cela peut se déclencher. Mais il *faut* la VM en plein écran. > Dans la VM et sur les machines MI-LXC, vous pouvez installer des logiciels supplémentaires. Par défaut, vous avez mousepad pour éditer des fichiers de manière graphique. La VM peut être affichée en plein écran. Si cela ne fonctionne pas, il faut parfois changer la taille de fenêtre manuellement, en tirant dans l'angle inférieur droit, pour que VirtualBox détecte que le redimensionnement automatique est disponible. Il y a une case adéquate (taille d'écran automatique) dans le menu écran qui doit être cochée. Si rien ne marche, c'est parfois en redémarrant la VM que cela peut se déclencher. Mais il *faut* la VM en plein écran.
Manipulation et navigation dans l'infrastructure pré-existante
==============================================================
Découverte du réseau
--------------------
Vous devez vous connecter à la VM en root/root. MI-LXC est déjà installé et l'infrastructure déployée, il faut avec un terminal aller dans le dossier `/root/mi-lxc`. Commencez par afficher le plan du réseau avec `snster print`. Les rectangles sont les machines et les ovales les switchs réseau. L'infrastructure déployée simule un internet minimaliste :
* un réseau de réseaux indépendants
* chaque réseau propose des services internes et expose des services externes utilisés par d'autres réseaux
* des services globaux nécessaires à l'interconnexion de l'ensemble sont déjà en place (cœur de réseau, racine DNS, ...)
Au milieu du plan, le cœur de réseau est constitué de 2 opérateurs nommés transit-a et transit-b (munis chacun d'une machine et d'un switch). D'autres organisations sont ensuite connectées à ces opérateurs afin de former globalement cet internet. Ces organisations sont classiquement construites avec une machine <organisation>-router en entrée de réseau, un switch interne et d'autres machines branchées sur ce switch interne. Vous aurez à endosser des rôles sur plusieurs machines successives dans ce TP.
Utilisation
-----------
Pour démarrer l'infrastructure, tapez `snster start`. Ensuite pour vous connecter à une machine :
* `snster display isp-a-home` : pour afficher le bureau de la machine isp-a-home qui peut vous servir de navigateur web à l'intérieur du réseau de MI-LXC (en tant qu'utilisateur debian)
* `snster attach gozilla-infra` : pour obtenir un shell sur la machine gozilla-infra (en tant qu'utilisateur root)
Toutes les machines ont les deux comptes suivants : debian/debian et root/root (login/mot de passe).
> Question 1 : Depuis la machine isp-a-home, ouvrez un navigateur pour vous connecter à `http://www.target.milxc`. Vous accédez à une page Dokuwiki. Savez-vous sur quel serveur cette page est hébergée ?
> Question 2 : Depuis la machine isp-a-home, ouvrez un navigateur pour vous connecter au site web de l'UBS. Cela fonctionne-t-il ? Cette page est-elle hébergée dans l'infrastructure MI-LXC ?
> Question 3 : Ouvrez un shell sur la machine gozilla-infra (commande attach, donc). Installez le package nano grâce à l'outil `apt` et vérifiez que vous pouvez maintenant éditer des fichiers avec nano.
> Dans la VM et sur les machines MI-LXC, vous pouvez donc installer des logiciels supplémentaires. Par défaut, vous avez mousepad pour éditer des fichiers de manière graphique.
Apache - Serveur HTTP
=====================
Des serveurs Apache sont déjà installés par défaut sur plusieurs machines. Choisissez par exemple gozilla-infra comme serveur HTTP et isp-a-home comme client HTTP. Validez que la connexion à l'Apache du serveur retenu fonctionne bien avec Firefox depuis le poste client choisi.
Wireshark
---------
Étudiez la connexion avec Wireshark depuis le poste client (en session graphique "display"). Dans wireshark, lancez la capture sur eth0, puis vous pouvez utiliser le filtre "http" pour n'afficher que ce qui a trait au HTTP.
> Question 4 : Décrivez en quelques lignes la connexion HTTP entre le client et le serveur (les quelques échanges ou une capture d'écran de la zone wireshark montrant cet échange)
Connectez-vous ensuite avec deux logiciels clients en ligne de commande (cherchez sur internet comment faire) :
* curl ou wget d'une part
* netcat (binaire "nc", à lancer avec l'option -C) d'autre part
> Question 5 : Quelles commandes ont permis d'obtenir l'index ? À quoi sert l'option -C de netcat ?
Ajout de pages HTML
-----------------------
La racine du serveur est dans le dossier `/var/www/html`, c'est-à-dire que le contenu de ce dossier est celui servi par le serveur Apache. Retrouvez le fichier d'index que vous aviez précédemment reçu côté client.
Créez un sous-dossier dans `/var/www/html` et ajoutez-y un second fichier html. Récupérez ce nouveau fichier depuis un client.
Contrôle d'accès
----------------
Nous allons maintenant contrôler l'accès au sous-dossier créé (par login/mot de passe).
Vous devez tout d'abord créer un fichier `.htpasswd` qui va contenir les couples login/mot de passe autorisés. Vous pouvez par exemple le placer dans un dossier (à créer) `/etc/apache2/htpasswd/` (pour des raisons de sécurité, on évitera de le placer dans un dossier servi par Apache comme `/var/www/html/...`). Vous utiliserez pour cela la commande `htpasswd` en faisant attention à utiliser la fonction de hachage bcrypt (une option à htpasswd) au lieu du MD5 utilisé par défaut (Explication [ici](https://nakedsecurity.sophos.com/2013/11/20/serious-security-how-to-store-your-users-passwords-safely/), pas à lire en TD mais pour les curieux).
> Question 6 : Quelles commandes avez-vous tapées ? Quel est votre fichier .htpasswd résultat ?
Vous devez ensuite spécifier quel dossier doit être protégé. Vous trouverez le nécessaire dans la [documentation officielle](https://httpd.apache.org/docs/2.4/fr/howto/auth.html), à parcourir jusqu'à la section "Autorisation d'accès à plusieurs personnes" (incluse). Lisez attentivement la partie sur les prérequis, votre fichier de configuration apache2 est `/etc/apache2/apache2.conf` (et non `httpd.conf` comme mentionné à certains endroits de cette documentation).
Vous devez réaliser ce contrôle de 2 façons distinctes :
* D'abord en intégrant directement les directives `Auth*` dans une section `<Directory>...</Directory>`, par exemple en vous inspirant de la section concernant `/var/www/` dans le fichier de configuration `/etc/apache2/apache2.conf`. Attention à bien exécuter un `systemctl reload apache2` pour prendre en compte les changements dans les `.conf`
* Ensuite en intégrant un `AllowOverride` dans la section concernant ce même répertoire puis en plaçant un fichier `.htaccess` dans le dossier `/var/www` (AllowOverride est décrit dans la partie "Les prérequis" de la page de documentation officielle)
Validez chaque fonctionnement en vérifiant que l'authentification est bien demandée au client lors d'une connexion graphique avec Firefox.
> Question 7 : Quelles modifications/ajouts avez-vous fait ?
> Question 8 : Retrouvez dans Wireshark la phase d'authentification.
Connexion en clair Connexion en clair
================== ==================
@ -49,6 +137,9 @@ Nous allons maintenant attaquer depuis l'AS ecorp cette communication en clair,
Nous constatons ainsi le cas d'attaque que nous souhaitons détecter : un utilisateur sur isp-a-home qui, en tapant l'URL `www.target.milxc`, arrive en fait sur un autre service que celui attendu. Remettez le système en bon ordre de marche pour continuer (pour DNS, remettre la bonne IP 100.80.1.2 ; pour BGP, désactivez l'interface eth1:0 sur ecorp-router `ifconfig eth1:0 down`). Nous constatons ainsi le cas d'attaque que nous souhaitons détecter : un utilisateur sur isp-a-home qui, en tapant l'URL `www.target.milxc`, arrive en fait sur un autre service que celui attendu. Remettez le système en bon ordre de marche pour continuer (pour DNS, remettre la bonne IP 100.80.1.2 ; pour BGP, désactivez l'interface eth1:0 sur ecorp-router `ifconfig eth1:0 down`).
> Question 9 : Décrivez l'attaque que vous avez réalisée (commandes, effets, raisons)
> Question 10 : À partir d'ici, il n'y a plus de questions explicites. Votre compte-rendu doit décrire vos manipulations et apporter le contexte nécessaire, jusqu'à la fin du document.
Création d'une CA Création d'une CA
================= =================
@ -116,7 +207,6 @@ Sur l'AS target, vous disposez du serveur target-dmz sur lequel il faut déploye
Connectez-vous maintenant en HTTPS depuis `isp-a-home` (si vous aviez ajouté une exception de sécurité à un moment du TP, retirez-la avant). Tout doit se dérouler sans alerte, visualisez le certificat reçu. (Vous arrivez sur une page par défaut, le dokuwiki est accessible à l'URL `https://www.target.milxc/dokuwiki/`) Connectez-vous maintenant en HTTPS depuis `isp-a-home` (si vous aviez ajouté une exception de sécurité à un moment du TP, retirez-la avant). Tout doit se dérouler sans alerte, visualisez le certificat reçu. (Vous arrivez sur une page par défaut, le dokuwiki est accessible à l'URL `https://www.target.milxc/dokuwiki/`)
<!-- ou apt install python3-certbot-apache puis un --apache au lieu du --standalone -->
Attaques sur un serveur HTTPS Attaques sur un serveur HTTPS
============================= =============================
@ -126,7 +216,6 @@ Attaque sur la connexion au serveur
Refaites l'attaque du début (DNS ou BGP) et vérifiez que la connexion depuis isp-a-home, lorsqu'elle est routée vers le serveur attaquant, génère bien une alerte de sécurité. Refaites l'attaque du début (DNS ou BGP) et vérifiez que la connexion depuis isp-a-home, lorsqu'elle est routée vers le serveur attaquant, génère bien une alerte de sécurité.
<!-- il faudrait un certificat plus joli -->
Quelle est d'habitude votre réaction face à ce genre d'alerte ? Que pouvons nous en conclure sur la protection et le risque restant avec HTTPS ? Quelle est d'habitude votre réaction face à ce genre d'alerte ? Que pouvons nous en conclure sur la protection et le risque restant avec HTTPS ?
@ -154,18 +243,8 @@ Déroulé général :
* Le client (la machine isp-a-home) doit récupérer ce client.p12 et l'importer dans Firefox (Préférences -> Sécurité -> Certificats -> Mes certificats -> Importer) * Le client (la machine isp-a-home) doit récupérer ce client.p12 et l'importer dans Firefox (Préférences -> Sécurité -> Certificats -> Mes certificats -> Importer)
* Validez que l'accès est maintenant autorisé * Validez que l'accès est maintenant autorisé
<!--
Bonus : Révocation
==========
Expérimentez les mécanismes de révocation disponibles (CRL, OCSP en ligne ou agrafé) pour révoquer le certificat serveur ainsi que les certificats clients.
-->
Révocation Révocation
======== ========
> Dans Smallstep, la révocation par CRL/OCSP n'est pas (encore) gérée. À la place, les certificats ont par défaut une durée courte (24h) et doivent être renouvelés automatiquement, ce qui limite largement le besoin de révocation explicite. Ce positionnement et toutes les limites de la révocation explicite sont très bien expliqués par les auteurs [ici](https://smallstep.com/blog/passive-revocation/) > Dans Smallstep, la révocation par CRL/OCSP n'est pas (encore) gérée. À la place, les certificats ont par défaut une durée courte (24h) et doivent être renouvelés automatiquement, ce qui limite largement le besoin de révocation explicite. Ce positionnement et toutes les limites de la révocation explicite sont très bien expliqués par les auteurs [ici](https://smallstep.com/blog/passive-revocation/)
<!-- pinning, hsts -->

View File

@ -1,11 +1,9 @@
# TP : Sécurité des annuaires (10,5h) # TP : Annuaires LDAP
Ce TP-projet présente les annuaires LDAP. Ce TP-projet présente les annuaires LDAP.
Ce TD sera réalisé dans la VM MI-LXC/SNSTER disponible [ici](https://flesueur.irisa.fr/mi-lxc/images/milxc-snster-vm-2.0.0.ova). Avant de lancer la VM, il peut être nécessaire de diminuer la RAM allouée. Par défaut, la VM a 3GO : si vous avez 4GO sur votre machine physique, il vaut mieux diminuer à 2GO, voire 1.5GO pour la VM (la VM devrait fonctionner de manière correcte toujours). Ce TD sera réalisé dans la VM MI-LXC/SNSTER disponible [ici](https://flesueur.irisa.fr/mi-lxc/images/milxc-snster-vm-2.0.0.ova). Avant de lancer la VM, il peut être nécessaire de diminuer la RAM allouée. Par défaut, la VM a 3GO : si vous avez 4GO sur votre machine physique, il vaut mieux diminuer à 2GO, voire 1.5GO pour la VM (la VM devrait fonctionner de manière correcte toujours).
Un [bon tuto LDAP](https://connect.ed-diamond.com/Linux-Pratique/lp-115/installation-et-configuration-d-un-annuaire-openldap) pour démarrer.
> Si vous êtes sous Windows et que la VM ne fonctionne pas avec VirtualBox, vous pouvez utiliser à la place VMWare Player. Dans ce cas, il faudra cliquer sur "Retry" lors de l'import. > Si vous êtes sous Windows et que la VM ne fonctionne pas avec VirtualBox, vous pouvez utiliser à la place VMWare Player. Dans ce cas, il faudra cliquer sur "Retry" lors de l'import.
> Le compte-rendu est à déposer en binôme sur Moodle. > Le compte-rendu est à déposer en binôme sur Moodle.
@ -31,37 +29,64 @@ Rappel: Vous devez être dans le répertoire `/root/mi-lxc/` pour exécuter ces
> Dans la VM et sur les machines MI-LXC, vous pouvez installer des logiciels supplémentaires. Par défaut, vous avez mousepad pour éditer des fichiers de manière graphique. La VM peut être affichée en plein écran. Si cela ne fonctionne pas, il faut parfois changer la taille de fenêtre manuellement, en tirant dans l'angle inférieur droit, pour que VirtualBox détecte que le redimensionnement automatique est disponible. Il y a une case adéquate (taille d'écran automatique) dans le menu écran qui doit être cochée. Si rien ne marche, c'est parfois en redémarrant la VM que cela peut se déclencher. Mais il *faut* la VM en plein écran. > Dans la VM et sur les machines MI-LXC, vous pouvez installer des logiciels supplémentaires. Par défaut, vous avez mousepad pour éditer des fichiers de manière graphique. La VM peut être affichée en plein écran. Si cela ne fonctionne pas, il faut parfois changer la taille de fenêtre manuellement, en tirant dans l'angle inférieur droit, pour que VirtualBox détecte que le redimensionnement automatique est disponible. Il y a une case adéquate (taille d'écran automatique) dans le menu écran qui doit être cochée. Si rien ne marche, c'est parfois en redémarrant la VM que cela peut se déclencher. Mais il *faut* la VM en plein écran.
Découverte
==========
Un bon tuto LDAP est disponible [ici](https://connect.ed-diamond.com/Linux-Pratique/lp-115/installation-et-configuration-d-un-annuaire-openldap) pour démarrer.
> Question 1 : Rédigez une synthèse de cet article. Cette synthèse doit faire apparaître les fonctionnalités présentées, l'organisation de l'article, etc. Ce travail doit vous permettre de (1)appréhender l'environnement LDAP et (2)orienter vos recherches dans la suite du TP.
Étude d'un LDAP existant Étude d'un LDAP existant
======================== ========================
L'organisation Target utilise une authentification centralisée basée sur un LDAP. Explorez son usage : L'organisation Target utilise une authentification centralisée basée sur un LDAP. Explorez son usage.
* Qui est le serveur ?
* Trouvez 2 clients, nous allons étudier leur configuration. Cherchez dans `/etc` et ses sous-dossiers (find est votre ami) les fichiers linss-ldap.conf, pam_ldap.conf et nsswitch.conf. Analysez ces fichiers de configuation, cherchez leur usage et notez les quelques lignes qui vous paraissent les paramètres essentiels. > Question 2 : Qui est le serveur LDAP ?
* Analysez les échanges avec Wireshark :
Trouvez 2 clients, nous allons étudier leur configuration. Cherchez dans `/etc` et ses sous-dossiers (find est votre ami) les fichiers libnss-ldap.conf, pam_ldap.conf et nsswitch.conf.
> Question 3 : Analysez ces fichiers de configuration, cherchez leur usage et notez les quelques lignes qui vous paraissent les paramètres essentiels.
Analysez maintenant les échanges avec Wireshark :
* Lors d'une authentification (commercial et admin sont des comptes LDAP) * Lors d'une authentification (commercial et admin sont des comptes LDAP)
* Lors d'un `ls -l /home` (Vous devez forcer la résolution de l'uid de commercial ou admin qui sont des comptes LDAP. Attention au cache ! Pour gagner du temps, les clients gardent les dernières réponses en cache et ne refont pas les même requêtes. Pour couper le cache côté client : `service nscd stop`) * Lors d'un `ls -l /home` (Vous devez forcer la résolution de l'uid de commercial ou admin qui sont des comptes LDAP. Attention au cache ! Pour gagner du temps, les clients gardent les dernières réponses en cache et ne refont pas les même requêtes. Pour couper le cache côté client : `service nscd stop`)
* En ligne de commande sur le serveur, à travers les commandes de manipulation ldap (et non les commandes shell `adduser`/`passwd`), trouvez comment :
> Question 4 : Présentez ces analyses Wireshark (screenshots + explications)
La commande `ldapsearch -cxD cn=admin,dc=target,dc=milxc -w root -b dc=target,dc=milxc` permet par exemple d'afficher les données existantes. Quelques exemples d'utilisation peuvent être trouvés dans le fichier [mi-lxc/groups/target/ldap/provision.sh](https://github.com/flesueur/mi-lxc/blob/master/topology/target/ldap/provision.sh).
> Question 5 : En ligne de commande sur le serveur, à travers les commandes de manipulation ldap (et non les commandes shell `adduser`/`passwd`), trouvez comment :
* Ajouter un utilisateur (avec ldapadd) * Ajouter un utilisateur (avec ldapadd)
* Modifier l'uidNumber d'un utilisateur (avec ldapmodify) * Modifier l'uidNumber d'un utilisateur (avec ldapmodify)
* Modifier le mot de passe d'un utilisateur (avec ldapmodify) * Modifier le mot de passe d'un utilisateur (avec ldapmodify)
> La commande `ldapsearch -cxD cn=admin,dc=target,dc=milxc -w root -b dc=target,dc=milxc` permet par exemple d'afficher les données existantes. Quelques exemples d'utilisation peuvent être trouvés dans le fichier [mi-lxc/groups/target/ldap/provision.sh](https://github.com/flesueur/mi-lxc/blob/master/groups/target/ldap/provision.sh).
Déploiement d'un LDAP Déploiement d'un LDAP
===================== =====================
Reprenez le TP3 (soit vous avez encore l'infra, soit vous la recréez à partir du sujet) pour avoir l'AS IUTVA. Dans cet AS : > Question 6 : À partir d'ici, il n'y a plus de questions explicites. Votre compte-rendu doit décrire vos manipulations et apporter le contexte nécessaire, jusqu'à la fin du document.
* Ajoutez une machine qui vous servira de serveur LDAP. Une fois démarrée, installez et configurez le serveur LDAP
* Configurez une autre machine de l'AS IUTVA pour être client de ce LDAP (pour l'authentification, PAM, et pour les user/groupes affichés par `ls`, NSS) Nous allons déployer un LDAP dans l'AS ISP-A (ça n'a pas trop de sens mais ça permet d'avoir les machines nécessaires). Dans cet AS :
* Installez et configurez le serveur LDAP sur la machine isp-a-infra
* Configurez une autre machine de l'AS ISP-A pour être client de ce LDAP (pour l'authentification, PAM, et pour les user/groupes affichés par `ls`, NSS)
* Obtenez un joli certificat TLS : * Obtenez un joli certificat TLS :
* Soit en utilisant la CA ACME déjà explorée * Soit en utilisant la CA ACME déjà explorée
* Soit en recréant une CA ad hoc interne * Soit en recréant une CA ad hoc interne
* (le ldap étant un service interne, on peut concevoir de le manipuler avec un certificat à validité interne) * (le ldap étant un service interne, on peut concevoir de le manipuler avec un certificat à validité interne)
* Quel matériel cryptographique devez-vous déployer sur le client LDAP ? * Quel matériel cryptographique devez-vous déployer sur le client LDAP ?
* Mettez à jour la configuration pour faire du LDAPS * Mettez à jour la configuration pour faire du LDAPS
* Installez phpldapadmin sur votre machine LDAP pour aider à son administration * Installez phpldapadmin sur votre machine LDAP pour aider à son administration :
* Programmez une sauvegarde régulière vers une autre machine (cron). Modifiez ou supprimez votre annuaire puis restaurez votre sauvegarde, vérifiez. * Téléchargez [http://ftp.fr.debian.org/debian/pool/main/p/phpldapadmin/phpldapadmin_1.2.6.3-0.3_all.deb](http://ftp.fr.debian.org/debian/pool/main/p/phpldapadmin/phpldapadmin_1.2.6.3-0.3_all.deb) puis `apt install ./phpldapadmin_1.2.6.3-0.3_all.deb`). Cela installe un phpldapadmin non fonctionnel mais permet d'installer les dépendances nécessaires
* Téléchargez les sources de phpldapadmin : [https://github.com/leenooks/phpLDAPadmin/archive/refs/tags/1.2.6.6.tar.gz](https://github.com/leenooks/phpLDAPadmin/archive/refs/tags/1.2.6.6.tar.gz)
* Extrayez les sources de phpLDAPadmin dans le dossier (à créer) `/var/www/html/ldap/`
* Copiez le fichier de configuration `/var/www/html/ldap/config/config.php.example` vers `/var/www/html/ldap/config/config.php`
* Connectez-vous à `http://100.120.1.2/ldap/`
* PROFIT !
=== FIN DES QUESTIONS OBLIGATOIRES ===
* Programmez une sauvegarde régulière vers une autre machine (avec cron, que vous aurez besoin d'installer). Modifiez ou supprimez votre annuaire puis restaurez votre sauvegarde, vérifiez.
ACL ACL