---
title: "Port Security & Storm Control"
domain: network
subdomain: switching
type: snippet
tags: [port-security, storm-control, dhcp-snooping, dai, cisco, switching, security]
difficulty: intermediate
status: stable
updated: "2025-05-14"
---
## Port Security

### Concepts

```
Port Security = limiter les adresses MAC autorisées sur un port access
  → Protège contre MAC flooding (attaque CAM table), connexions non autorisées

Modes d'apprentissage MAC :
  static   : MAC configurée manuellement
  dynamic  : apprise automatiquement, perdue au reboot
  sticky   : apprise dynamiquement + sauvegardée dans running-config (recommandé)

Modes de violation :
  protect  : silencieusement drop les frames des MACs non autorisées
  restrict : drop + incrémente le compteur de violation + syslog
  shutdown : err-disable le port immédiatement (recommandé en production)
```

### Configuration de base

```text
conf t
interface GigabitEthernet0/1
 ! Prérequis : port doit être en mode access
 switchport mode access
 switchport access vlan {{VLAN_ID}}

 ! Activer port-security
 switchport port-security

 ! Maximum de MACs autorisées (défaut = 1)
 switchport port-security maximum 2

 ! Apprentissage sticky (persistant)
 switchport port-security mac-address sticky

 ! Mode de violation
 switchport port-security violation shutdown

 no shutdown
```

### MAC statique

```text
conf t
interface GigabitEthernet0/2
 switchport mode access
 switchport port-security
 switchport port-security maximum 1
 ! MAC fixe — utile pour les serveurs ou équipements critiques
 switchport port-security mac-address {{MAC_ADDRESS}}
 switchport port-security violation restrict
```

### Appliquer en masse (range)

```text
conf t
interface range GigabitEthernet0/1-20
 switchport mode access
 switchport port-security
 switchport port-security maximum 1
 switchport port-security mac-address sticky
 switchport port-security violation shutdown
```

### Vérifications Port Security

```text
! Vue globale de tous les ports avec port-security
show port-security

! Détail d'une interface
show port-security interface GigabitEthernet0/1

! Toutes les MACs sécurisées (sticky + statiques)
show port-security address

! Ports en err-disable
show interfaces status err-disabled
show errdisable recovery

! Voir les MACs sticky dans la config
show running-config interface GigabitEthernet0/1
```

### Récupérer un port en err-disable

```text
conf t
interface GigabitEthernet0/1
 shutdown
 no shutdown

! Récupération automatique
conf t
errdisable recovery cause psecure-violation
errdisable recovery interval 300         ! secondes avant récupération auto
```

## Storm Control

### Concepts

```
Storm Control = limiter le trafic broadcast/multicast/unicast inconnu en %
  → Protège contre les tempêtes de broadcast (loop, virus, mauvaise config)

Niveaux exprimés en % de la bande passante de l'interface
Action en cas de dépassement : shutdown (err-disable) ou trap (syslog uniquement)
```

### Configuration

```text
conf t
interface GigabitEthernet0/1
 ! Limiter le broadcast à 10% de la bande passante
 storm-control broadcast level 10.00

 ! Limiter le multicast
 storm-control multicast level 10.00

 ! Limiter l'unicast inconnu
 storm-control unicast level 20.00

 ! Action en cas de dépassement
 storm-control action shutdown        ! err-disable le port
 ! storm-control action trap          ! syslog uniquement (moins agressif)

 no shutdown

! En masse
interface range GigabitEthernet0/1-24
 storm-control broadcast level 10.00
 storm-control multicast level 10.00
 storm-control action shutdown
```

### Vérifications Storm Control

```text
show storm-control
show storm-control GigabitEthernet0/1
show storm-control GigabitEthernet0/1 broadcast
```

## DHCP Snooping

### Concepts

```
DHCP Snooping = filtre les réponses DHCP pour empêcher les rogue DHCP servers
  → Construit une binding table {MAC, IP, VLAN, port} utilisée par DAI et IP Source Guard

Ports trusted   : ports connectés au DHCP server ou aux switches upstream
Ports untrusted : tous les ports access clients (par défaut)
```

### Configuration

```text
conf t
! 1. Activer globalement
ip dhcp snooping

! 2. Activer par VLAN
ip dhcp snooping vlan 10,20,30

! 3. Désactiver l'insertion de l'option 82 (evite problèmes avec certains DHCP)
no ip dhcp snooping information option

! 4. Marquer les ports uplink/DHCP server comme trusted
interface GigabitEthernet0/24
 description ** Uplink vers Core / DHCP Server **
 ip dhcp snooping trust

interface GigabitEthernet0/23
 description ** DHCP Server direct **
 ip dhcp snooping trust

! Les ports access clients restent untrusted (défaut)
! Limiter le débit DHCP sur les ports untrusted (anti-DHCP starvation)
interface range GigabitEthernet0/1-20
 ip dhcp snooping limit rate 15      ! max 15 paquets DHCP/s par port
```

### Vérifications DHCP Snooping

```text
show ip dhcp snooping
show ip dhcp snooping binding         ! binding table complète
show ip dhcp snooping statistics
show ip dhcp snooping database        ! si persistance en TFTP/flash
```

## Dynamic ARP Inspection (DAI)

<Warning>
DHCP Snooping doit être activé et la binding table peuplée AVANT d'activer DAI. Les hôtes avec IP statique ne seront pas dans la binding table — configurer des ARP ACL pour eux.
</Warning>

### Concepts

```
DAI = valide les paquets ARP contre la binding table DHCP Snooping
  → Empêche ARP poisoning / man-in-the-middle sur les VLANs

Ports trusted  : interfaces uplink (même logique que DHCP Snooping)
Ports untrusted: ports access — ARP vérifié contre binding table
```

### Configuration

```text
conf t
! 1. Activer DAI par VLAN (DHCP Snooping doit être actif)
ip arp inspection vlan 10,20,30

! 2. Marquer les ports uplink comme trusted
interface GigabitEthernet0/24
 ip arp inspection trust

! 3. Pour les hôtes avec IP statique — ARP ACL statique
arp access-list STATIC_HOSTS
 permit ip host {{STATIC_IP}} mac host {{STATIC_MAC}}

ip arp inspection filter STATIC_HOSTS vlan 10

! 4. Limiter le débit ARP sur les ports untrusted
interface range GigabitEthernet0/1-20
 ip arp inspection limit rate 100     ! 100 ARP/s max
```

### Vérifications DAI

```text
show ip arp inspection vlan 10
show ip arp inspection interfaces
show ip arp inspection statistics vlan 10
```

## IP Source Guard

```text
! Complément DHCP Snooping — filtre les paquets IP par MAC+IP (binding table)
conf t
interface GigabitEthernet0/1
 ip verify source               ! filtre sur IP uniquement
 ! ip verify source port-security  ! filtre sur IP + MAC (plus strict)
```

## 802.1X — Authentification de port

### Concepts

```
802.1X = authentification avant accès au réseau
Acteurs :
  Supplicant   : le client (PC, téléphone) avec logiciel 802.1X
  Authenticator: le switch (relais entre client et serveur RADIUS)
  Auth Server  : serveur RADIUS (FreeRADIUS, Cisco ISE, NPS Windows)
```

### Configuration de base

```text
conf t
! Activer AAA
aaa new-model
aaa authentication dot1x default group radius
aaa authorization network default group radius

! Activer 802.1X globalement
dot1x system-auth-control

! Configurer le serveur RADIUS
radius server {{RADIUS_NAME}}
 address ipv4 {{RADIUS_IP}} auth-port 1812 acct-port 1813
 key {{RADIUS_SECRET}}

! Activer 802.1X sur un port
interface GigabitEthernet0/1
 authentication mode multi-auth    ! plusieurs MACs authentifiées
 authentication port-control auto  ! auto = négocie 802.1X
 dot1x pae authenticator
 mab                               ! MAC Authentication Bypass (fallback)
 spanning-tree portfast

! Vérifier
show dot1x all
show authentication sessions interface GigabitEthernet0/1
```

## Checklist sécurité ports switch

<Checklist
  storageKey="net-port-security"
  items={[
    "Port Security activé sur tous les ports access (maximum 1 MAC, sticky, violation shutdown)",
    "BPDU Guard activé globalement (spanning-tree portfast bpduguard default)",
    "PortFast activé sur tous les ports access uniquement",
    "Storm Control configuré sur les ports access (broadcast ≤ 10%)",
    "DHCP Snooping activé sur tous les VLANs utilisateurs",
    "Ports uplink/DHCP server marqués trusted (DHCP Snooping + DAI)",
    "DAI activé sur tous les VLANs utilisateurs",
    "Ports inutilisés désactivés et assignés à un VLAN de quarantaine",
    "DTP désactivé sur tous les ports edge (switchport nonegotiate)",
    "Native VLAN ≠ VLAN 1 sur tous les trunks",
    "IP DHCP Snooping limit rate configuré sur les ports untrusted (≤ 15 pps)",
    "errdisable recovery configuré pour psecure-violation et bpduguard",
    "Logs syslog configurés pour les violations (restrict ou shutdown)",
    "802.1X ou MAB déployé sur les ports access critiques"
  ]}
/>

<Tip>
DHCP Snooping doit être activé et la binding table doit être peuplée (les clients doivent avoir obtenu une IP via DHCP) avant d'activer DAI — DAI utilise cette binding table pour valider les paquets ARP. Si DAI est activé avant que les clients aient leur IP dans la table, leurs requêtes ARP seront droppées et ils perdront la connectivité.
</Tip>
