Cours Services Réseaux
Cours Services Réseaux
de Réseau
Guillaume Urvoy-Keller
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
5/5
M3105 - Supervision Réseau Active
Guillaume Urvoy-Keller
1 / 30
Supervision Réseau
2 / 30
Supervision Réseau
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é
8 / 30
Trafic entrant et sortant
9 / 30
Trafic entrant et sortant
10 / 30
Récupération information depuis le noyau
11 / 30
Trafic entrant et sortant
12 / 30
Trafic entrant et sortant
13 / 30
Connexions actives
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
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
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)
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....
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
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
Guillaume Urvoy-Keller
1 / 14
Ping
2 / 14
Ping
3 / 14
Ping
Example
4 / 14
Traceroute
5 / 14
Traceroute
6 / 14
Traceroute
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
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
13 / 14
Smokeping
14 / 14
M3105 - Supervision Système/Application : SNMP
Guillaume Urvoy-Keller
1 / 15
Simple Network Management Protocol
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
4 / 15
MIBs SNMP
5 / 15
SNMP
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
9 / 15
Contrôle d’accès SNMP
10 / 15
Contrôle d’accès
Fichier de configuration snmpd.conf d’une machine Debian
11 / 15
Managers
12 / 15
Différentes approches
13 / 15
Nagios
Guillaume Urvoy-Keller
1 / 12
Ansible
Automatisation Configuration
Cycle typique :
1 Installation serveur
2 Configuration Ansible
2 / 12
Configuration
3 / 12
Ansible et ses concurrents
4 / 12
Ansible et ses concurrents
5 / 12
Ansible - caractéristiques
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
9 / 12
Playbook
10 / 12
Ansible Playbook
11 / 12
Ansible Tower
12 / 12
M3105 - DNS : Domain Name Service
Guillaume Urvoy-Keller
1 / 11
DNS
2 / 11
Exemple client : dig
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
Figure: https://labs.ripe.net/Members/gih/dnsfig2.png
5 / 11
Base de donnée d’un serveur ayant autorité
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.
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
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
1 / 21
Introduction
2 / 21
Besoin d’authentification
3 / 21
Exemple d’informations stockées
4 / 21
Exemple d’informations stockées
5 / 21
Les entrées LDAP
6 / 21
Base LDAP "complète"
8 / 21
Classes d’objets
9 / 21
Héritage entre classes
10 / 21
La base peut être distribuée - entreprise multi-sites
11 / 21
Procole LDAP
12 / 21
Authentification
13 / 21
Contrôle d’accès (aux données)
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
18 / 21
PAM : fichier de configuration
19 / 21
Architecture PAM
20 / 21
NSswicth
21 / 21