diff --git a/README.md b/README.md index 6ada232..8b6a2aa 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ Authentification et sécurité des données pour les LP DLIS - IUT Vannes * [Cours Cryptographie (2*1h)](cours-crypto.md) * [TD crypto asymétrique (2h)](td-crypto.md) * [Passwords (2h)](td-passwords.md) -* [TP HTTPS / Authentification mutuelle (4,5h)](tp-https.md) +* [TP HTTPS / Authentification mutuelle (6h)](tp-https.md) * [Cours Authentification (1h)](cours-auth.md) * [TP Sécurité des BD (12h)](tp-bd.md) * [LDAP (10,5h)](tp-ldap.md) diff --git a/tp-https.md b/tp-https.md index 35f43e9..4189f00 100644 --- a/tp-https.md +++ b/tp-https.md @@ -32,6 +32,55 @@ 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. +Apache - Serveur HTTP +===================== + +Un serveur Apache est déjà installé par défaut. Validez que la connexion à l'Apache du serveur retenu dans la question 1 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 2 : 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 3 : 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 4 : 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 `...`, 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 5 : Quelles modifications/ajouts avez-vous fait ? + +> Question 6 : Retrouvez dans Wireshark la phase d'authentification. + Connexion en clair ==================