Version Filtre
Le contenu complet du module source est réintégré dans un habillage modernisé, avec scripts et styles utiles conservés.
Thème central : "Le Commutateur comme Immeuble de Bureau Sécurisé"
Métaphore : Chaque port du switch est une porte d'entrée dans un immeuble de bureaux (le réseau). La sécurité consiste à contrôler qui peut entrer, par quelle porte, ce qu'il peut faire, et à détecter les intrus qui tentent de forcer les serrures ou de se faire passer pour des résidents légitimes.
Porte blindée scellée. Aucun accès possible.
Serrure à badge. Seules les adresses MAC (badges) enregistrées ouvrent la porte. Trop de tentatives incorrectes verrouillent la porte (err-disabled).
Concierge vérifié. Seul le serveur DHCP officiel (concierge de confiance) peut attribuer des bureaux (adresses IP). Les concierges imposteurs sont bloqués.
Vérification d'identité croisée. Empêche un visiteur de se faire passer pour le propriétaire d'un bureau en falsifiant sa carte d'identité (paquet ARP).
Porte de service. Ouverture rapide pour les employés (hôtes finaux), mais verrouillage immédiat si quelqu'un tente d'amener un autre immeuble (commutateur) par cette porte (BPDU).
Risque analogique : Un intrus qui réussit à duper la sécurité d'une porte (port) peut accéder à tous les bureaux (VLANs), voler des ressources (adresses IP) ou écouter les conversations (trafic).
Explication : PortFast permet une connexion rapide (comme une porte de service pour employés), et BPDU Guard verrouille immédiatement si quelqu'un tente de connecter un commutateur (un autre "bâtiment" réseau).
! Loi #1 : Un port non sécurisé est un port compromis. Tout port, utilisé ou non, doit avoir une configuration de sécurité explicite. Le mode par défaut (`dynamic auto`) est une faille.
! Loi #2 : La sécurité de la couche 2 est la base de toute sécurité réseau. Si un attaquant contrôle la couche 2 (MAC, VLAN, ARP), il contourne la plupart des défenses de couche supérieure (pare-feu, ACL).
! Loi #3 : DHCP Snooping est le prérequis obligatoire pour DAI. Sans la table de liaison (`binding table`) créée par DHCP Snooping, DAI ne peut pas valider les associations IP-MAC.
! Loi #4 : PortFast et BPDU Guard sont indissociables. Activer PortFast sans BPDU Guard sur un port d'accès expose le réseau à des boucles de spanning-tree introduites par un commutateur pirate.
! Loi #5 : Le VLAN 1 est un territoire hostile. Ne jamais l'utiliser pour le trafic utilisateur. Changer le VLAN natif des trunks et placer les ports inutilisés dans un VLAN "parking" dédié et isolé.
Contexte Métier : En production, ces configurations ne se font pas manuellement sur chaque switch. Elles sont déployées via des templates dans des outils comme Ansible ou Terraform, et leur conformité est vérifiée en continu par des solutions comme Cisco Prime ou des scripts Python maison. Les violations (`security-violation`) sont remontées vers un SIEM (ex: Splunk, QRadar) pour corrélation d'événements de sécurité.
Risque Principal : Compromission de la couche 2 permettant une exfiltration de données ou un déni de service (DoS) étendu.
→ Attaque Type : VLAN Hopping via double étiquetage 802.1Q ou usurpation DTP.
→ Détection : show interfaces trunk (vérifier ports trunk non désirés) et logs : %DTP-5-NONTRUNKPORTON ou %SPANTREE-2-RECV_PVID_ERR.
→ Mitigation Immédiate :
! Sur TOUS les ports d'accès interface range gi0/1 - 24 switchport mode access switchport nonegotiate spanning-tree portfast spanning-tree bpduguard enable ! ! Sur les ports trunk désirés interface gi0/48 switchport mode trunk switchport nonegotiate switchport trunk native vlan 999
→ Intégration Entreprise : Ces commandes font partie d'un baseline de sécurité documenté (ex: CIS Benchmark). Un playbook Ansible assure leur application uniforme. Les alertes de violation de port (`psecure-violation`) sont envoyées au SIEM et déclenchent un ticket d'incident.
---
- name: Configurer la sécurité de base sur les commutateurs
hosts: access_switches
gather_facts: no
tasks:
- name: Désactiver les ports inutilisés
cisco.ios.ios_config:
lines:
- shutdown
parents: "interface range {{ item }}"
loop:
- "FastEthernet0/17-24"
- "GigabitEthernet0/3-4"
- name: Configurer Port Security sur les ports d'accès
cisco.ios.ios_config:
lines:
- switchport mode access
- switchport port-security
- switchport port-security maximum 3
- switchport port-security mac-address sticky
- switchport port-security violation restrict
- spanning-tree portfast
- spanning-tree bpduguard enable
parents: "interface range {{ item }}"
loop:
- "FastEthernet0/1-16"
- "GigabitEthernet0/1-2"
+ Best Practice : Toujours documenter les exceptions. Si un port doit avoir switchport port-security maximum 10 pour une salle de réunion, cette exception doit être documentée dans le système de gestion de configuration (ex: Git) avec une justification business.
? Détail Oublié #1 : Le maximum d'adresses MAC avec Port Security est 8192 par système (plateforme dépendante), mais souvent limité à 1024 sur les anciens modèles. Le maximum par port est configurable, mais la valeur par défaut est 1.
? Piège Fréquent #2 : switchport port-security mac-address sticky apprend et sauvegarde la MAC dans la config. Sans sticky, la MAC est apprise dynamiquement mais est perdue au reboot.
? Question Type : "Un port en mode dynamic desirable peut-il activer Port Security ?" Réponse : Non. Il faut d'abord le mettre en switchport mode access ou switchport mode trunk.
? Piège Fréquent #3 : La commande ip dhcp snooping limit rate s'applique aux ports non approuvés. Sur un port de confiance (trust), cette commande est ignorée.
switchport mode accessswitchport port-securityswitchport port-security maximum 2switchport port-security mac-address stickyRéponse correcte : 0
Explication : Le maximum est fixé à 2. Une adresse MAC est déjà apprise dynamiquement via sticky (0050.7966.6800), et une autre est configurée statiquement (aaaa.bbbb.1234). Le quota de 2 adresses est donc atteint. Pour en apprendre une nouvelle dynamiquement, il faudrait soit augmenter le maximum, soit supprimer une des adresses existantes.
Piège CCNA : Beaucoup oublient que les adresses MAC sticky comptent dans le total, tout comme les adresses configurées manuellement.
| Fonctionnalité | Valeur par Défaut | Impact |
|---|---|---|
switchport mode |
dynamic auto |
Port Security impossible sans changer ce mode |
port-security maximum |
1 | Seulement 1 MAC autorisée par défaut |
port-security violation |
shutdown |
Le port passe en err-disable, pas juste drop des paquets |
ip dhcp snooping |
Désactivé | Tous les ports sont non approuvés par défaut |
| VLAN natif sur trunk | VLAN 1 | Risque de sécurité majeur - toujours le changer |
- Sécurisation des Ports Inutilisés
S1(config)# interface range fa0/17 - 24 S1(config-if-range)# shutdown S1(config-if-range)# switchport mode access S1(config-if-range)# switchport access vlan 999 S1(config-if-range)# exit
Objectif : Éliminer les vecteurs d'attaque physiques.
Vérification : show interfaces status | include disabled
- Port Security Sticky (Scénario Bureau)
S1(config)# interface fa0/1 S1(config-if)# switchport mode access S1(config-if)# switchport port-security S1(config-if)# switchport port-security maximum 3 S1(config-if)# switchport port-security mac-address sticky S1(config-if)# switchport port-security violation restrict S1(config-if)# exit
Vérification : show port-security interface fa0/1
Sortie attendue : Port Status: Secure-up, Sticky MAC Addresses: 1 (apprise après connexion PC).
- DHCP Snooping & DAI pour un VLAN Client
S1(config)# ip dhcp snooping S1(config)# ip dhcp snooping vlan 10 S1(config)# interface gi0/1 S1(config-if)# description Lien vers Serveur DHCP/Routeur S1(config-if)# ip dhcp snooping trust S1(config-if)# ip arp inspection trust S1(config-if)# exit S1(config)# interface range fa0/1-10 S1(config-if-range)# ip dhcp snooping limit rate 10 S1(config-if-range)# exit S1(config)# ip arp inspection vlan 10 S1(config)# ip arp inspection validate src-mac dst-mac ip
Objectif : Éliminer les serveurs DHCP pirates et l'usurpation ARP.
Vérification : show ip dhcp snooping binding et show ip arp inspection vlan 10
⚠️ Désactiver CDP/LLDP sur les ports utilisateurs (optionnel mais recommandé)
S1(config)# interface range fa0/1-16 S1(config-if-range)# no cdp enable
Risque si omis : Fuite d'informations (nom du switch, version IOS, IP).
+ Configurer la récupération automatique (auto-recovery) sur err-disable
S1(config)# errdisable recovery cause psecure-violation S1(config)# errdisable recovery interval 300
Justification best-practice : Permet un redémarrage automatique du port après 5 minutes en cas de violation, évitant une intervention manuaire pour un faux positif.
+ Script Python (Netmiko) pour auditer la Port Security
# Script Python (Netmiko) pour auditer la Port Security sur tous les switches
from netmiko import ConnectHandler
import json
device = {
'device_type': 'cisco_ios',
'ip': '192.168.1.1',
'username': 'admin',
'password': 'secret',
}
with ConnectHandler(**device) as net_connect:
output = net_connect.send_command('show port-security', use_textfsm=True)
# Analyse avec TextFSM -> JSON
for interface in output:
if interface['max_secure_addr'] == '1' and interface['current_addr'] == '0':
print(f"ALERTE: {interface['port']} est configuré mais n'a appris aucune MAC.")
# Génération de rapport JSON pour SIEM
with open('port_security_audit.json', 'w') as f:
json.dump(output, f)
Avantage : Audit centralisé en quelques secondes sur des centaines de switches, détection des configurations incohérentes.
Commandes disponibles dans le simulateur : interface fa0/1, switchport mode access, switchport port-security, switchport port-security maximum 3, switchport port-security mac-address sticky, exit, show port-security
Symptôme Complexe : Les utilisateurs du VLAN 10 ne peuvent plus obtenir d'adresse IP (DHCP) et ont une adresse APIPA (169.254.x.x). Certains peuvent ping leur passerelle, d'autres non. Le port F0/5 du commutateur d'accès clignote en orange (err-disable).
- Fix : Identifier, isoler, reconfigurer
! 1. Identifier l'appareil fautif via la MAC loggée. S1# show port-security interface f0/5 | include Last Source Last Source Address:Vlan : 0050.7966.6800:10 ! 2. Nettoyer la violation, réactiver le port APRÈS avoir débranché l'appareil non autorisé. S1(config)# interface f0/5 S1(config-if)# shutdown S1(config-if)# no switchport port-security S1(config-if)# switchport port-security S1(config-if)# switchport port-security mac-address sticky S1(config-if)# no shutdown ! *Vérification du fix* S1# show port-security interface f0/5 ! Le port doit être en "Secure-up" après reconnexion du PC légitime. ! 3. Si le problème était un flood DHCP, augmenter légèrement la limite sur le port. S1(config)# interface f0/5 S1(config-if)# ip dhcp snooping limit rate 15
⚠️ Rollback au cas où
! Si la configuration cause plus de problèmes, revenir aux paramètres de base. S1(config)# interface f0/5 S1(config-if)# no ip dhcp snooping limit rate S1(config-if)# no switchport port-security S1(config-if)# switchport mode access S1(config-if)# description Port-User-Reset
Bonne réponse : show interfaces status err-disabled
Raison : Cette commande donne immédiatement la liste de tous les ports en err-disable et la cause (psecure-violation, bpduguard, etc.). C'est le point de départ le plus rapide pour un diagnostic initial à 3h du matin.
Plan d'action en 3 étapes :
show mac address-table pour détecter une boucle (même MAC sur plusieurs ports).show port-security interface gi0/1 show ip dhcp snooping binding show ip arp inspection vlan 10 show errdisable recovery show interfaces status err-disabled show run interface gi0/1 | sec port-security
dynamic automac-address sticky sauvegarde dans running-configshutdown (err-disable)show interfaces status err-disabledshow logging | sec ERR_DISABLEshutdown / no shutdownRisque : Usurpation ARP -> Interception du trafic (Man-in-the-Middle).
Mitigation : ip arp inspection vlan [id] ET ip dhcp snooping préalable. Sans DHCP Snooping, DAI est inefficace.
Sécurité Port = (Mode Accès) + (MAC Max + Sticky) + (Violation Shutdown)
Module-Kit de Maîtrise - Configuration de la Sécurité des Commutateurs
© 2024