ITSkillsCenter
Cybersécurité

Sécurité L2 Cisco : port-security, SSH, AAA local — tutoriel CCNA 2026

15 دقائق للقراءة

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


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.

Besoin d'un site web ?

Confiez-nous la Création de Votre Site Web

Site vitrine, e-commerce ou application web — nous transformons votre vision en réalité digitale. Accompagnement personnalisé de A à Z.

À partir de 250.000 FCFA
Parlons de Votre Projet
Publicité