Verrouiller les ports d’accès avec port-security et MAC sticky, durcir l’accès admin avec SSH au lieu de Telnet, configurer AAA local pour authentifier les administrateurs, activer DHCP snooping et Dynamic ARP Inspection. Les six défenses fondamentales attendues à l’examen 200-301 v1.1.
📍 À lire d’abord : Réussir le CCNA 200-301 depuis l’Afrique de l’Ouest — Guide complet 2026 · VLAN, trunk 802.1Q et inter-VLAN routing.
Introduction
La couche 2 d’un réseau d’entreprise est le maillon que les attaquants visent en premier quand ils ont accès physique au bâtiment. Brancher un PC sur une prise murale d’agence bancaire, c’est par défaut être membre du VLAN du port — donc avoir l’IP réseau de la banque, voir le serveur de fichiers, scanner les imprimantes. Aucune ACL en couche 3 ne te protégera contre une attaque MAC flooding qui sature la table CAM du commutateur, ou contre un serveur DHCP malveillant qui distribue des passerelles factices, ou contre un ARP poisoning qui détourne le trafic.
Ce tutoriel met en place les six défenses L2 et accès admin attendues au CCNA : port-security pour limiter les MAC autorisés par port, SSH au lieu de Telnet pour l’admin, mots de passe enable secret correctement chiffrés, AAA local pour comptes nominatifs, DHCP snooping pour bloquer les serveurs DHCP rogues, Dynamic ARP Inspection pour bloquer le poisoning. Domaines couverts : Security Fundamentals (15 % de l’examen) et Network Access (en partie).
Prérequis
- Lab Packet Tracer 9.0 fonctionnel.
- Topologie à VLAN avec trunk déjà en place (cf. tutoriel inter-VLAN routing).
- Compréhension des ACL standards (utilisées pour SSH access-class).
- Niveau attendu : intermédiaire-confirmé.
- Temps estimé : 2 heures.
Étape 1 — Port-security : limiter les MAC autorisés par port
Sur un commutateur Cisco, port-security est la fonctionnalité qui empêche un port d’apprendre plus que N adresses MAC, et permet de définir l’action si la limite est dépassée. C’est la défense de base contre le branchement sauvage de switchs ou hubs personnels en agence.
Sur SW1, configurer Fa0/1 (port d’accès au VLAN 10) pour autoriser une seule adresse MAC apprise dynamiquement, et la mémoriser en sticky (la conf reste après reboot) :
SW1(config)#interface FastEthernet0/1
SW1(config-if)#switchport mode access
SW1(config-if)#switchport access vlan 10
SW1(config-if)#switchport port-security
SW1(config-if)#switchport port-security maximum 1
SW1(config-if)#switchport port-security mac-address sticky
SW1(config-if)#switchport port-security violation shutdown
SW1(config-if)#switchport port-security aging time 60
SW1(config-if)#switchport port-security aging type inactivity
SW1(config-if)#exit
Décortiquons. port-security active la fonctionnalité. maximum 1 autorise une seule MAC sur ce port — au-delà, c’est une violation. mac-address sticky dit au switch d’apprendre dynamiquement la première MAC qui se présente et de la coller dans la conf comme si elle avait été déclarée statiquement (commande switchport port-security mac-address H.H.H qui apparaît automatiquement après le premier paquet). violation shutdown met le port en err-disabled en cas de violation — c’est la sanction la plus sévère, recommandée pour la prod ; restrict se contente de jeter les paquets de la MAC pirate, protect jette silencieusement sans incrémenter les compteurs. Les options aging permettent d’expirer les MAC sticky après N minutes d’inactivité — utile en hot-desking où les utilisateurs changent de bureau.
Vérifie avec show port-security interface Fa0/1 et show port-security address :
SW1#show port-security interface Fa0/1
Port Security : Enabled
Port Status : Secure-up
Violation Mode : Shutdown
Aging Time : 60 mins
Aging Type : Inactivity
SecureStatic Address Aging : Disabled
Maximum MAC Addresses : 1
Total MAC Addresses : 1
Configured MAC Addresses : 0
Sticky MAC Addresses : 1
Last Source Address:Vlan : 0001.2345.6789:10
Security Violation Count : 0
En cas de violation, tu vois le port passer en Secure-Down avec status err-disabled. Pour le réactiver après diagnostic : shutdown puis no shutdown, ou activer errdisable recovery cause psecure-violation pour une reprise automatique après un délai.
Étape 2 — Désactiver Telnet, activer SSH
Telnet transmet les mots de passe en clair sur le réseau. Inacceptable depuis 2005, scandaleux en 2026. SSH chiffre tout. La configuration SSH côté Cisco demande quatre éléments : un nom d’hôte, un domaine, une paire de clés RSA, et au moins un compte utilisateur local.
SW1(config)#hostname SW1
SW1(config)#ip domain-name pme.local
SW1(config)#crypto key generate rsa modulus 2048
SW1(config)#username admin privilege 15 secret AdminCcna2026!
SW1(config)#ip ssh version 2
SW1(config)#line vty 0 4
SW1(config-line)#login local
SW1(config-line)#transport input ssh
SW1(config-line)#exec-timeout 5 0
SW1(config-line)#logging synchronous
SW1(config-line)#exit
Décortiquons. crypto key generate rsa modulus 2048 génère une paire de clés RSA 2048 bits — c’est ce que demande la sécurité moderne (1024 bits était l’ancien standard, considéré faible en 2026). username admin privilege 15 secret AdminCcna2026! crée un compte avec privilège maximum (15 = équivalent enable) et mot de passe haché en MD5 (secret) plutôt que stocké en clair (password). ip ssh version 2 force SSHv2, qui corrige les faiblesses cryptographiques de SSHv1. transport input ssh exclut explicitement Telnet sur les lignes VTY — sans cette commande, la ligne accepte les deux. exec-timeout 5 0 déconnecte une session SSH inactive après 5 minutes.
Teste la connexion depuis un PC du LAN avec un client SSH (PuTTY, OpenSSH, Termius). Une connexion en clair via Telnet doit être rejetée :
$ ssh admin@192.168.99.1
admin@192.168.99.1's password: AdminCcna2026!
SW1>enable
SW1#
$ telnet 192.168.99.1
Trying 192.168.99.1...
Connection refused.
Étape 3 — Restreindre l’accès SSH par ACL
Compléter SSH avec une ACL VTY pour qu’aucun hôte hors du sous-réseau d’admin ne puisse même tenter une connexion :
SW1(config)#access-list 99 permit 192.168.99.0 0.0.0.255 log
SW1(config)#access-list 99 permit host 10.10.10.5 log
SW1(config)#access-list 99 deny any log
SW1(config)#line vty 0 4
SW1(config-line)#access-class 99 in
Désormais, seuls les hôtes du VLAN 99 (MGMT) ou un poste d’admin spécifique sur 10.10.10.5 peuvent atteindre la mire SSH. Toute autre tentative est bloquée avant l’authentification, et loggée — utile pour détecter un attaquant qui scanne ton infrastructure.
Étape 4 — Sécuriser l’enable secret
Trois faiblesses classiques à éliminer.
SW1(config)#enable secret EnableCcna2026!
SW1(config)#service password-encryption
SW1(config)#no enable password
SW1(config)#security passwords min-length 12
SW1(config)#login block-for 60 attempts 3 within 30
Décortiquons. enable secret chiffre avec MD5 (préférable) au lieu de l’ancienne enable password en clair. service password-encryption chiffre avec un type 7 (très faible, mais mieux que rien) tous les autres mots de passe stockés en clair dans la conf. no enable password supprime un éventuel mot de passe enable hérité. security passwords min-length 12 impose 12 caractères minimum sur tout nouveau mot de passe créé. login block-for 60 attempts 3 within 30 bloque les tentatives de login pendant 60 secondes après 3 échecs en 30 secondes — défense contre le brute force.
Vérifie avec show running-config | include enable et show running-config | include username que tes hashs sont bien $1$ (MD5) pour l’enable secret et $1$ ou $5$ pour les usernames.
Étape 5 — AAA local : comptes nominatifs
Avoir un seul compte admin partagé entre tous les administrateurs est une mauvaise pratique : impossible de tracer qui a fait quoi. AAA (Authentication, Authorization, Accounting) en mode local permet d’avoir plusieurs comptes individuels avec leurs propres niveaux de privilège.
SW1(config)#aaa new-model
SW1(config)#aaa authentication login default local
SW1(config)#aaa authorization exec default local
SW1(config)#username diallo privilege 15 secret DialloAdmin2026!
SW1(config)#username technicien privilege 5 secret TechCcna2026!
SW1(config)#username invite privilege 1 secret InviteCcna2026!
SW1(config)#privilege exec level 5 ping
SW1(config)#privilege exec level 5 traceroute
SW1(config)#privilege exec level 5 show running-config interface
Décortiquons. aaa new-model active le sous-système AAA — sans cette commande, les autres aaa n’ont pas d’effet. aaa authentication login default local dit « pour authentifier sur la ligne console et VTY, utilise la base d’utilisateurs locale » — par défaut, c’était le mot de passe line password, désormais c’est la base username. aaa authorization exec default local complète : « après authentification, le niveau de privilège vient de la base locale ».
Trois utilisateurs : Diallo en privilège 15 (admin total), un technicien en niveau 5 (peut faire des show et des ping mais pas modifier la conf), un invité en niveau 1 (peut juste faire show). Les commandes privilege exec level 5 ping étendent le niveau 5 pour qu’il ait accès à ping, traceroute et show running-config interface (qui sont par défaut au niveau 15).
C’est cette granularité qui transforme un commutateur en outil de production conforme aux audits PCI DSS et ISO 27001 : on sait qui s’est connecté quand et qui a tapé quelle commande (avec accounting).
Étape 6 — DHCP snooping
DHCP snooping est la défense contre le serveur DHCP rogue. Imagine un attaquant qui branche un Raspberry Pi configuré comme serveur DHCP sur le VLAN 10 : il distribue à tous les clients une passerelle factice qui pointe vers lui, et il fait du man-in-the-middle sur tout le trafic Internet.
DHCP snooping classe les ports d’un VLAN en trusted (un port qui peut envoyer des réponses DHCP — typiquement le trunk vers le serveur DHCP légitime) et untrusted (les ports utilisateurs, qui ne doivent envoyer que des requêtes DHCP). Le commutateur drop toute réponse DHCP arrivant sur un port untrusted.
SW1(config)#ip dhcp snooping
SW1(config)#ip dhcp snooping vlan 10,20,99
SW1(config)#no ip dhcp snooping information option
SW1(config)#interface GigabitEthernet0/1
SW1(config-if)#ip dhcp snooping trust
SW1(config-if)#exit
SW1(config)#interface range FastEthernet0/1 - 24
SW1(config-if-range)#ip dhcp snooping limit rate 10
Décortiquons. ip dhcp snooping active globalement. ip dhcp snooping vlan 10,20,99 cible les VLAN à protéger. no ip dhcp snooping information option désactive l’option 82 (information de relai DHCP) qui peut casser la compatibilité avec certains serveurs Microsoft. ip dhcp snooping trust sur le trunk vers le serveur DHCP autorise les réponses DHCP entrantes sur ce port. La limit rate 10 sur les ports d’accès limite à 10 paquets DHCP par seconde — défense contre le DHCP starvation (un attaquant qui demande 65 000 IPs pour épuiser le pool).
Vérifie avec show ip dhcp snooping et show ip dhcp snooping binding.
Étape 7 — Dynamic ARP Inspection (DAI)
DAI complète DHCP snooping pour bloquer l’ARP poisoning. Le principe : DHCP snooping tient une table des baux légitimes (MAC → IP), DAI inspecte chaque paquet ARP entrant et le compare à cette table. Un paquet ARP qui annonce une MAC pour une IP qui n’a pas ce bail est droppé.
SW1(config)#ip arp inspection vlan 10,20,99
SW1(config)#interface GigabitEthernet0/1
SW1(config-if)#ip arp inspection trust
SW1(config-if)#exit
SW1(config)#interface range FastEthernet0/1 - 24
SW1(config-if-range)#ip arp inspection limit rate 15
Sur les ports d’accès, DAI est en mode untrusted (par défaut quand DAI est activé sur le VLAN), et tout ARP est inspecté. Sur le trunk, on trust pour ne pas bloquer les ARP légitimes du serveur DHCP. La limit rate empêche un attaquant de saturer le CPU avec un flood d’ARP.
Combiné, DHCP snooping + DAI rend pratiquement impossible le man-in-the-middle classique sur le LAN. C’est la défense L2 la plus efficace au programme CCNA.
Étape 8 — Désactiver les ports inutilisés
Dernière défense, la plus oubliée : sur un commutateur 24 ports, si tu en utilises 8, désactive les 16 autres. Un attaquant avec accès physique au local technique ne peut alors pas utiliser un port libre pour se connecter.
SW1(config)#interface range FastEthernet0/9 - 24
SW1(config-if-range)#switchport mode access
SW1(config-if-range)#switchport access vlan 999
SW1(config-if-range)#shutdown
SW1(config-if-range)#exit
SW1(config)#vlan 999
SW1(config-vlan)#name PARKING
SW1(config-vlan)#shutdown
SW1(config-vlan)#exit
Le VLAN 999 PARKING n’est annoncé sur aucun trunk et est shutdown : un câble branché sur un port libre atterrit dans un cul-de-sac total. L’utilisation cumulée du VLAN parking + port-security + DHCP snooping + DAI fait du commutateur un équipement réellement durci.
Erreurs fréquentes
| Erreur | Cause | Solution |
|---|---|---|
| Port en err-disabled après changement de PC | Sticky MAC apprise du précédent PC, violation déclenchée | shutdown / no shutdown ; ou supprimer la sticky avec no switchport port-security mac-address sticky H.H.H |
| SSH refusé malgré config correcte | Clés RSA pas générées ou supprimées par un reload sans save | Régénérer avec crypto key generate rsa modulus 2048 |
aaa new-model casse l’accès console |
Plus de password ligne, et username pas créé | Toujours créer username admin privilege 15 secret X avant aaa new-model |
| DHCP snooping bloque les vrais clients | Trunk vers serveur DHCP non en trust | Ajouter ip dhcp snooping trust sur le port vers le serveur |
| DAI bloque tous les ARP | Pas de bail DHCP pour les hôtes (IP statiques) | Configurer des entrées statiques avec ip arp inspection static ou exclure le VLAN |
enable secret non utilisé malgré config |
Présence simultanée d’un enable password historique |
no enable password pour forcer secret |
| Mot de passe rejeté à la création | security passwords min-length 12 actif |
Choisir un mot de passe ≥ 12 caractères |
Brute force non bloqué malgré login block-for |
Tentatives séparées de 30+ secondes | Le within 30 exige 3 tentatives en 30s ; ajuster pour ton SLA |
| Tous les ports passent en err-disabled au reboot | Sticky MAC sauvegardées + redéploiement de PC | Désactiver sticky sur les ports volatils, ou planifier la maintenance |
Adaptation au contexte ouest-africain
Pour les banques régionales : la conformité PCI DSS impose port-security + DHCP snooping + DAI + AAA centralisé sur tous les commutateurs des zones CDE (Cardholder Data Environment). Le ROI est immédiat : éviter la non-conformité audit (amendes, perte de licence d’acquéreur Visa/Mastercard).
Pour les ESN qui auditent des PME : la check-list de cet article te permet de produire un rapport d’audit en deux jours sur 30 commutateurs et de facturer 1 500 000 à 3 000 000 FCFA. Les six défenses listées sont chacune un paragraphe de rapport.
Pour les administrateurs d’écoles ou universités publiques : le besoin n°1 est port-security pour empêcher les étudiants de brancher des switchs personnels qui plombent le réseau, et DHCP snooping pour empêcher les serveurs DHCP rogues sur les box Wi-Fi étudiantes branchées sauvagement.
Pour les centres de formation CCNA : ce module se boucle en TP de 3 heures avec un commutateur réel ou Packet Tracer. La démonstration la plus marquante : configurer port-security maximum 1 violation shutdown, brancher un PC, attendre l’apprentissage, débrancher, brancher un autre PC, observer le port passer en err-disabled. Effet pédagogique garanti.
FAQ
Port-security fonctionne-t-il sur les ports trunk ?
Pas de manière fiable. Cisco déconseille port-security sur les trunks parce que la table des MAC apprises sur un trunk peut grossir vite. Sur un trunk, on préfère 802.1X et control-plane policing. Au CCNA, on configure port-security uniquement sur les ports d’accès.
Quelle différence entre enable password et enable secret ?
enable password stocke en clair (ou en type 7 si service password-encryption actif, mais type 7 est trivial à décoder). enable secret stocke en MD5. Toujours utiliser enable secret ; ne jamais utiliser enable password. Quand les deux sont définis, IOS prend enable secret.
SSH version 1 ou version 2 ?
Version 2, exclusivement. SSHv1 a des faiblesses cryptographiques connues depuis 2001. La commande ip ssh version 2 interdit explicitement v1.
AAA local versus AAA RADIUS/TACACS+ ?
AAA local : la base de comptes vit sur le commutateur. Simple, gratuit, mais pas de centralisation — tu dois changer un mot de passe sur 50 commutateurs. AAA RADIUS/TACACS+ : la base est centralisée sur un serveur (Cisco ISE, FreeRADIUS, Aruba ClearPass) — tous les commutateurs interrogent le serveur. Plus complexe, mais c’est ce qu’utilisent les banques. Au CCNA, on étudie le concept ; en pratique on configure local.
DHCP snooping fonctionne-t-il avec un serveur DHCP IOS local ?
Oui — le port sur lequel le serveur DHCP IOS écoute (généralement la sous-interface du routeur ou le SVI du commutateur L3) doit être en trust. Sinon les Offers émis par le routeur sont droppés.
Que se passe-t-il si je ne configure que service password-encryption sans le reste ?
Tu chiffres en type 7 les passwords stockés. C’est un gain marginal contre quelqu’un qui regarde par-dessus ton épaule, mais ne protège pas contre un attaquant qui exfiltre la conf — type 7 se décode en une seconde sur n’importe quel décodeur en ligne. Toujours combiner avec enable secret et username ... secret pour un vrai chiffrement.
Pour aller plus loin
- 🔝 Article cadre : Réussir le CCNA 200-301 depuis l’Afrique de l’Ouest — Guide complet 2026
- ⬅️ Prérequis : VLAN, trunk 802.1Q et inter-VLAN routing · ACL standards et étendues · DHCP, DNS et NAT/PAT
- ➡️ Suite logique : Plan de révision CCNA en 90 jours et examens blancs (à venir).
- ➡️ En complément : nos articles sur SSH hardening VPS et la sécurité opérationnelle.
- Documentation officielle Cisco : Cisco Catalyst Switching Configuration Guide — chapitre Port Security et chapitre DHCP Features.
- CIS Benchmark : Cisco IOS Benchmark v8 sur cisecurity.org, le standard de hardening qui détaille 100+ contrôles dont les nôtres ici.
- Suggestion d’entraînement : configure les six défenses sur deux commutateurs d’un lab, puis exécute trois attaques en démo : MAC flooding (avec
macofsur Kali, contre port-security), DHCP starvation (yersinia, contre DHCP snooping), ARP poisoning (ettercap, contre DAI). Observe les compteurs et logs sur le commutateur. C’est le test final de maîtrise.
Mots-clés secondaires : port-security Cisco sticky MAC, SSH Cisco IOS configuration, AAA local Cisco, enable secret MD5, DHCP snooping CCNA, Dynamic ARP Inspection DAI, hardening commutateur Cisco, sécurité L2 ports administrativement.