TP1 - Mots de passes, clés, certicats



Documents pareils
Cryptographie. Master de cryptographie Architectures PKI. 23 mars Université Rennes 1

SSH. Romain Vimont. 7 juin Ubuntu-Party

TP Sur SSH. I. Introduction à SSH. I.1. Putty

Table des matières Hakim Benameurlaine 1

Anas Abou El Kalam Sécurité SSH SSH

SSH, le shell sécurisé

Serveur de partage de documents. Étude et proposition d'une solution afin de mettre en place un serveur de partage de documents.

M2-RADIS Rezo TP13 : VPN

Secure SHell. Faites communiquer vos ordinateurs! Romain Vimont ( R om)

Sécurité du Système d Information. Mini PKI

Installation et utilisation d'un certificat

Les commandes relatives aux réseaux

TP2 - Conguration réseau et commandes utiles. 1 Généralités. 2 Conguration de la machine. 2.1 Commande hostname

Compte-rendu de projet de Système de gestion de base de données

Accès aux ressources informatiques de l ENSEEIHT à distance

Réaliser un inventaire Documentation utilisateur

Installation d'un serveur sftp avec connexion par login et clé rsa.

Projet Administration Réseaux

Service de certificat

Serveur Linux : FTP. Mise en place d un service FTP sous Linux. Bouron Dimitri 20/04/2014

Sécurité de l'information

Installation d OwnCloud 8.0 sous Debian Avec connexion des utilisateurs active directory et mise en place de HTTPS

Note : Ce tutoriel a été réalisé sur GNU/Linux (Ubuntu) avec un serveur LAMP installé en local.

Antisèches Informatiques. Configuration et utilisation de openssh. Sommaire. Openssh pour linux. Installation. 1 sur 24 04/06/ :04

Client Kiwi Backup : procédures d'installation et de mise à jour. Gilles Arnoult, Clément Varaldi

Installation du transfert de fichier sécurisé sur le serveur orphanet

titre : CENTOS_CUPS_install&config Système : CentOs 5.7 Technologie : Cups Auteur : Charles-Alban BENEZECH

WEBMESTRE : CONCEPTION DE SITES ET ADMINISTRATION DE SERVEURS WEB

Introduction à Linux (pour le HPC) «Linux 101» Présentation :

ftp & sftp : transférer des fichiers

TP1 - Prise en main de l environnement Unix.

Le service FTP. M.BOUABID, Page 1 sur 5

LES ACCES ODBC AVEC LE SYSTEME SAS

TP réseaux 4 : Installation et configuration d'un serveur Web Apache

Polux Développement d'une maquette pour implémenter des tests de sécurité

Cyberclasse L'interface web pas à pas

Services Réseau SSH. Michaël Hauspie. Licence Professionnelle Réseaux et Télécommunications

La sécurité avec SSH. Atelier cctld Dakar, Sénégal. Hervey Allen

Atelier Le gestionnaire de fichier

Le protocole SSH (Secure Shell)

TER Master Informatique : Etude du Single Sign-On (SSO) Sujet proposé par Francine HERRMANN. Etudiants LELOUP Julien & VAYEUR Guillaume

JetClouding Installation

Guide d'initiation aux. certificats SSL. Faire le bon choix parmi les options qui s'offrent à vous en matière de sécurité en ligne. Document technique

SQUID Configuration et administration d un proxy

NOTE: Pour une meilleure sécurisation, nous vous recommandons de faire l installation des outils web à l intérieur d un serveur virtuel.

il chiffrer les flux d'authentification et les flux de données il n'y a pas de soucis d'ouverture de ports avec des modes actif/passif à gérer

Cours 420-KEG-LG, Gestion de réseaux et support technique. Atelier No2 :

TP : Shell Scripts. 1 Remarque générale. 2 Mise en jambe. 3 Avec des si. Systèmes et scripts

DISTANT ACESS. Emna TRABELSI (RT3) Chourouk CHAOUCH (RT3) Rabab AMMAR (RT3) Rania BEN MANSOUR (RT3) Mouafek BOUZIDI (RT3)

Création d'un site dynamique en PHP avec Dreamweaver et MySQL

1 Démarrage de Marionnet

II- Préparation du serveur et installation d OpenVpn :

Installation de Windows 2000 Serveur

PPe jaune. Domingues Almeida Nicolas Collin Leo Ferdioui Lamia Sannier Vincent [PPE PROJET FTP]

Serveur d application WebDev

Tutoriel : Comment installer une compte (une adresse ) sur un logiciel de messagerie (ou client messagerie)?

TP 1 : 1 Calculs en binaire, octal et hexadécimal

Un serveur web, difficile?

TP 4 de familiarisation avec Unix

Manuel des logiciels de transferts de fichiers File Delivery Services

CONFIGURATION DU SERVEUR DE MAILS EXIM. par. G.Haberer, A.Peuch, P.Saade

SERVEUR DE MESSAGERIE

Mise en place d'un Réseau Privé Virtuel

KAJOUT WASSIM INTERNET INFORMATION SERVICES (IIS) 01/03/2013. Compte-rendu sur ISS KAJOUT Wassim

Vade mecum installation et configuration d une machine virtuelle V5.1.0

Aide-Mémoire unix. 9 février 2009

A B A C U S DESCRIPTIF D'INSTALLATION SAAS ABAWEB. septembre 2014 / OM / COB. Version 5.5

Contrôle de la DreamBox à travers un canal SSH

Projet de mise en œuvre d un serveur ftp sur serveur dédié

Procédure d'installation

Installation de la messagerie EMWAC IMS Sur Windows NT4 serveur ou Windows 2000 serveur

TP n 2 : Installation et administration du serveur ProFTP. Partie 1 : Fonctionnement du protocole FTP (pas plus de 15min)

Télécom Nancy Année

Les certificats numériques

Serveur de sauvegardes incrémental

Premiers pas sur e-lyco

FreeNAS Shere. Par THOREZ Nicolas

BTS SIO SISR3 TP 1-I Le service Web [1] Le service Web [1]

Formateurs : Jackie DAÖN Franck DUBOIS Médiapôle de Guyancourt

FORMATION PcVue. Mise en œuvre de WEBVUE. Journées de formation au logiciel de supervision PcVue 8.1. Lieu : Lycée Pablo Neruda Saint Martin d hères

Les différentes méthodes pour se connecter

Comment surfer tranquille au bureau

Protocole SSH-2.0. Tuan-Tu, TRAN. Janvier 2009

Atelier individuel. Linux 101. Frédérick Lefebvre & Maxime Boissonneault frederick.lefebvre@calculquebec.ca U. Laval - Janv. 2014

Introduction. Adresses

Modernisation et développement d applications IBM i Stratégies, technologies et outils. Volubis.fr

Documentation utilisateur, manuel utilisateur MagicSafe Linux. Vous pouvez télécharger la dernière version de ce document à l adresse suivante :

Service WEB, BDD MySQL, PHP et réplication Heartbeat. Conditions requises : Dans ce TP, il est nécessaire d'avoir une machine Debian sous ProxMox

ECOLE POLYTECHNIQUE DSI. Utilisation des serveurs mandataires («proxy») avec les protocoles d usage courant

Installation et mise en œuvre de OpenSSH sous AIX 5L

WINDOWS NT 2000: Travaux Pratiques. -Boîtier partage d'imprimante- Michel Cabaré Janvier 2002 ver 1.0

Installation d OpenVPN

TP LINUX : MISE EN PLACE DU SERVEUR DE MESSAGERIE QMAIL

Bind, le serveur de noms sous Linux

[ GLPI et OCS pour Gentoo 2006] ArtisanMicro. Alexandre BALMES

La double authentification dans SharePoint 2007

Outils pour la pratique

SSH et compagnie : sftp, scp et ssh-agent

Transcription:

TP1 - Mots de passes, clés, certicats 1 Stockage d'un mot de passe (1/2h) Lorsque l'on stocke un mot de passe sur un serveur, on évite de le stocker "en clair" : on applique d'abord une fonction de hachage, et l'on ne stocke que la version hachée. Ainsi, le mot de passe n'existe en mémoire que temporairement : une fois lorsque l'on dénit le mot de passe, et chaque fois que la machine vérie le mot de passe que l'utilisateur a entré. Par exemple, voici un extrait de /etc/shadow, qui contient les mots de passe des comptes unix locaux (séparé par des ':') root:uapfhwpen5aaa:12745:0:99999:7::: Lisez man crypt. Jouez avec la fonction crypt() : essayez de crypter un même mot de passe avec diérents sels, DES ou MD5 (n'oubliez pas de donner -lcrypt à gcc, et d'inclure l'en-tête crypt.h). Pourquoi utilise-t-on un sel au fait? Est-ce que le mot de passe root ci-dessus est dicile à deviner? Essayez également la commande unix mkpasswd, elle est plus pratique à utiliser au quotidien. 2 Introduction à SSH (40m) 2.1 Quelques rappels sur les clés Le principe d'une paire de clés publique/privée est que toute donnée cryptée avec la clé publique ne peut être décryptée qu'avec la clé privé, et toute signature d'une donnée avec la clé privée peut être vériée avec la clé publique : la signature assure que c'est bien celui qui possède la clé privé qui a fourni la donnée et sa signature. Le principe d'une clé symétrique est que l'on partage en commun une clé qui permet à la fois de chirer et de déchirer. Les algorithmes utilisés sont en général bien plus léger que ceux utilisant une paire de clés publique/privée. 2.2 Le protocole SSH Brièvement, le protocole SSH (Secure SHell) permet à des utilisateurs d'accéder à une machine distante à travers une communication chirée (appelée tunnel). L'établissement d'une liaison passe par deux étapes. Le client établit d'abord un tunnel sécurisé avec le serveur en utilisant un couple de clés privée/publique : le serveur possède une clé privée (qui ne change que lorsqu'on réinstalle entièrement la machine) et les clients ont une copie de la clé publique. Le client utilise la clé publique du serveur pour crypter une clé symétrique dite de session qui est utilisée pour chirer tout le reste des communications. L'authentication de l'utilisateur peut alors être faite sans que le mot de passe soit transmis en clair sur le réseau. Expliquez brièvement la nécessité de l'utilisation de SSH et comment ce protocole garantit à la fois la condentialité, l'authentication (dans les deux sens!) et l'intégrité des données échangées. N'hésitez pas à vous faire un petit schéma pour expliquer l'établissement d'une connexion. Connectez-vous à la machine.enseirb-matmeca.fr. Expliquez pourquoi lorsque vous vous connectez pour la première fois à une machine donnée votre client vous demande si la clé publique récupérée est bien celle du serveur. Pourquoi la clé privé du serveur doit-elle rester secrète? 1

2.3 Assez des mots de passe? Lors de la connexion vers une machine distante, demande à l'utilisateur son mot de passe. Imaginez un administrateur système qui doit exécuter cette opération plusieurs fois par jour... Heureusement, de façon analogue à l'authentication des machines, un utilisateur peut utiliser un couple de clés privée/publique pour s'authentier auprès d'un serveur. 2.3.1 On oublie les mots de passe Voici la marche à suivre : 1. Création d'un couple de clés : -keygen -t rsa, utilisez pour l'instant le choix par défaut pour les 3 questions posées. La clé privée se trouve dans ~/./id_rsa et votre clé publique est dans ~/./id_rsa.pub. 2. Transfert de votre clé publique sur le serveur (utilisez par exemple le serveur.enseirb-matmeca.fr) : username@machine "cat >> ~/./authorized_keys" < ~/./id_rsa.pub (authorized_keys s'appelle selon les versions authorized_keys2). Voyez aussi la commande -copy-id qui permet de le faire bien plus simplement. 3. Vous pouvez désormais vous connecter sur le serveur distant sans mot de passe! Si (n'essayez pas) l'on laissait le droit en lecture sur ~/./id_rsa, râlerait que ce n'est pas sécurisé, pourquoi? Si (n'essayez pas) l'on laissait le droit en écriture sur ~/./authorized_keys, râlerait de nouveau, pourquoi? Je veux fournir à un collègue un accès à ma machine. Quelle est la manière la plus sûre de procéder? 2.3.2 Mode paranoïaque Pour protéger votre clé privée et s'assurer que c'est bien la bonne personne qui utilise la clé, il est possible lors de la création des clés de saisir une passphrase servant à crypter la clé privée, et qui sera donc demandée à chaque connexion pour pouvoir l'utiliser. Recommencez la procédure de création des clés en utilisant cette fois-ci une passphrase. On avait évité d'avoir à taper un mot de passe à l'aide d'une paire de clés, mais maintenant on doit taper une passphrase! Mais on a quand même amélioré la sécurité. Pourquoi? (Quelles données passent par le réseau? Pourquoi est-ce notamment intéressant pour des ordinateurs portables?) Pour éviter d'avoir à retaper la passphrase à chaque connexion, on peut utiliser un agent qui va conserver dans un cache votre clé privée décryptée durant toute la durée de votre session sur la machine cliente. 1. Tuez d'abord tout agent que gnome aurait lancé pour vous : killall -agent 2. Initialisez l'agent : -agent 3. Copiez-collez les dénitions de variable d'environnement dans le shell. En pratique on utilisera plutôt eval `-agent` pour le faire directement (attention, ce sont des apostrophes inverses, obtenues avec altgr-7). 4. Ajoutez votre clé au cache de l'agent : -add 5. Essayez de vous connecter sur une autre machine. Alors? 6. Ouvrez une autre fenêtre de terminal. Connectez-vous sur une autre machine. Expliquez. 7. Revenez sur le terminal précédent, lancez -add -d, et réessayez. 8. Essayez de vous connecter en cascade (i.e. un à l'intérieur d'un autre ) sur diérentes machines. Est-ce que cela fonctionne toujours? Remarquez l'option -A. 2

2.4 Transferts de chiers Les commandes scp et sftp permettent de transférer des chiers par l'intermédiaire de. Testez! Essayez aussi de transférer un chier entre deux ordinateurs distants tout en étant sur un troisième. En pratique, scp n'est pas très ecace pour transmettre de nombreux chiers (option -r). Expliquez comment la commande suivante fonctionne et l'importance de l'antislash devant le ; : tar c myproject monserveur cd foobar \; tar x 2.5 Achage X distant Le protocole permet aussi d'exporter un achage X11 vers votre machine cliente à l'aide de l'option -X. 3 Comment cascader du (20m) Supposons que vous être à l'extérieur de l'école et vous souhaitez vous connecter à travail64, mais comme seule.enseirb-matmeca.fr est visible depuis l'extérieur, il est nécessaire de passer par elle. Il y a trois solutions. La plus simple est de lancer.enseirb-matmeca.fr et à l'intérieur, de lancer travail64. C'est un peu pénible, et pour les redirections de ports c'est encore plus pénible. mamachine.enseirb matmeca.fr travail64 d d Une deuxième solution est d'eectuer une redirection de port : lancer un premier.enseirb-matmeca.fr -L 2222:travail64:22 qui ouvre sur votre machine une redirection (sur le port 2222) vers le port de travail64. Laissez-le tourner, et dans un autre terminal sur votre machine, un simple localhost -p 2222 sut alors à se connecter au d de travail64 via.enseirb-matmeca.fr. mamachine.enseirb matmeca.fr travail64 2222 22 d 22 d Une troisième solution est d'utiliser ProxyCommand : dans votre ~/./config, ajoutez les lignes suivantes : 3

Host montravail64 User monlogin ProxyCommand.enseirb-matmeca.fr /bin/nc -w 600 travail64 22 Ces deux lignes indiquent que lorsque l'on lance montravail64, plutôt qu'ouvrir une connection TCP vers un port 22, va lancer un autre vers.enseirb-matmeca.fr, et faire exécuter nc dessus pour établir la connection vers le port de travail64. mamachine.enseirb matmeca.fr travail64 2222 22 d 22 d Note : toutes ces méthodes fonctionnent bien sûr aussi pour scp et sftp. 4 Gestion de certicats (30m) Le système de clé publique/privée, c'est pratique dans une certaine mesure, mais ça ne passe pas à l'échelle si l'on veut qu'un grand nombre de clients ou serveurs vérient l'identité d'un grand nombre d'autres clients ou serveurs. Typiquement, que le navigateur de n'importe qui puisse vérier l'identité d'un serveur web lorsqu'il utilise le protocole https. On utilise pour cela une tierce personne, une Autorité de Certication, qui délivre des certicats, que tout un chacun peut alors vérier à l'aide du certicat racine de cette autorité. Mettons cela en uvre à l'aide d'openssl, en jouant les trois rôles du mécanisme : autorité, serveur et client. Fabriquons d'abord les trois rôles : mkdir autorite mkdir serveur mkdir client 4.1 Autorité de certication A priori il est rare d'avoir à jouer ce rôle de tierce personne, on préfère utiliser les services de Verisign, CAcert,... Il reste intéressant de comprendre ce qui se passe. Prenons donc d'abord le rôle de l'autorité cd autorite/ Il s'agit essentiellement de créer un certicat racine : openssl req -x509 -newkey rsa:4096 -keyout ca_priv.key -out ca.crt Des questions sont posées, pour enregistrer dans le certicat des informations utiles pour se souvenir de qui gère cette autorité. Vous pouvez garder les réponses par défaut. On peut revoir le contenu du certicat à l'aide de openssl x509 -in ca.crt -text -noout 4

Le chier ca_priv.key est la partie privée du certicat, à ne pas divulguer à qui que ce soit d'autre. C'est justement là que s'appuie l'autorité : seul celui qui connait le contenu de ca_priv.key pourra créer des certicats. ca.crt est par contre le certicat racine, à diuser aux clients, on en reparle plus loin. Il nous reste à créer un répertoire où seront gérés les certicats (ces répertoires et chiers correspondent à la conguration par défaut d'openssl) : mkdir democa mkdir democa/newcerts touch democa/index.txt echo 00 > democa/serial 4.2 Requête du serveur Jouons maintenant le rôle d'un administrateur de serveur qui veut s'authentier auprès d'un client. cd../serveur/ Pour cela il a besoin que l'autorité de certication lui délivre un certicat. Il doit donc d'abord faire la requête (attention à ne pas remettre -x509, car il s'agit maintenant d'une requête de certication) : openssl req -newkey rsa:4096 -nodes -keyout priv.key -out cert.csr De même, on peut enregistrer des informations utiles, les valeurs par défaut iront bien, sauf le champ Common Name, qui ne doit pas être vide. Avec la conguration par défaut, les champs countryname, stateorprovincename, et organizationname doivent être les mêmes que l'autorité. Le chier priv.key est la partie privé du certicat, à ne pas divulguer à qui que ce soit. C'est justement là que s'appuie la certication : seul celui qui connait le contenu de priv.key pourra être certié. Il faut par contre transmettre cert.csr à l'autorité de certication. cp cert.csr../autorite/ Changeons de casquette, nous sommes de nouveau l'autorité de certication. cd../autorite/ Nous vérions l'identité de l'administrateur du serveur par un moyen classique (registre d'industrie, carte d'identité, connaissance personnelle,...), et que cela correspond bien à ce qui est écrit dans le certicat demandé : openssl req -in cert.csr -text -verify -noout et nous validons alors la requête : openssl ca -cert ca.crt -keyfile ca_priv.key -in cert.csr -out cert.crt Nous pouvons alors transmettre cert.crt, le certicat ainsi fraîchement créé, à l'administrateur du serveur. cp cert.crt../serveur/ Reprenons donc la casquette d'administrateur de serveur. Nous pourrions par exemple congurer Apache pour utiliser ce certicat, il lui faut à la fois la partie publique, et la clé privée, nécessaire pour s'authentier vraiment, typiquement ceci dans /etc/apache2/sites-available/monsite-ssl : SSLCertificateFile cert.crt SSLCertificateKeyFile priv.key 5

Faisons-le avec un serveur web plus rapide à installer, bozohttpd : apt-get source bozohttpd cd bozohttpd-* make -f Makefile.boot./bozohttpd -b -f -I 1234 -Z ~/serveur/cert.crt ~/serveur/priv.key $PWD Il faut éventuellement taper la passphrase, et le serveur web est prêt. 4.3 Client Souvent, le client possède déjà le certicat racine de l'autorité de certication, installé typiquement par la distribution système dans /etc/ssl/certs. Le navigateur vérie alors que le certicat fourni par le serveur (et authentié par challenge sur la clé privée) a bien été délivré par l'autorité, on peut le faire à la main ainsi : cd../client/ cp../autorite/ca.crt cp../serveur/cert.crt openssl verify -CAfile ca.crt cert.crt Si le client ne possède pas déjà le certicat racine de l'autorité de certication, le navigateur web du client ache un avertissement de sécurité et propose d'utiliser le certicat tout de même : essayez de lancer un navigateur sur https ://localhost :1234/, et demandez à voir le certicat, constatez que c'est bien celui que vous avez émis. Quel risque peut-il y avoir à accepter le certicat sans vérier l'empreinte? Si le client voit en personne l'administrateur du site web et conrme avec lui l'identité de la signature du certicat fourni par le serveur web, est-ce qu'il peut alors faire conance au site? Pourquoi c'est dommage de faire ainsi? Ajoutez l'exception au navigateur, constatez que l'on obtient bien la page web (même si c'est bien sûr une page 404), fermez complètement le navigateur, relancez-le. Que constate-t-on? Refabriquez un autre certicat (ne changez pas d'autorité de certication, juste de certicat, et mettez un Common Name diérent sinon il y aura un conit dans la base avec le certicat précédent), relancez le serveur web avec ce certicat, et rechargez la page dans le client, que constate-t-on? En eet, le client n'a récupéré que le certicat du serveur, et pas le certicat racine. Plutôt qu'ajouter ce certicat seulement, ajoutez le certicat racine, c'est-à-dire celui de l'autorité de certication, autorite/ca.crt (c'est en général dans le panel de préférences, dans les options avancées de sécurité). Rechargez la page, constatez qu'il n'a pas demandé de conrmation : il sut de conrmer seulement le certi- cat de l'autorité, pour que tous les certicats produits par cette autorité soient acceptés. Regénérez encore un autre certicat (en changeant de nouveau le Common Name) et relancez le serveur web pour conrmer. 4.4 Bilan Au nal, il sut que Les clients récupèrent auprès de l'autorité de certication son certicat racine. Les administrateurs de serveurs obtiennent auprès de l'autorité des certicats et les clients peuvent alors être sûrs de l'identité des administrateurs des serveurs, sans avoir à interagir directement avec eux. Où sont les maillons faibles? 6