Réseau
La Virtualisation
Définition : La virtualisation permet de faire fonctionner plusieurs OS, généralement différents, sur un seul socle matériel.
On peut donc basculer de l’un à l’autre. L’installation de nouveaux OS se fait sans trop de problèmes hormis que ça pompe des ressources.
Le matériel, c’est mon PC en dur.
L’OS hôte, c’est pour moi Ubuntu.
L’émulateur simule un nouveau matériel pour les OS invités, les logiciels de contrôle permettent de les contrôler ; ce qu’on appelle (l’union des deux) en général outil de virtualisation.
Une VM regroupe User Space + OS invité + drivers.
Les VM seront intéressantes car on ne risque pas de modifier, mettre en panne son PC, ont peut faire des snapshots, etc.
Pour importer une VM, Fichiers > Importer un appareil virtuel
Il faut réinitialiser les adresses MAC de toutes les NIC !
CONFIGURATION D’UNE VM
Les types de réseau dans virtualbox :
-Aucune Connexion
-NAT : Il y’a un NAT entre la VM et mon PC qui agit comme une box, peut nécessiter un PAT
-Réseau NAT : ???
-Accès par pont : La VM est directement sur le réseau, comme si elle était branchée sur mon switch
-Réseau Interne : A éviter, apparement. Préférer « Réseau Hôte » ou réseau privé hôte. Plusieurs VM en LAN, isolées de l’extérieur.
-Réseau Privé Hôte : Une LAN entre mes VM qui communique aussi avec mon PC, mais pas avec l’extérieur.
-Pilote générique : cadre d’utilisation spécifique, à n’utiliser que si on me le demande.
Le presse-papier partagé est dans la configuration > Général de la VM.
ANALYSE DE RESEAUX
Utilisation basique de wireshark
Deux modes : trace réseau faite sur un routeur et lue sur Wireshark ou trace réseau live (en root).
Je lance une capture en choisissant l’interface. Les paquets arrivent dans la capture.
Une fois arrêtée on peut analyser la capture.
En haut les trames, en bas les infos les concernant, encore en bas les trames brutes.
Wireshark analyse les trames et donne le protocole le plus significatif pour moi. Par exemple sur du DNS il dira standard query, etc. En cliquant sur une trame j’ai plus d’infos. Date, temps Epoch, numéro de trame, taille… Et surtout les protocoles que Wireshark a reconnu. Il met des règles de coloration (ex : UDP en bleu…) Il affiche les infos ethernet (@ MAC, constructeur de la NIC, etc). Les Flags : on en a dans TCP, dans ethernet, etc ; Dans TCP on peut par exemple voir les flags d’un scan Xmas Tree (Fin, RST, etc). TTL. Protocole (en traduisant les infos à partir des numéros), header checksum, ip source et destination. IP RFC 1918 = Ip privée.
On a des infos sur un paquet UDP par ex : port, service, etc. Par exemple sur du DNS on verra le flag Recursion pour un paquet à destination d’un resolver. Si je suis sur le paquet question, j’aurais un lien vers le paquet réponse : Wireshark analyse les conversations.
On a aussi du TCP : port source/dest ; le sequence number ; ack number ; les flags (par ex : SYN), la taille du paquet, taille du header, taille de la window (nombre d’octets que le récepteur est prêt à recevoir à n’importe quel moment, appellée TCP window size ou TCP receiver size) ; les données éventuelles. J’aurais la réponse à un SYN, un SYN/ACK.
Au lieu de faire ça on peut aussi faire un filtre sur la partie TCP : clic droit > Conversation Filter > TCP. J’aurais alors les infos ne concernant que cette conversation. Très utile !!! Cela me permet de suivre une conversation, comme par ex. Syn, SynN/ACK, ACK, puis requête port 80 GET, avec les infos sur le matériel, etc.
On peut faire d’autres filtres : ex : ip.src == 192.168.1.1 me donne tous les paquets ip venant de cette adresse. ip.dst == 192.168.1.1 : la même chose en destination. ip.host == 192.168.1.1 : me donne les paquets en source ou destination avec cette IP.
Maîtriser mes outils permet d’être plus efficace.
Utilisation avancée de Wireshark
Wireshark peut faire une trace réseau en liive, avec les droits root. Je choisis mon interface en lançant ma capture.
On a les trames en haut, puis les infos sur les trames, puis l'info au format brut. On a chaque fois un numéro de trame, un temps depuis le début de la capture, la source et la destination correspondant au protocole sélectionné par Wireshark. En effet Wireshark analyse les trames et choisit le protocole qui semble le plus significatif pour nous. Ensuite on a la taille, et la partie info qui nous donne les choses les plus intéressantes contenues dans cette trame.
En cliquant sur une trame j'ai plus d'info sur elle dans la fenêtre du dessous. Cette fenêtre qui détaille les trames est divisée en plusieurs parties (avec les petites flèches !): la première partie est propre à wireshark, puis les suivantes correspondent aux couches du modèle TCP/IP : Ethernet, puis IP, puis UDP, puis DNS, par exemple. Wireshark traduit les informations pour nous dans chaque sous-section, nous donnant les informations concernant chaque partie de l'en-tête.
Wireshark analyse les conversations, et il nous permet notamment de remonter celle-ci; d'ailleurs la coloration nous permet de distinguer les différentes conversations.
Wireshark permet aussi l'utilisation de filtres, soit en faisant un clic droit sur un paquet pour afficher une conversation par exemple, soit avec la barre au-dessus :
- ip.src == 10.0.0.1
- ip.dst == 10.0.0.1
- ip.host == 10.0.0.1
- On peut aussi utiliser des opérateurs booléens.
Utilisation basique de TCPDump
TCPDump est en ligne de commandes.
On utilise souvent TCPDump pour la capture de la trace et wireshark pour l’analyse.
1 - On lance tcpdump
2 - On stocke les données dans un fichier
3 - On analyse avec wireshark
… Mais on peut aussi analyser direct avec TCPdump. En live, en temps réel, pour dialoguer avec une personne externe…
Utilisation basique : tcpdump -i eth0: basique
tcpdump -i eth0 -n: affichage numérique (évite les requêtes DNS)
tcpdump -i eth0 -n -v: verbeux
tcpdump -i eth0 -n -v -A: Dump des paquets
tcpdump -i eth0 -n -v -A -w fichier_trace.out :Génère un fichier de la trace lisible par Wireshark.
Les infos s’affichent direct.
-v affiche un peu de décodage des trames (fonctions, flags, etc). Je peux faire des tris par la suite.
-A affiche les dumps, c’est-à-dire le contenu des paquets. C’est intéressant surtout si on utilise pas de SSL.
Je peux faire du grep en live, par exemple. Dans filters,> Display filters j’ai des listes de filtres.
Utilisation avancée avec des filtres
TCPDump permet de faire des filtres, un peu comme Wireshark. Il suffit de taper ma commande suivie d'un filtre en quotes. Exemples:
- 'port http'
- 'port 80'
- 'src port http'
- 'dst port 80'
- 'src host 192.168.1.1'
- 'dst host 192.168.1.1'
- 'host 192.168.168.1.1' ---> S'applique aux adresses IP source et destinataire
- 'tcp'
- 'udp'
- 'icmp' [Et plein d'autres protocoles reconnus par TCPdump]
On peut combiner des filtres:
- 'host www.google.fr or linuxfr.org' [On peut utiliser des opérateurs booléens]
- 'port http and host not proxy.societe.local'
- '(port http or https) and net proxy.societe.local' [net correspond à tout ce qui vient du même réseau que le proxy
Exemple de commande complète :sudo tcpdump -i enp0s3 -w monfichier.out 'filtre' #Ici le filtre sera activé dans le fichier
Utiliser Wireshark pour :
identifier le nombre de trames Ethernet échanger
cf No. Le plus élevé ou statistics > ipv4 > et là j’ai plein de stats qui donnent entre autre le total de paquets
- voir la liste de tous les pairs Ethernet ayant eu des échanges durant cette capture
Statistics > Endpoints > Ethernet pour les @MAC ; Si je veux les hosts IP je peux aller dans statistics > ipv4 > all adresses
- identifier tous les échanges concernant le protocole DNS
Statistics > DNS : on voit le nombre de Query et de Response ; je peux aussi cliquer sur l’onglet protocols de la capture pour trier par protocole ; je peux aussi taper ‘dns’ dans la fenêtre de protocole
- identifier tous les échanges concernant le protocole HTTP
Idem que DNS : on peut non seulement filtrer mais HTTP a un menu détaillé dans statistics
- identifier l'adresse IPv4 ou IPv6 du serveur de l'UPEC
filtrer http and ip.host == 192.168.1.40 : je vois un GET université etc. L’host est 193.48.143.18
- identifier le protocole sur lequel est basé HTTP : TCP ou UDP
TCP, il suffit de regarder un trame : Elle contient des infos TCP puis des infos HTTP
Modèle OSI
Modèle en couches, on peut faire le parallèle avec le courrier postal.
Haut niveau : utilisateur
Bas niveau : Matériel.
Application : point d’accès des applis réseau.
Présentation:Encodage, chiffrement des données.
Session : Gestion des sessions entre les machines (identifier les uutilisateurs…)
Transport:Contrôle de flux/congestion
Réseau:adressage et routage (global)
Liaison:adressage physique ou local : sur une liaison, avec @ MAC
Physique : Transport des données physiquement, sur la câble (ou l’onde…)
OSI : Open System Interconnection, norme ISO iso/ec 7498-1:1994
C’est un modèle « théorique » : idéal, non réellement implémenté. Il permet d'obtenir un langage commun.
Chaque couche fournit:
- Un service spécifique
- Un langage commun
- Des moyens d’échanger de l’information
Chaque couche communique avec celles qui lui parle en face :
La couche application de A parle à la couche application de la machine B.
L’abstraction permet de s’affranchir des sujets techniques des couches inférieures : la couche n se fiche de la couche n-1.
L'encapsulation / désencapsulation permet d’intégrer des données sur les différentes couches sans jamais les modifier.On encaspule au départ, on désencapsule à l’arrivée.
Communication bout-à-bout :
Ce principe est cassé par NAT et revient au coeur d’internet avec IPV6.
C’est le coeur du mpodèle OSI : la communication se fait par les deux extrémités. L’intelligence du réseau est aux extrémités du réseau : pas dans les routeurs ou les switches. Les extrémités se servent du réseau comme un simple transporteur. Internet ne doit servir qu’à transporter des données. Le réseau repose sur des principes simples. Sur une communication les éléments intermédiaires ne remontent pas plus haut que la couche 3 : ils n’ont pas besoin de savoir ce que fait la couche transport, par exemple.Les couches réseau sont simples, à partir de transport ça se complexifie, avec des algorithmes poussés.
Tout ça c’est le contraire du téléphone, dans lequel l’intelligence EST dans le réseau. Ex : double-appel.
Le réseau a principes simples.
Pour ajouter un service, il faut juste deux extrémités qui parlent toutes le même langage.
Pas besoin de se synchroniser pour rebooter Internet.
Modèle OSI est un idéal pas implémenté pour internet, mais Internet s’en sert.
Internet n’est pas une norme ISO
OSI est une norme ISO ; Internet est basé sur des standards de l’IETF appellés RFC
Norme!= standard en français (en anglais on utilise le terme standard pour les deux)
On parle de « modèle TCP/IP »
Points communs :
Dialogue sur la même couche (sauf contre-exemple)
Communication bout-à-bout
Encapsulation/désencapsulation
Sur internet on gère soi-même les couches application (d’où les problèmes d’encodage)
Différences :
En OSI, une couche ne dépend pas d’une autre.
En TCP/IP, passer de ipv4 à ipv6 a nécessité de mettre à jour la couche transport (TCP / UDP)
en cas d’erreur sur UDP (couche3) le msg d’erreur est un paquet ICMP (couche 2)
Modèle OSI est un modèle idéal pas implémenté ; on utilise en vrai TCP/IP. On a encapsulation, commu. bout-à-bout, une couche parle à une même couche.