La commande port-security permet de limiter l’accès à un port donné du commutateur en filtrant sur les adresses MAC source.
Source : http://blog.clemanet.com/commande-port-security-sur-un-switch-cisco-3750-ou-2960/
Par exemple, on peut définir un nombre maximum d’adresse MAC source autorisée sur un port d’un commutateur.
Il est possible de filtrer en précisant les adresses MAC autorisées à se connecter au port. Si une adresse se présente et n’est pas explicitement autorisée, la connexion sera refusée.
Gestion des adresses MAC
Il y a trois possibilités de gestion des adresses MAC:
- Le mode static : les adresses mac autorisées sont configurées manuellement.
- Le mode dynamic : les adresses mac autorisées sont apprises de façon dynamique et ne peuvent pas être enregistrée.
- Le mode sticky : Les adresses mac autorisées sont apprises de façon dynamique et sont écrites dans la configuration running-config. Il est alors possible de les enregistrer dans la configuration de démarrage. Ainsi, si le switch redémarre, il n’aura pas à apprendre ces adresses à nouveau.
Comportement du commutateur en cas de limite atteinte ou d’adresse mac non autorisée
Il y a trois modes possibles :
- Le mode protect : les paquets concernant la machine « hors limite » ne passent plus. Il n’y a pas de message d’avertissement.
- Le mode restrict : les paquets concernant la machine « hors limite » ne passent plus. Par contre, le switch envoie un message syslog, un trap snmp et le compteur d’erreur est incrémenté.
- Le mode shutdown : les paquets concernant la machine « hors limite » ne passent plus. Les messages d’alerte sont envoyés et le port est coupé (état err-disabled).
Pour faire fonctionner à nouveau un port placé en état err-disabled, deux moyens :
- Soit la commande errdisable recovery cause psecure-violation est active. Le port remontera au bout de quelques secondes (en fonction de la configuration).
- Soit on remonte le port manuellement par la commande shutdown suivi d’un no shutdown.
Configuration de l’option port-security
Tout d’abord, quelques règles :
Par défaut, l’option n’est pas active. Le nombre d’adresse maximum apprise par port est de 1 et les modes de fonctionnement sont dynamic et shutdown (voir plus haut).
L’option port-security peut être active uniquement sur des ports access ou trunk.
Concernant les vlans voix : Si un port est configuré en mode access avec un vlan data et un vlan voix, le nombre maximum d’adresse autorisée sur ce port doit être le nombre d’adresse max du vlan data plus deux adresses mac pour le téléphone.
En pratique :
Rappel : commande pour afficher les adresses mac
switch#show mac address-table
Les exemples sont réalisés dans le cas d’un port configuré en mode access.
Activation de l’option port-security
Dans le cas suivant, on active l’option sur le port fa1/0/2 avec un maximum de trois adresses mac. Puis, on vérifie la configuration.
switch(config)#int fa1/0/2
switch(config-if)#switchport port-security
switch(config-if)#switchport port-security maximum 3
switch(config-if)#end
switch#sh port-security
Secure Port MaxSecureAddr CurrentAddr SecurityViolation Security Action
(Count) (Count) (Count)
---------------------------------------------------------------------------
Fa1/0/1 1 0 1 Shutdown
Fa1/0/2 3 0 0 Shutdown
---------------------------------------------------------------------------
Total Addresses in System (excluding one mac per port) : 0
Max Addresses limit in System (excluding one mac per port) : 6144
switch#
Le maximum d’adresse mac pour le port fa1/0/1 est de 1. Si ce nombre est dépassé, le port se met en mode err-disabled et une erreur est enregistrée (voir la commande plus haut). Il est donc désactivé.
Vérification:
switch#sh int status
Port Name Status Vlan Duplex Speed Type
Fa1/0/1 err-disabled 2 auto auto 10/100BaseTX
Fa1/0/2 notconnect 2 auto auto 10/100BaseTX
Fa1/0/3 notconnect 2 auto auto 10/100BaseTX
Pour remonter automatiquement le port, on entre la commande suivante dans la configuration. Par défaut, l’intervalle est de 300s. Il est possible de modifier cet intervalle grâce à la commande switch(config)#errdisable recovery interval 200.
Au bout de 300 secondes, si le problème a été résolu, le port sera à nouveau en état de fonctionner.
switch(config)#errdisable recovery cause psecure-violation
switch(config)#end
switch#sh errdisable recovery
ErrDisable Reason Timer Status
----------------- --------------
arp-inspection Disabled
bpduguard Disabled
channel-misconfig (STP) Disabled
dhcp-rate-limit Disabled
dtp-flap Disabled
gbic-invalid Disabled
inline-power Disabled
l2ptguard Disabled
link-flap Disabled
mac-limit Disabled
loopback Disabled
pagp-flap Disabled
port-mode-failure Disabled
pppoe-ia-rate-limit Disabled
psecure-violation Enabled
security-violation Disabled
sfp-config-mismatch Disabled
small-frame Disabled
storm-control Disabled
udld Disabled
vmps Disabled
Timer interval: 300 seconds
Interfaces that will be enabled at the next timeout:
Interface Errdisable reason Time left(sec)
--------- ----------------- --------------
Fa1/0/1 psecure-violation 291
switch#
Pour éviter une coupure du port, on peut configurer celui-ci en mode protect (voir la section théorie plus haut) :
switch(config)#interface fastEthernet 1/0/1
switch(config-if)#switchport port-security violation protect
switch(config-if)#end
switch#sh port-security
Secure Port MaxSecureAddr CurrentAddr SecurityViolation Security Action
(Count) (Count) (Count)
---------------------------------------------------------------------------
Fa1/0/1 1 1 0 Protect
Fa1/0/2 3 0 0 Shutdown
---------------------------------------------------------------------------
Total Addresses in System (excluding one mac per port) : 0
Max Addresses limit in System (excluding one mac per port) : 6144
switch#
Configuration du mode d’apprentissage des adresses mac sticky :
switch(config)#int fastEthernet 1/0/2
switch(config-if)#switchport port-security mac-address ?
H.H.H 48 bit mac address
sticky Configure dynamic secure addresses as sticky
switch(config-if)#switchport port-security mac-address sticky
switch(config-if)#
Dans ce mode, les adresses mac sont apprises automatiquement et apparaissent dans la configuration. Il est alors possible de les enregistrer.
switch#sh run int fa1/0/2
Building configuration...
Current configuration : 336 bytes
!
interface FastEthernet1/0/2
switchport access vlan 2
switchport mode access
switchport port-security maximum 3
switchport port-security
switchport port-security mac-address sticky
switchport port-security mac-address sticky 001c.7eed.1234 vlan access
switchport port-security mac-address sticky 001d.5356.2222 vlan access
end
switch#
Désactivation de l’apprentissage:
switch(config)#int fa1/0/2
switch(config-if)#no switchport port-security mac-address sticky
Enfin, il est possible de limiter dans le temps la validité d’une adresse. Ce qui nous permet d’ajouter ou de supprimer des machines sans avoir à se soucier de la gestion des adresses mac, tout en gardant un nombre maximum d’adresses par port.
Deux modes :
- absolute : les adresses mac sont toutes supprimées après un certain temps.
- inactivity : les adresses mac sont supprimées après un certain temps d’inactivité.
Pour mettre une validité à 3 heures :
switch(config)#int fastEthernet 1/0/2
switch(config-if)#switchport port-security aging time 180
switch(config-if)#^Z
switch#sh port-security
Secure Port MaxSecureAddr CurrentAddr SecurityViolation Security Action
(Count) (Count) (Count)
---------------------------------------------------------------------------
Fa1/0/1 1 0 0 Protect
Fa1/0/2 3 2 0 Shutdown
---------------------------------------------------------------------------
Total Addresses in System (excluding one mac per port) : 1
Max Addresses limit in System (excluding one mac per port) : 6144
switch#
switch#sh port-security interface fastEthernet 1/0/2
Port Security : Enabled
Port Status : Secure-up
Violation Mode : Shutdown
Aging Time : 180 mins
Aging Type : Absolute
SecureStatic Address Aging : Disabled
Maximum MAC Addresses : 3
Total MAC Addresses : 2
Configured MAC Addresses : 0
Sticky MAC Addresses : 0
Last Source Address:Vlan : 0012.1234.e3ee:2
Security Violation Count : 0
Pour mettre une limite en cas d’inactivité de 3 minutes :
switch(config)#int fastEthernet 1/0/2
switch(config-if)#switchport port-security aging time 3
switch(config-if)#switchport port-security aging type inactivity
switch(config-if)#
switch#conf t
switch#sh port-security interface fastEthernet 1/0/2
Port Security : Enabled
Port Status : Secure-up
Violation Mode : Shutdown
Aging Time : 3 mins
Aging Type : Inactivity
SecureStatic Address Aging : Disabled
Maximum MAC Addresses : 3
Total MAC Addresses : 2
Configured MAC Addresses : 0
Sticky MAC Addresses : 0
Last Source Address:Vlan : 0012.1234.e3ee:2
Security Violation Count : 0