Vous êtes sur la page 1sur 8

Résumé Méthode d’authentification

Kerberos est un protocole d'authentification réseau qui repose sur un mécanisme de clés secrètes


(chiffrement symétrique) et l'utilisation de tickets, et non de mots de passe en clair, évitant ainsi le risque
d'interception frauduleuse des mots de passe des utilisateurs. 

Fonctionnement
Dans un réseau simple utilisant Kerberos, on distingue plusieurs entités :

 le client (C), a sa propre clé secrète Kc

 le serveur (S), dispose aussi d'une clé secrète Ks

 le service d'émission de tickets (TGS pour Ticket-Granting Service), a une clé secrète  KTGS et connaît la clé
secrète Ks du serveur

 le centre de distribution de clés (KDC pour Key Distribution Center), connaît les clés secrètes Kc et  KTGS
Le client C veut accéder à un service proposé par le serveur S.
La première étape pour le client consiste à s'identifier auprès du centre de distribution de clés (KDC). Le client
a une clé secrète Kc, celle-ci est également connue par le serveur de distribution. Le client envoie son nom au
serveur de distribution et lui indique le TGS qui l'intéresse. Après vérification sur l'identité du client (cette partie
dépend des implémentations, certains serveurs utilisent des mots de passe à usage unique), le serveur de
TTGS. Ce ticket autorise le client à faire des requêtes auprès du TGS.
distribution lui envoie alors un ticket 

Ce ticket  TTGS est chiffré par le serveur de distribution avec la clé du TGS (KTGS). Il contient notamment
des informations sur le client mais également la clé utilisée pour établir la communication entre le client et le
TGS. Cette clé de session, nous la noterons  KC ,TGS. Le client reçoit également cette clé de session 
KTGS, elle a toutefois été chiffrée avec la clé secrète Kc du client.
À ce stade, le client possède un ticket  TTGS (qu'il ne peut pas déchiffrer) et une clé  KC ,TGS.
La deuxième étape est l'envoi par le client d'une demande de ticket auprès du TGS. Cette requête contient un
identifiant (des informations sur le client ainsi que la date d'émission) chiffré avec la clé de session 
KC ,TGS (qui est trouvée par le client en déchiffrant les informations reçues depuis le serveur de distribution
avec sa clé secrète). Le client envoie aussi le ticket qui lui avait été transmis par le serveur de distribution.
Le TGS reçoit alors son ticket et il peut le déchiffrer avec sa clé secrète  K TGS. Il récupère le contenu du
ticket (la clé de session) et peut ainsi déchiffrer l'identifiant que lui a envoyé le client et vérifier l'authenticité des
requêtes. Le TGS peut alors émettre un ticket d'accès au serveur. Ce ticket est chiffré grâce à la clé secrète du
serveur Ks. Le TGS envoie aussi ce ticket chiffré avec la clé secrète du serveur Ks et la clé de
session Kc,s chiffrée à l'aide de la clé  KC ,TGS au client pour les communications entre le serveur final et le
client.
La troisième étape est le dialogue entre le client et le serveur. Le client reçoit le ticket pour accéder au serveur
ainsi que l'information chiffrée contenant la clé de session entre lui et le serveur. Il déchiffre cette dernière
grâce à la clé  K
C ,TGS. Il génère un nouvel identifiant qu'il chiffre avec Kc,s et qu'il envoie au serveur
accompagné du ticket.
Le serveur vérifie que le ticket est valide (il le déchiffre avec sa clé secrète Ks) et autorise l'accès au service si
tout est correct.

Sécurité
Une fois qu'un client s'est identifié, celui-ci obtient un ticket (généralement, un fichier texte - mais son contenu
peut aussi être stocké dans une zone de mémoire sécurisée). Le ticket joue le rôle d'une carte d'identité à
péremption assez courte, huit heures généralement. Si nécessaire, celui-ci peut être annulé prématurément. Sous
les systèmes Kerberos comme celui du MIT, ou de Heimdal, cette procédure est généralement appelée via la
commande « kdestroy ».

La sécurité de Kerberos repose sur la sécurité des différentes machines qu'il utilise. Une attaque sur le serveur de
clés serait dramatique car elle pourrait permettre à l'attaquant de s'emparer des clés privées des clients et donc de
se faire passer pour eux. Un autre problème qui pourrait survenir sur la machine du client est le vol des tickets. Ils
pourraient être utilisés par une tierce personne pour accéder aux services offerts par les serveurs (si la clé entre le
client et le serveur est connue).

L'expiration du ticket permet de limiter les problèmes liés au vol des tickets. De plus, un ticket peut contenir
l'adresse IP du client et le ticket n'est alors valable que s'il est employé depuis cette IP (ce champ est toutefois
optionnel dans Kerberos, qui peut tout à fait être utilisé sur un réseau attribuant dynamiquement les IP au travers
de DHCP). Une attaque sur les identifiants échouera car Kerberos leur ajoute un élément. Cela évite les attaques
par renvoi d'identifiants qui auraient été interceptés. Les serveurs conservent l'historique des communications
précédentes et peuvent facilement détecter un envoi frauduleux.

L'avantage de Kerberos est de limiter le nombre d'identifiants et de pouvoir travailler sur un réseau non sécurisé.
Les identifications sont uniquement nécessaires pour l'obtention de nouveaux tickets d'accès au TGS.

DICP
Disponibilité, Intégrité, Confidentialité, Preuve (cette dernière est parfois remplacée par la Traçabilité : on parle
donc aussi parfois de DICT).

L'authentification unique (en anglais Single Sign-On : SSO) est une méthode permettant à un utilisateur


d'accéder à plusieurs applications informatiques (ou sites web sécurisés) en ne procédant qu'à une
seule authentification.

Objectifs

 simplifier pour l'utilisateur la gestion de ses mots de passe.


 simplifier la gestion des données personnelles détenues par les différents services en ligne, en les
coordonnant par des mécanismes de type méta-annuaire ;
 simplifier la définition et la mise en œuvre de politiques de sécurité.

Avantages
Les avantages de l'authentification unique incluent :

 la réduction de la fatigue de mot de passe : manque de souplesse liée à l'utilisation de différentes


combinaisons de nom d'utilisateur et de mot de passe1 ;
 la réduction du temps passé à saisir le même mot de passe pour le même compte ;
 la réduction du temps passé en support informatique pour des oublis de mots de passe2 ;
 la centralisation des systèmes d'authentification ;
 la sécurisation à tous les niveaux d'entrée/de sortie/d'accès aux systèmes sans sollicitation multiple
des utilisateurs ;
 la centralisation des informations de contrôles d'accès pour les tests de conformités aux différentes
normes.

Un proxy inverse (reverse proxy) est un type de serveur, habituellement placé en frontal de serveurs web.
Contrairement au serveur proxy qui permet à un utilisateur d'accéder au réseau Internet, le proxy inverse
permet à un utilisateur d'Internet d'accéder à des serveurs internes. Une des applications courantes du proxy
inverse est la répartition de charge (load-balancing).

Principe de fonctionnement
Le proxy inverse est installé du côté des serveurs Internet. L'utilisateur du Web passe par son intermédiaire
pour accéder aux applications de serveurs internes. Le proxy inverse est parfois appelé substitut (surrogate).

En informatique, la répartition de charge (en anglais : load balancing) désigne le processus de répartition


d’un ensemble de tâches sur un ensemble de ressources, dans le but d’en rendre le traitement global plus
efficace. Les techniques de répartition de charge permettent à la fois d’optimiser le temps de réponse pour
chaque tâche, tout en évitant de surcharger de manière inégale les nœuds de calcul.
En informatique, une zone démilitarisée, ou DMZ (en anglais, demilitarized zone) est un sous-réseau séparé
du réseau local et isolé de celui-ci et d'Internet (ou d'un autre réseau) par un pare-feu. Ce sous-réseau contient
les machines étant susceptibles d'être accédées depuis Internet, et qui n'ont pas besoin d'accéder au réseau
local.
Les services susceptibles d'être accédés depuis Internet seront situés en DMZ, et tous les flux en provenance
d'Internet sont redirigés par défaut vers la DMZ par le firewall. Le pare-feu bloquera donc les accès au réseau
local à partir de la DMZ pour garantir la sécurité. En cas de compromission d'un des services dans la DMZ, le
pirate n'aura accès qu'aux machines de la DMZ et non au réseau local.

Docker est un logiciel libre Open Source qui permet d’automatiser le déploiement d’applications. C’est une
plateforme de virtualisation par conteneur qui va permettre de concevoir, tester et déployer des applications
rapidement.

Docker Compose, qu’est-ce que c’est ?

Docker Compose est un outil qui permet de décrire (dans un fichier YAML) et gérer (en ligne de
commande) plusieurs conteneurs comme un ensemble de services inter-connectés. Si je travaille
sur une application Rails, je vais par exemple décrire un ensemble composé de 3 conteneurs :

 un conteneur PostgreSQL
 un conteneur Redis
 un conteneur pour le code de mon application
Je pourrai alors démarrer mon ensemble de conteneurs en une seule commande docker-
compose up. Sans Docker Compose, j’aurais dû lancer 3 commandes docker run avec
beaucoup d’arguments pour arriver au même résultat.

Quelle est la différence entre les conteneurs et les machines virtuelles?

Une machine virtuelle (VM - Virtual Machine) « imite » intégralement un serveur. Dans un
serveur virtualisé type, chaque VM « invitée » contient un système d'exploitation complet, avec
ses pilotes, fichiers binaires ou bibliothèques, ainsi que l'application elle-même. Chaque VM
s'exécute alors sur un hyperviseur, qui s'exécute à son tour sur un système d'exploitation hôte, qui
lui-même fait fonctionner le matériel du serveur physique.

A la base, le concept de conteneurisation permet aux instances virtuelles de partager un système


d'exploitation hôte unique, avec ses fichiers binaires, bibliothèques ou pilotes.
Cette approche réduit le gaspillage des ressources car chaque conteneur ne renferme que
l'application et les fichiers binaires ou bibliothèques associés. On utilise donc le même système
d'exploitation (OS) hôte pour plusieurs conteneurs, au lieu d'installer un OS (et d'en acheter la
licence) pour chaque VM invitée. Ce procédé est souvent appelé virtualisation au niveau du
système d'exploitation.

La virtualisation permet, via un hyperviseur, de simuler une ou plusieurs machines physiques et de


les exécuter sous forme de machines virtuelles (VM) sur un serveur. Chaque machine virtuelle est
dotée d’un OS sur lequel les applications qu’elles supportent sont exécutées.
Parmi les technologies de virtualisation, VMWare, Xen (détenue par Citrix) et KVM (qui s’appuie sur
OpenStack pour la partie Hyperviseur et bénéficie du support RedHat) se classent parmi les plus
populaires et les plus utilisées.

Dans le cadre de la conteneurisation, le container fait directement appel à l’OS de sa machine


physique hôte pour exécuter ses applications. Les conteneurs, partagent le noyau de l’hôte à partir
duquel ils sont déployés. Ainsi, il n’est pas nécessaire d’avoir recours à un hyperviseur pour gérer
l’ensemble des machines virtuelles qui s’exécuteront via les conteneurs déployés.
Parmi les technologies de conteneurisation, on retrouve Docker ou encore son concurrent direct mais
moins connu, CoreOS. Docker, dans sa version entreprise, est orchestré par Swarm, bien qu’à
terme, il semble que Kubernetes semble être la solution qui prendra le dessus.
L’avantage de cette solution, dont Docker est le représentant le plus en vue, est qu’elle apporte une
rapidité de déploiement et de mise en service non négligeable lors de la création des conteneurs et
de l’installation des applications qui y seront hébergées.

La gestion de la configuration est le processus qui consiste à traiter les modifications apportées à
un système de manière à en assurer l'intégrité dans le temps, ce qui implique généralement des
outils et des processus qui facilitent l'automatisation et l'observabilité.
Les avantages de l'utilisation d'un outil de gestion de la configuration
De nombreux avantages de la gestion de la configuration des serveurs proviennent de la
possibilité de définir votre infrastructure sous forme de code. Cela vous permet de :

 Utiliser un système de contrôle de version pour suivre les changements dans votre
infrastructure
 Réutiliser les scripts de provisionnement pour des environnements de serveurs multiples,
tels que le développement, les tests et la production
 Partager des scripts de provisionnement entre collègues pour faciliter la collaboration dans
un environnement de développement standardisé
 Rationaliser le processus de réplication des serveurs, ce qui facilite la récupération en cas
d'erreurs critiques

En outre, les outils de gestion de la configuration vous permettent de contrôler un à plusieurs


centaines de serveurs depuis un emplacement centralisé, ce qui peut améliorer considérablement
l'efficacité et l'intégrité de votre infrastructure de serveurs.

Ansible
Ansible est un outil de gestion de la configuration qui facilite la tâche de mise en place et de
maintenance des serveurs distants, avec une conception minimaliste destinée à rendre les
utilisateurs rapidement opérationnels.

Les utilisateurs écrivent les scripts de provisionnement Ansible dans YAML, une norme de
sérialisation des données user-friendly qui n'est pas liée à un langage de programmation
particulier. Cela permet aux utilisateurs de créer des scripts de provisionnement sophistiqués de
manière plus intuitive par rapport à des outils similaires de la même catégorie.

Ansible est une plate-forme d’orchestration qui permet l’automatisation, la gestion de


la configuration de l’hôte et le déploiement d’applications et de machines virtuelles.
Ansible peut automatiser une gamme de fonctionnalités d’infrastructure informatique,
des tâches simples, quotidiennes et répétitives au provisionnement des machines ou
à l’intégration et au déploiement continus d’applications DevOps.
Ansible est un logiciel de déploiement/configuration à distance, créé par M. De Hann ( Redhat : Cobbler et Func)
et est écrit en python. Il utilise seulement SSH et ne nécessite pas de serveur : une simple station de travail peut
suffire. Il est bon de noter qu'il fonctionne en mode push (de Ansible vers le serveur cible). La machine
hébergeant Ansible ne nécessite que python 2.4+, et Ansible est extensible en n'importe quel langage.

Comportement Idempotent
Ansible garde une trace de l'état des ressources dans les systèmes gérés afin d'éviter de répéter
des tâches qui ont été exécutées auparavant. Si un package était déjà installé, il n'essaiera pas de
l'installer à nouveau. L'objectif est qu'après chaque exécution de provisionnement, le système
atteigne (ou conserve) l'état souhaité, même si vous l'exécutez plusieurs fois. C'est ce qui
caractérise Ansible
Nœud de contrôle
Un nœud de contrôle est un système dans lequel Ansible est installé et configuré pour se
connecter à votre serveur.

Nœuds gérés
Les systèmes que vous contrôlez à l'aide d'Ansible sont appelés nœuds gérés.
Ansible nécessite que les nœuds gérés soient accessibles via SSH, et qu'ils aient Python 2 (version
2.6 ou supérieure) ou Python 3 (version 3.5 ou supérieure) installé.

Inventaire
Un fichier d'inventaire contient une liste des hôtes que vous gérerez à l'aide d'Ansible.

Les inventaires statiques sont généralement créés sous forme de fichiers .ini, mais vous pouvez
également utiliser des inventaires générés dynamiquement, écrits dans n'importe quel langage de
programmation capable de renvoyer JSON.

Tâches
Dans Ansible, une tâche est une unité de travail individuelle à exécuter sur un nœud géré.

Modèle de développement
Un modèle de développement contient une liste ordonnée de tâches, et quelques autres directives
pour indiquer quels hôtes sont la cible de cette automatisation, s'il faut ou non utiliser un
système d'escalade de privilèges pour exécuter ces tâches, et des sections optionnelles pour
définir des variables ou inclure des fichiers

Handlers
Les handlers sont utilisés pour effectuer des actions sur un service, telles que le redémarrage ou
l'arrêt d'un service qui fonctionne activement sur le système du nœud géré. 

Rôles
Un rôle est un ensemble de modèles de développement et de fichiers connexes organisés dans
une structure prédéfinie qui est connue par Ansible. Les rôles facilitent la réutilisation et la
reconversion des modèles de développement en packages partageables d'automatisation
granulaire pour des objectifs spécifiques, tels que l'installation d'un serveur web, l'installation
d'un environnement PHP ou la mise en place d'un serveur MySQL.

Vous aimerez peut-être aussi