Un portable infecté ne doit pas tout atteindre
La segmentation d'un réseau le découpe en zones qui ne se parlent que si on l'a décidé. Elle limite les dégâts quand une seule machine est piratée.
Dans une université, un étudiant branche un portable infecté sur le Wi-Fi des invités. Le serveur qui garde les notes doit rester hors de sa portée. C'est la segmentation qui le garantit.
À la fin de cette leçon
Remarque
Je peux dire quelles machines d'un réseau segmenté peuvent se joindre.
Mots clés
| Mot | Ce que ça veut dire |
|---|---|
| Segmentation | le découpage du réseau en zones séparées |
| Zone | un groupe de machines qui se font confiance de la même manière |
| VLAN | un réseau virtuel : un commutateur y sépare des groupes de ports |
| Port d'accès | un port du commutateur qui appartient à un seul VLAN |
| Mouvement latéral | le passage d'un attaquant d'une machine à une autre |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Dans un réseau plat, tout se parle
Dans un réseau plat, toutes les machines sont dans la même zone. Un attaquant qui en prend une peut essayer toutes les autres. C'est le mouvement latéral.
En segmentant, on place un obstacle entre les groupes. L'attaquant prend une machine, et le reste du réseau lui est fermé.
Exemple : un portable infecté dans deux réseaux
| Machine visée | Réseau plat | Réseau segmenté |
|---|---|---|
| Autres portables invités | Atteignable | Atteignable : même zone |
| Postes du personnel | Atteignable | Fermé |
| Serveur des notes | Atteignable | Fermé |
| Caisses de la cafétéria | Atteignable | Fermé |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Un VLAN sépare des groupes sur un commutateur
Un commutateur relie les machines d'un même bâtiment. Avec des VLAN, il range ses ports dans des groupes. Une machine ne voit que celles de son groupe, comme si chaque groupe avait son propre commutateur.
Un port d'accès appartient à un seul VLAN. Un port trunk transporte plusieurs VLAN vers un routeur, chaque trame portant l'étiquette de son VLAN.
Rencontrer les machines et leurs VLAN
vlanlab statusAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Lire la table des VLAN du commutateur
sudo ip netns exec sw bridge vlan showAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Ce que montrent ces deux commandes
La première liste les cinq machines du labo : le commutateur sw, le routeur r1 et trois hôtes h10, h20 et srv, avec leurs adresses. Elle finit par la liste des VLAN du commutateur.
La seconde montre chaque port du commutateur avec les VLAN qui lui sont donnés. Si vous avez déjà sauvegardé votre configuration, elle montre votre travail.
Lire les routes de h10
sudo ip netns exec h10 ip routeAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
On sort de sa zone par la passerelle
La commande affiche deux lignes. L'une est la route par défaut, qui passe par 10.10.0.1. L'autre dit que le réseau 10.10.0.0/24 est joignable directement.
Pour parler à une machine d'un autre réseau, h10 confie donc ses paquets à sa passerelle, qui est un routeur.
Entre deux zones, un routeur applique des règles
Un VLAN sépare, mais un routeur peut tout rejoindre. C'est à lui qu'on met les règles : quelle zone peut ouvrir une connexion vers quelle autre.
On résume ces règles dans un tableau. Une ligne est la zone qui demande, une colonne la zone visée. Une réponse n'est pas une nouvelle demande.
Exemple : qui peut ouvrir une connexion vers qui
| Depuis \ vers | Invités | Personnel | Notes |
|---|---|---|---|
| Invités | Oui | Non | Non |
| Personnel | Non | Oui | Oui |
| Notes | Non | Non | Oui |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Lire ce tableau avec un programme
# Pour chaque zone, les zones qu'elle peut joindre.
autorise = {
"invites": ["invites"],
"personnel": ["personnel", "notes"],
"notes": ["notes"],
}
source = "invites"
destination = "notes"
if destination in autorise[source]:
print("la connexion est permise")
else:
print("la connexion est refusée")
# À vous : changez la source en "personnel", puis relancez.
Une erreur fréquente
Attention
On croit souvent que deux VLAN différents suffisent à se protéger. Un VLAN sépare seulement le niveau du commutateur. Si un routeur les relie sans règle, tout passe. La séparation tient à ses règles.