0% ont trouvé ce document utile (0 vote)
166 vues108 pages

Cours Services Réseaux

Transféré par

BOUKARE MONE
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
166 vues108 pages

Cours Services Réseaux

Transféré par

BOUKARE MONE
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

M3105 : Services Réseaux Avancés / Supervision

de Réseau

Guillaume Urvoy-Keller

September 12, 2019

1/5
Objectif

Supervision
Réseau: Wireshark, ping, traceroute, smokeping
Système/Application : SNMP, collectd, netdata, syslog, ELK

Installation Services
Services spécifiques : DNS, LDAP
Automatisation : Ansible

2/5
Supervision : Niveau Application / Réseau ou Système

3/5
Organisation du cours

CM/Cours TD/TP
Intro TD analyse de trafic (perf,
Supervision réseau: 1.passif, sécu) item TD Smokeping :
2.actif analyse de mesures actives
Supervision système TP Supervision
Réseau/Système
Configurations Serveurs
(Ansible) TP Ansible
Services : TD DNS et LDAP
DNS TP DNS
LDAP
TP LDAP

4/5
Organisation du cours

Notation : 30 % TP et 70 % examen final


Examen final comporte :
des questions de cours
des questions sur les TPs ) vous devez faire un compte-rendu
électronique pour vous (+ pour l’encadrant suivant ses demandes)

5/5
M3105 - Supervision Réseau Active

Guillaume Urvoy-Keller

September 11, 2018

1 / 30
Supervision Réseau

Cas 1 : un serveur physique hébergeant un serveur Web


Que faut-il monitorer?
Le système :
RAM, CPU, I/O (entrées/sorties disques), réseau
Logs système (/var/log/syslog)
L’application : Nombre de requêtes par seconde? Nombre
d’objets non trouvés?
Logs applicatifs (/var/log/apache2/access.log ou error.log)

2 / 30
Supervision Réseau

Cas 2 : un serveur virtuel (VM) hébergeant un serveur Web


Que faut-il monitorer?
La machine hôte?
La machine virtuelle?
Le réseau
Frontière réseau/système floue avec la virtualisation (voir
transparent suivant)

3 / 30
Frontière Réseau/Système
Le réseau débute dans les serveurs avec des switchs, des règles
de routage/NAT
Ces équipements réseaux virtuels partagent la puissance de
calculs (coeurs/CPUs) avec les services hébergés dans VMs ou
containers

4 / 30
Supervision Réseau

5 / 30
Monitoring Réseau

Passif
Sur un serveur : Wireshark, tshark, tcpdump
Sur un équipement réseau : Netflow, sflow, IPFIX

Actif
Ping, traceroute
Smokeping

6 / 30
Monitoring passif : cas des serveurs

7 / 30
Monitoring réseau sur un serveur

On peut vouloir :
Connaitre le trafic entrant et sortant sur les différentes interfaces
Connaitre les connexions réseaux actives
Capturer le trafic
Naviguer dans le trafic capturé

Différence importante entre un serveur et un switch/routeur


Le switch routeur n’a pas de disque!!

8 / 30
Trafic entrant et sortant

Beaucoup d’outils vont donner des statistiques sur les interfaces :


netstat, ip, sar...

9 / 30
Trafic entrant et sortant

Ces outils vont chercher leurs informations dans ce que le noyau


expose:
1 Soit au travers de système de fichiers virtuels (en mémoire)
/proc et /sys en Unix/Linux
Philosophie unix : tout est fichier
2 Soit au travers d’un moyen de communication avec le noyau
Exemple : socket NETLINK en Linux

10 / 30
Récupération information depuis le noyau

11 / 30
Trafic entrant et sortant

Option 1 : lecture des données exposées par le noyau dans un


système de fichier
On peut le voir en utilisant l’outil strace qui suit les appels système
d’un processus et en regardant les fichiers ouverts.
Example avec netstat:

12 / 30
Trafic entrant et sortant

Option 2 : récupération directement au travers de socket spéciales


appelées socket NETFILTER
Example avec ip:

13 / 30
Connexions actives

Les infos sont récupérées du noyau à nouveau.


On distingue entre les types de sockets :
1 TCP
2 UDP
3 Unix : entre processus dans la machine
4 NETLINK : entre un processus et le noyau
mais également :
1 Socket client : connexion initiée vers la machine
2 Socket serveur : en mode listen

14 / 30
Connexions actives

15 / 30
Capturer le trafic

Wireshark
tcpdump, tshark: capture en ligne de commande
tcptrace: analyse basique d’une trace

16 / 30
Wireshark
Permet de capturer le trafic
Permet aussi de l’analyser (voir TD sur wireshark).
Différents scénarios d’analyse :
1 Vous cherchez une connexion précise et un trafic précis : les
filtres wireshark vous aident.
2 Vous cherchez à comprendre le trafic qui circule sur le lien : par
où commencer? Regarder les paquets l’un après l’autre?
Non, il faut commencer par avoir des résumés de la trace :
protocoles présents, connexions présentes...

17 / 30
Wireshark

Wireshark permet :
Niveau protocole : Quel est le nombre de paquets/octets de
chaque protocole, par exemple Ethernet ou IPv4,IPv6, ou
TCP/UDP..ou DNS, HTTP, etc..?
Niveau connexion : Combien de connexions TCP et de
conversations UDP?
Rq: on dit conversation pour UDP pour le pas dire connexion car
il n’y a pas d’établissement de connexion comme en TCP.

18 / 30
Old school : tcptrace

Un simple résumé de la trace en terme de connexion : 1 grande, 24


petites

19 / 30
Old school : tcptrace
Analyse détaillée grande connexion TCP : back-up time machine. Pas
de retransmission, semble ok...

20 / 30
Filtrer le trafic

Comment s’effectue la capture de paquets en wireshark/tcpdump?


sachant que :
1 Votre programme tourne en mode utilisateur
2 Les paquets sont gérés par le noyau
) il faut traverser la frontière espace utilisateur / espace noyau

21 / 30
Capturer et filtrer en Unix : BPF (Berkerley Packet Filtering)
Quand BPF écoute une interface réseau, le driver donne une
copie du paquet à BPF avant de la donner au système.
Le filtrage se fait dans le noyau
! évite de transférer tous les paquets (frontière espace utilisateur
/ espace noyau) puis de filtrer
Important dans un environnement de production où la mesure ne
doit pas perturber le trafic de production (Ex : une carte à 10 Gb/s
sur laquelle vous ne voulez filtrer qu’un seul de trafic...)

22 / 30
Capturer et filtrer en Unix : BPF (Berkerley Packet Filtering)
BPF prend le filtre donné en entrée de tcpdump et l’exécute dans le
noyau.

23 / 30
Capturer et filtrer en Unix : BPF (Berkerley Packet Filtering)

On peut voir le code avec l’option -d e tcpdump :

Code semble complexe, mais ce sont des références à des numéros


d’octets dans le paquet, des comparaisons :
par exemple ligne 000 et 001 on charge le 12ème octets (numéro de
port dst) et on vérifie si il vaut 80, on continue, sinon on va en ligne 18
et on retourne 0 (pas de match pour le filtre)
24 / 30
de BPF à eBPF

BPF permet ... d’exécuter du code (un filtre) dans le noyau sur
des paquets.
eBPF est une généralisation : exécution (sécurisée)de code sur
des objets traités par le noyau, par exemple des paquets, des
sockets TCP/UDP...ou toute fonction du noyau
Intérêt : pouvoir observer le noyau avec un minimum de
perturbation ! utile en production!!

25 / 30
de BPF à eBPF
Illustration des capacités d’eBPF : les outils développés par Brendan
Gregg (Netflix) pour monitorer le réseau, le système, les
applications....

Figure: Source: http://www.brendangregg.com/ebpf.html

26 / 30
Monitoring passif: cas switch/routeur physique/virtuel

27 / 30
Netflow, sFlow, port mirrorring
Choses à savoir pour faire des mesures en réseau :
Un switch/routeur physique n’a pas de disque
Un switch/routeur a des éléments programmables (circuits
ASICs) rapides et une CPU centrale lente : fast path et slow path
respectivement
Un switch/routeur virtuel a aussi un fast path (implémenté dans le
noyau) et un slow path quand on transite vers l’espace utilisateur

Figure: Source: http:


//www.soi.wide.ad.jp/class/20020032/slides/06/img/13.png
28 / 30
Netflow, sFlow, port mirrorring

pour faire des mesures :


1 On recopie les paquets sur une interface spéciale : port mirroring
2 On garde des infos en mémoire RAM (de la CPU centrale) sur les
paquets ! goulet d’étranglement possible (slow path):
Neflow: on garde en mémoire une ligne par
connexion/conversation et on exporte toutes les 5 min vers une
machine appelée collecteur
sFlow: on filtre les paquets et on envoie vers l’en-tête vers le
collecteur : pas de calcul côté routeur pour trouver les
connexions. Une sorte de port mirroring plus intelligent.

Echantillonnage
En Netflow/sFlow, on un paramètre d’échantillonnage (ex : on traite un
paquet sur 100 ou 1000...) pour ne pas surcharger le routeur/switch.
Ex : Facebook utilise sflow sur tous ces équipements et échantillonne
un paquet sur 30000!

29 / 30
Netflow

Figure: Source: Cisco


30 / 30
M3105 - Mesures actives : ping, traceroute,
smokeping

Guillaume Urvoy-Keller

July 16, 2018

1 / 14
Ping

2 / 14
Ping

Envoie réception de paquet ICMP (Internet Control Message


Protocol)
Code (dans l’en-tête ICMP): echo request et echo reply
Mesure du temps d’aller-retour (RTT)

3 / 14
Ping

Example

4 / 14
Traceroute

5 / 14
Traceroute

Traceroute peut envoyer des paquets


ICMP
UDP valeur par défaut
TCP
avec TTL croissant de 33434 à 33534 ....
et reçoit des routeurs des paquets ICMP code 11 (TTL expired) +
une partie du paquet détruit

6 / 14
Traceroute

Comportement typique : un paquet UDP envoyé et son en-tête


encapsulée dans le paquet ICMP renvoyé par le routeur

7 / 14
Traceroute
Bonne pratique : Les ISPs doivent configurer leurs routeurs pour
répondre à traceroute (répondre en ICMP)
mais, les ISPs veulent prévenir des attaques ) limitation du
débit de réponse du type x paquets par secondes
46 % des routeurs (campagne de mesures 2014-2015, + de 1000
routeurs de l’Internet) :
envoie continue de paquets au routeur qui expirent
En rouge les paquets sans réponse, en noir avec réponse

8 / 14
Limitation débit de réponse des routeurs aux messages
ICMP
Débit fonction de la marque du routeur.
Valeurs typiques : 1 paquet-par-seconde (pps), 10 pps, 50 pps, 100
pps, 500 pps

Figure: Riccardo Ravaioli, Guillaume Urvoy-Keller, Chadi Barakat:


Characterizing ICMP rate limitation on routers. ICC 2015

9 / 14
Smokeping

10 / 14
Généralisation ping
Pourquoi ne pas faire l’équivalent d’un ping sur différents protocoles
ou différentes applications?
Exemples :
en TCP, on envoie un SYN, on attend un SYN-ACK et on mesure
le temps
en HTTP, on envoie un GET et on attend un 200 OK

11 / 14
Smokeping

Ping généralisé :
« Ping » niveau HTTP ! un curl sur une page
« Ping » niveau SSL ! openssl sur un serveur
« Ping » d’un serveur DNS ! requête DNS
Niveau application : LDAP, NFS
Représentation graphique avec MRTG
Base de données RRD (Round Robin Database) :
Base de données spécialisées pour stoker des séries temporelles
Occupe une taille fixe sur le disque. Les données plus anciennes
sont stockées avec une granularité moins fine

12 / 14
Smokeping

On configure les méthodes de mesure utilisées (Fichier Probes) et les


listes de machines sur lesquelles on les applique (Fichier Targets)

13 / 14
Smokeping

14 / 14
M3105 - Supervision Système/Application : SNMP

Guillaume Urvoy-Keller

July 13, 2018

1 / 15
Simple Network Management Protocol

Très ancien protocole


Pas seulement protocole mais :
1 Stockage et nomage des données
2 Un protocole pour y accéder
Implémenté dans tous les équipements : serveurs, routeurs,
imprimantes, points d’accès wifi, caméra IP
SNMP v1 (1988) n’est plus utilisé et non compatible avec SNMP
V2
SNMP v2 : RFC 1441 (1993)
SNMP v3 = SNMP v2 + crypto

2 / 15
SNMP

Vocabulaire :
Agent : service qui tourne dans serveurs, routeurs, imprimantes,
points d’accès wifi, caméra IP et maintien base de données
Manager : service qui interroge l’agent avec des messages GET
(récupération valeur) et des messages SET (écriture d’une
valeur, par exemple le nom de l’équipement)
L’agent peut aussi être configuré pour envoyer des alertes - trap
Protocole SNMP au dessus d’UDP (questions et réponses
simples et courtes)

3 / 15
Communication Agent/Manager

Figure: Source : https://en.wikipedia.org/wiki/Simple_Network_


Management_Protocol#/media/File:
SNMP_communication_principles_diagram.PNG

4 / 15
MIBs SNMP

Une base de données d’un agent s’appelle une MIB :


Management Interface Base
En fait, un agent implémente une ou plusieurs MIB :
Une MIB de base que l’on trouve partout, la MIB-2
des MIBs particulières suivant que l’équipement est un serveur
Web, un serveur Radius.

5 / 15
SNMP

Pourquoi SNMP reste intéressant?


1 Parce qu’on le trouve sur tous les équipements réseau.
2 Parce que les bases de données SNMP sont très riches.
Pourquoi est-ce simple d’utilisation (un manager sait lire toutes les
données d’un agent si il a les mots de passe)?
1 Parce que les MIBs sont normalisées et on a une adresse unique
dans un grand arbre que tout le monde connait
Les objets dans chaque MIB ont un adresse unique ) le
paramètre sys.Desc qui est une chaine de caractère s’appelle
toujours avec un GET iso.3.6.1.2.1.1.1.0

6 / 15
Richesse SNMP

Des infos sur le système, les interfaces réseaux, les connexions TCP
en cours, le hardware, les processus qui tournent

7 / 15
Arbre des MIBs

8 / 15
MIBs d’un agent

Tout équipement doit implanter la MIB-2, i.e. gérer les objets de


cette MIB (RFC 1213) :
Statistiques sur les interfaces (vitesse, MTU, octets
envoyés/reçus, etc.)
Informations sur le système : localisation, contact
En plus de la MIB-2, un agent implantera :
Des MIBs standardisées supplémentaires
Ex : BGP version 4 MIB (RFC 1657), RADIUS Authentication
Server MIB (RFC 2619)
Des MIBS propriétaires sous la partie privé de l’arbre

9 / 15
Contrôle d’accès SNMP

Communauté SNMP (v1 et v2) = mot de passe


Une communauté est associée à des droits : read-only,
read-write
public : read-only
private : read-write
Chaque communauté snmp peut limiter les accès à des objets !
notion de vues
Communauté envoyé en clair en SNMP v2
Il existe un « authentication trap » pour savoir si quelqu’un a
essayé de se connecter avec un mauvais mot de passe
On indique en plus l’adresse IP du manager

10 / 15
Contrôle d’accès
Fichier de configuration snmpd.conf d’une machine Debian

11 / 15
Managers

12 / 15
Différentes approches

1 On utilise un outil spécifique


Ces outils interrogent en SNMP et font les affichages
Ils supportent des pluggins qui s’installent sur les serveurs (en
plus des agents SNMP) pour récupérer de données niveau
applicatif
Ex: Nagios, Observium (http://demo.observium.org), Cacti,
Munim
2 Pour le cas des serveurs, on utilise des suites d’outils qui
1 collectent les données bas-niveau (SNMP ou niveau applicatif)
2 les écrivent dans une base de données
3 Offre un moteur d’affichage pour créer ses propres pages Web
Ex: Collectd + Graphite + Grafana ou Telegraph

13 / 15
Nagios

Avantage Nagios and co.: fonctionne pour tous les équipements


(serveur...caméra IP)
14 / 15
Grafana

Avantage collectd+graphite+grafana : hautement customisables mais


réservé aux serveurs.
15 / 15
M3105 : Ansible - Configuration automatique de
serveurs/services

Guillaume Urvoy-Keller

July 16, 2018

1 / 12
Ansible

Automatisation Configuration
Cycle typique :
1 Installation serveur
2 Configuration Ansible

2 / 12
Configuration

Ce que l’on veut automatiser :


installation de package
démarrage/re-démarrage de services
copies de fichier, par exemple page d’accueil serveur Web.
De plus, on veut :
pouvoir configurer plein de machines à la fois
Ex: 50 machines viennent d’être démarrées sur un cloud public ou
privé et il faut les configurer
appliquer une configuration fonction de la distribution de la
machine
Ex : yum install apache2 si Centos et apt install apache2 si
Debian/Ubuntu
avoir un retour clair sur ce qui a été fait/ce qui a échoué

3 / 12
Ansible et ses concurrents

Les concurrents les plus connus :


Chef et Puppet
Puppet
Ansible

4 / 12
Ansible et ses concurrents

Modèle Pull pour Chef/Pupplet


on installe un logiciel sur le serveur à configurer et ce client va
interroger un serveur central

Modèle Push pour Ansible


le serveur central pousse directement la configuration en ssh

5 / 12
Ansible - caractéristiques

Fichiers de configuration simples à écrire et à lire : pas de


programmation complexe!
Notion de Playbook : ensemble de commandes à appliquer pour
une certaine tâche
Ex : playbook configuration base serveur centos ou playbook
apache
Notion de Role : niveau d’abstraction au dessus d’un playbook
Ex: permet d’appliquer au serveur centos-apache les rôles
centos et apache.
Ex: si serveur Ubuntu, alors on appliquera les rôles ubuntu et
apache

6 / 12
Ansible Galaxy
Ansible Galaxy : communauté utilisateurs Ansible s’échange des
fichiers de configuration de rôles

7 / 12
Playbook

Ecrits en YAML
name: Configure webserver with nginx
hosts: testserver
sudo: True
tasks:
name: install nginx
apt: name=nginx update_cache=yes
name: copy nginx config file
copy: src=files/default dest=/etc/nginx/sites available/default
name: enable configuration
file: >
dest=/etc/nginx/sites enabled/default
src=/etc/nginx/sites available/default
state=link
name: copy index.html
template: src=templates/index.html.j2 dest=/usr/share/nginx/html/index.html mode=0644
name: restart nginx
service: name=nginx state=restarted

8 / 12
Playbook

En-tête : configuration générale


Tâches : liste d’action séquentielle à exécuter sur serveurs, via des
modules
Modules : prise en charge d’une action. Ex: modules apt ou service

9 / 12
Playbook

Variables : au début d’un playbook, Ansible scan la machine cible et


récupère des infos (type de distribution, adresse IP, ...).
Ex : module template va le fichier index.html.j2 et l’instancier
<html>
<head>
<title>
Welcome to ansible
</title> </head>
<body>
<h1>
nginx, configured by Ansible
</h1>
<p>
If you can see this, Ansible successfully installed nginx.
</p>
<p>
{{ ansible_managed }}
</p>
</body>
</html>

10 / 12
Ansible Playbook

Dans le playbook, on précise les serveurs cibles.


Le serveur testserveur dans le cas précédent
On peut aussi faire des groupes de serveurs qui seront traités en
parallèles. Ex : [web] à la place de testserveur

11 / 12
Ansible Tower

Ansible est open-source et supporté par Red-hat


Red-hat vend un produit qui utilise Ansible : Ansible Tower.
Ajoute une interface graphique, simplifie encore l’automatisation
et le suivi.
Vise le marché des devops

12 / 12
M3105 - DNS : Domain Name Service

Guillaume Urvoy-Keller

July 16, 2018

1 / 11
DNS

I Base de données distribuée implantée par une hiérarchie de


serveurs de noms
I Protocole de niveau applicatif
I Protocole client/serveur
I Suite de requêtes/réponses
I Utilise UDP comme couche transport
I Port : 53
I UDP est suffisant car requêtes/réponses tiennent dans un
datagramme
I Avec TCP, il faudrait établir la cx ! perte de temps!
I Si requête (ou réponse perdue) le client réémet au bout d’un
certain temps
I Pleins de clients : nslookup (windows/unix), host, dig

2 / 11
Exemple client : dig

dig montre bien la structure du paquet DNS avec ses différentes


parties (question, réponse, etc.)

3 / 11
Une base de données distribuées

Les serveurs roots connaissent les serveurs TLD qui connaissent les
serveurs ayant autorités.
Seuls les serveurs ayant autorité contiennent les bases de données
des sites ! c’est ce que l’on veut apprendre à configurer en M3105

4 / 11
Le Resolver

Ne fait pas partie de la hiérarchie


Proxy entre les clients locaux et les serveurs DNS

Figure: https://labs.ripe.net/Members/gih/dnsfig2.png

5 / 11
Base de donnée d’un serveur ayant autorité

Une compagnie possède


I Des adresses IPs
I Un nom de domaine

donc
Une compagnie possède
I Une zone directe nom ! adresse IP
I Une zone inverse adresse IP ! nom

6 / 11
Arbre des zones
Toutes les zones (directes et inverses) sont dans le même arbre de
référence.

Figure: Source : https://blog.apnic.net/author/roman/


7 / 11
Fichier de zone directe

I @ est l’alias du nom de la zone


I Contient des enregistrements. Ex : nom_machine A adresse_IP
ou nom_domaine NS nom_serveur_DNS
I Enregistrement important : le SOA en début de fichier

8 / 11
Fichier de zone inverse. Ex: on suppose ici que c’est
192.168.0/24

Nom de zone inverse est écrit dans le même ordre de priorité que
zone directe : example.com et 0.168.192.IN-ADDR.ARPA car ARPA
ou .com sont les plus génériques.
Important
I Dans un enregistrement, par exemple : nom_serveur A
IP_serveur, si nom_serveur ne finit par un point, le serveur ajoute
le nom de la zone!
I Erreur typique : on écrit serveur.example.com qui sera traduit en
serveur.example.com.example.com.
I Idem avec les adresses IPs à gauche des enregistrement. Ex: 1
se traduira en 192.168.0.1

9 / 11
Fichier de zone inverse. Ex: on suppose ici que c’est
192.168.0/24

$TTL 86400 ; 24 hours, could have been written as 24h or 1d


$ORIGIN 0.168.192.IN ADDR.ARPA.
@ 1D IN SOA ns1.example.com. hostmaster.example.com. (
2002022401 ; serial
3H ; refresh
15 ; retry
1w ; expire
3h ; minimum
)
; Name servers for the zone both out of zone no A RRs required
IN NS ns1.example.com.
IN NS ns2.smokeyjoe.com.
; server host definitions
1 IN PTR ns1.example.com.
2 IN PTR www.example.com.
; non server domain hosts
3 IN PTR bill.example.com.
4 IN PTR fred.example.com.

10 / 11
Relation nom de zone et fichier de zone
Le nom de la zone est décrit dans un le fichier de config qui pointe
vers le fichier de zone correspondant

11 / 11
M3105 - LDAP : Lightweigth Directory Access
Protocol

Guillaume Urvoy-Keller

July 16, 2018

1 / 21
Introduction

I Entreprises ont besoin de distribuer des données :


I Email
I Téléphone
I Comptes informatique
I Solution incontournable : LDAP – Lightweigth Directory Access
Protocol
I Standardisé par IETF
I Dans le monde Windows, Active Directory utilise LDAP pour
gérer les machines et les comptes
I Les applications ont aussi besoin de vérifier les comptes... et
donc d’accéder à LDAP

2 / 21
Besoin d’authentification

3 / 21
Exemple d’informations stockées

Un exemple typique d’une entrée dans /etc/passwd exprimée sous


forme LDAP

4 / 21
Exemple d’informations stockées

Dans l’exemple précédent :


I Les données sont au format LDIF
I Les données sont stockées dans la base LDAP sous une forme
différente (binaire...)
I Mais la possibilités de convertir dans les deux sens "Base de
données $ LDIF" est simple et permet échange entre serveurs
LDAP

5 / 21
Les entrées LDAP

I Les entrées LDAP sont organisées de manière hiérarchique avec


un identifiant unique par entrée appelé dn
I Données organisées en arbre ! dn donne chemin dans l’arbre
I Racine de l’arbre : dc=navy, dc=mil :
I schéma typique où on utilise le domaine DNS pour définir la
racine, ici navy.mil

6 / 21
Base LDAP "complète"

6 dn ) 6 objets (certains écrits en base64) 7 / 21


Construction d’une base

On fait le schéma de la base voulue ....comme on veut


I Schéma appelé DIT : Directory Information Tree
Par contre, un objet de la base hérite de classes d’objets
pré-existantes (on ne peut pas en définir!)
I Attributs obligatoires
I Attributs optionnels
I Notion d’héritages entre classes

8 / 21
Classes d’objets

9 / 21
Héritage entre classes

10 / 21
La base peut être distribuée - entreprise multi-sites

Le DIT est découpé en sous-arbre, chacun géré par un serveur distinct

11 / 21
Procole LDAP

Il faut se connecter avant d’accéder aux données

12 / 21
Authentification

13 / 21
Contrôle d’accès (aux données)

Une fois authentifié, on peut controller l’acccès aux données, c.a.d. ce


que l’utilisateur voit : tout ou partie du DIT, en lecture, écriture, etc.

14 / 21
Exemple d’accès aux données avec utilitaire ldapsearch

15 / 21
Comme un utilitaire, par ex. ssh, est raccordé à LDAP?

16 / 21
PAM: Pluggable Authentication Module
I Idée derrière PAM : une librairie dynamique pour les
commandes/démons et un fichier de config par
commande/démon. Délégation de l’authentification
I Seul le fichier de config (texte) doit être modifié – plus de
recompilation!
I Comment savoir si une commande est pam-ifiée :
ldd nom_commande | grep pamlib.so

17 / 21
PAM : fichier de configuration

I Stockés dans le repertoire /etc/pam.d.


I Un fichier contient 3 parties en général : passwd, auth, session,
account

18 / 21
PAM : fichier de configuration

I Chaque partie contient des lignes du type


auth sufficient pamrootok.so
I En fin de ligne, on trouve un module PAM qui va retourner :
succès ou erreur
I Le « control-flag » qui vaut sufficient, required,requisite, optional,
etc
I A chaque invocation, retour d’une seule valeur : succès ou erreur

19 / 21
Architecture PAM

20 / 21
NSswicth

I Name Service Switch


I Wikipedia : autorise le remplacement des traditionnels fichiers
Unix de configuration (par exemple /etc/passwd, /etc/group,
/etc/hosts) par une ou plusieurs bases de données centralisées
(ldap, etc)

21 / 21

Vous aimerez peut-être aussi