« Configuration de base - commutateur cisco » : différence entre les versions

De Wiki doc

(Refonte complète de la page pour modernisation et ajouts)
(→‎Restriction d'accès réseau : Ajout d'une ligne d'exclusion journalisante à la fin de chaque règle d'acceptation.)
 
(Une version intermédiaire par le même utilisateur non affichée)
Ligne 24 : Ligne 24 :
==Utilisateurs système==
==Utilisateurs système==
Il est important de créer des utilisateurs dédiés à chaque administrateur du système afin de permettre l'identification d'une modification ainsi qu'une révocation ultérieur des accès. Il est en outre possible de limiter un utilisateur à certaines commandes.
Il est important de créer des utilisateurs dédiés à chaque administrateur du système afin de permettre l'identification d'une modification ainsi qu'une révocation ultérieur des accès. Il est en outre possible de limiter un utilisateur à certaines commandes.
  username p.nom privilege 15 view "Prenom Nom" algorithm-type sha256 secret MdP
  username p.nom privilege 15 algorithm-type sha256 secret MdP


L'usage d'un [[Radius - cisco|serveur d'authentification]] est également possible.
L'usage d'un [[Radius - cisco|serveur d'authentification]] est également possible.
Ligne 55 : Ligne 55 :


===Restriction IPv4===
===Restriction IPv4===
Permission du réseau d'administration
Règle de permission du réseau d'administration
  access-list 1 permit 10.100.100.0 0.0.0.15 log
  access-list 1 permit 10.100.100.0 0.0.0.15 log
access-list 1 deny any log
''Note : les réseaux non autorisés seront expulsés et une ligne sera écrite dans le journal à chaque tentative.''


Interdiction de tout le reste
Règle d'interdiction globale
  access-list 2 deny any log
  access-list 2 deny any log


Ligne 67 : Ligne 70 :
  ipv6 access-list acl-admin-lan
  ipv6 access-list acl-admin-lan
   permit ipv6 FC00:10:100:100::/64 FC00:10:100:100::/64 log
   permit ipv6 FC00:10:100:100::/64 FC00:10:100:100::/64 log
  deny ipv6 any any log


Interdiction de tout le reste
Interdiction de tout le reste
Ligne 109 : Ligne 113 :
  no service finger
  no service finger
  no service config
  no service config
no ip bootp server
  no ip source-route
  no ip source-route
  no ip http server
  no ip http server
Ligne 125 : Ligne 128 :
Dans certains cas, un certificat ''X.509'' est présent par défaut, il convient de le supprimer
Dans certains cas, un certificat ''X.509'' est présent par défaut, il convient de le supprimer
  no crypto pki trustpoint <TP-self-signed-123456789 >
  no crypto pki trustpoint <TP-self-signed-123456789 >
=Trames géantes=
Si votre réseau permet l'usage des trames ''Ethernet'' géantes (''jumbo frame''), il est préférable de les activer sur votre commutateur afin d'accroitre les performances tout en réduisant la charge ''CPU'' (surtout si vous prévoyez une commutation à 10 gbps).
Activation des trames géantes (actif au prochain démarrage)
system mtu jumbo 9000
Permettre le routage des trames géantes
system mtu routing 9000


=Cloisonnement par VLAN=
=Cloisonnement par VLAN=

Dernière version du 25 juin 2022 à 14:00

Ce document décrit la configuration de base d'un commutateur Cisco afin d'avoir une sécurité et une base de travail convenable.

INFORMATION

Pour entrer ces commandes, il est nécessaire de rentrer en mode de configuration globale via la commande conf t en mode privilège.

Un commutateur Cisco WS-C3560CX-12PD-S avec IOS c3560cx-universalk9-mz.152-7.E2.bin est utilisé pour cette documentation.

Identification

Tout au long de votre configuration, il est important que vous nommiez un maximum les choses afin de les identifier plus facilement. Ceci permet de limiter les erreurs humaines et facilite la reprise d'une configuration.

Nom d'hôte

Avant toute chose, n'oubliez pas de définir un nom d'hôte à votre machine afin de l'identifier dans de futures usages (débogage, journalisation, sauvegardes, supervision, connexions multiples...)

hostname COM-DOC-1

Bannière d'accueil

Il est possible d'afficher un message avant la connexion d'un utilisateur. Bien que cette pratique soit déconseillée par la recommandation n°23 du guide de recommandation de l'ANSSI traitant du sujet (première source), elle permet dans certains environnement d'apporter des informations utiles aux administrateurs (pensez qu'elles peuvent également le faire pour un attaquant...).

banner motd ^
Votre message d'accueil avant connexion utilisateur.
Peut tenir sur plusieurs lignes.
^

Accès à l'équipement

Utilisateurs système

Il est important de créer des utilisateurs dédiés à chaque administrateur du système afin de permettre l'identification d'une modification ainsi qu'une révocation ultérieur des accès. Il est en outre possible de limiter un utilisateur à certaines commandes.

username p.nom privilege 15 algorithm-type sha256 secret MdP

L'usage d'un serveur d'authentification est également possible.

Pour empêcher la possibilité de passer du mode exec utilisateur au mode exec privilégié, il est souhaitable de déplacer la commande enable dans l'environnement privilégié

privilege exec level 15 enable

L'ajout d'une protection compliquant les attaques par force brut est également une bonne pratique. Il est ainsi possible d'ajouter un délais de 2 secondes entres chaque tentatives et d’interdire la connexion pendant 5 minutes si 3 erreurs d'authentification ont eu lieu en 2 minutes.

login delay 2
login block-for 300 attempts 3 within 120

Connexion distante

Afin de prendre en main l'équipement à distance, le protocole SSH est généralement utilisé.

Par défaut, aucune clé n'existe, il convient d'en créer une :

crypto key generate rsa modulus 4096 usage-keys label SSH-DOC

INFORMATION

À ce jour, IOS ne permet pas d'utiliser une clé à courbe elliptique pour l'usage de SSH. Il convient alors de se rabattre sur la plus grande clé RSA possible tout en gardant à l'esprit d'une possible désuétude lorsque les ordinateurs quantiques seront suffisamment développés.

Nous préciserons également la version du protocole, les algorithmes de cryptographie utilisés ainsi que la taille minimale de la clé Diffie-Hellman (à adapter en fonction de la tolérance de votre modèle)

ip ssh version 2
ip ssh server algorithm mac hmac-sha2-256 hmac-sha2-512
ip ssh server algorithm encryption aes256-cbc aes256-ctr
ip ssh dh min size 4096

INFORMATION

La version 8.8/8.8p1 d'OpenSSH sortie le 26/09/2021 a désactivée par défaut les signatures RSA utilisant l’algorithme SHA-1. Afin de permettre une connexion à vos équipements, vous devez préciser l'usage de ces protocoles dans la commande de connexion ssh -oHostKeyAlgorithms=+ssh-rsa -oKexAlgorithms=+diffie-hellman-group14-sha1 p.nom@IP ou via le fichier de configuration client avec les paramètres décrits dans la note de version cité précédemment.

Restriction d'accès réseau

Il peut être intéressant de restreindre l'accès à votre équipement dans son seul réseau d'administration afin de vous prémunir de tentatives extérieurs. Nous utiliserons des ACL sur les lignes d'accès utilisées par le service SSH (elles seront appliquées à la section dédiée aux interfaces en ligne de commande).

Restriction IPv4

Règle de permission du réseau d'administration

access-list 1 permit 10.100.100.0 0.0.0.15 log
access-list 1 deny any log

Note : les réseaux non autorisés seront expulsés et une ligne sera écrite dans le journal à chaque tentative.

Règle d'interdiction globale

access-list 2 deny any log

Restriction IPv6

Lorsque cela est possible, j’apprécie le fait d'utiliser IPv6 pour la connexion à mes équipements réseau afin d'apporter une rupture protocolaire ajoutant une barrière supplémentaire à un éventuel attaquant. L'IPv6 n'étant pas routable dans IPv4, une erreur de configuration aura un impact négligeable sur l'accessibilité de la console d'administration (y compris via rebond SSH dans la mesure où le plan d'adressage d'administration est spécifique aux éléments actifs de réseau).

Permission du réseau d'administration

ipv6 access-list acl-admin-lan
 permit ipv6 FC00:10:100:100::/64 FC00:10:100:100::/64 log
 deny ipv6 any any log

Interdiction de tout le reste

ipv6 access-list acl-admin-rien
 deny ipv6 any any log

Interfaces en ligne de commande

Ces interfaces sont le point d'entré de l'administration de votre équipement. Il est impératif d'en restreindre l'accès en obligeant notamment d'authentifier les utilisateurs. La restriction des protocoles autorisés, l'application des ACL précédemment créées ainsi que la déconnexion automatique après inactivité prolongée sont de mise. Nous n'oublierons pas non plus de désactiver celles qui ne seront pas utilisées.

! Lignes séries
line console 0
 exec-timeout 5 0
 logging synchronous
 login local

! Lignes de sessions pour SSH
line vty 0 4
 access-class acl-admin-lan in
 access-class acl-admin-rien out
 exec-timeout 5 0
 logging synchronous
 login local
 transport input ssh
 transport output none

! Lignes inutilisées
line vty 5 15
 access-class acl-admin-rien in
 access-class acl-admin-rien out
 no exec
 login
 transport input none
 transport output none

Pour rappel, une ligne VTY correspond à une connexion distante. Ici nous autorisons donc 5 sessions simultanées.

ATTENTION

Je recommande de tester une connexion à votre utilisateur avant d'enregistrer la configuration si vous ne voulez pas risquer de perdre du temps à réinitialiser votre mot de passe en cas de problème d'authentification.

Protocoles à désactiver

Par défaut, une myriade de services tournent sur un équipement Cisco. En plus de charger pour rien le CPU et de générer des trames polluantes sur le réseau, ils offrent une surface d'attaque plus large aux quatre vents. Voici les éléments que je désactive :

no service tcp-small-servers
no service udp-small-servers
no service finger
no service config
no ip source-route
no ip http server
no ip http secure-server
no ip domain-lookup
ip arp proxy disable
no cdp run
service password-encryption
no service password-recovery
no snmp-server enable traps
no snmp-server
vtp mode off
service timestamps log datetime localtime

Dans certains cas, un certificat X.509 est présent par défaut, il convient de le supprimer

no crypto pki trustpoint <TP-self-signed-123456789 >

Trames géantes

Si votre réseau permet l'usage des trames Ethernet géantes (jumbo frame), il est préférable de les activer sur votre commutateur afin d'accroitre les performances tout en réduisant la charge CPU (surtout si vous prévoyez une commutation à 10 gbps).

Activation des trames géantes (actif au prochain démarrage)

system mtu jumbo 9000

Permettre le routage des trames géantes

system mtu routing 9000

Cloisonnement par VLAN

Il est commun de dédier un VLAN par usage afin de simplifier un filtrage ultérieur, cloisonner certains ports et limiter les domaines de diffusion clients.

Une pratique recommandée (R2- du guide de recommandation de l'ANSSI) est de dédier un VLAN pour l'administration (à défaut d'utiliser une interface physique (R1)), un pour les interfaces inutilisées et un autre pour le VLAN natif d'un tronc 802.1Q. Ceci permettra d'éviter que des machines se retrouvent avec la possibilité d’accéder à des ressources non désirées.

Voici un exemple de configuration suivant les principes énoncés :

! Création d'un VLAN de cloisonnement
vlan 666 
 name Quarantaine
 shutdown
 ! Création d'un VLAN natif alternatif
vlan 999 
 name Natif
 shutdown
! Exemple de VLAN Production
vlan 10
 name Production
! Exemple de VLAN d'administration
vlan 100 
 name Administration

ASTUCE

Notez la valeur shutdown passée aux VLAN n'ayant pas vocation à mettre en lien des machines. Cette configuration permet d'empêcher la commutation des trames entre les machines appartenant à ces réseaux.

Configuration des interfaces réseau

Un commutateur contient souvent plus d'interfaces que le besoin réel. Il faut cependant prendre soin de configurer chacune d'elles afin de ne pas aboutir à un comportement inattendu.

Interfaces non utilisées

Les interfaces n'ayant pas vocation à accueillir des clients dans l'immédiat doivent êtres désactivées.

default interface range GigabitEthernet1/0/5 - 12
interface range GigabitEthernet1/0/5 - 12
 description --- Quarantaine ---
 switchport access vlan 666
 switchport mode access
 switchport nonegotiate
 shutdown
 no cdp enable
 no vtp

Pour résumer, les interfaces sont :

  • éteintes
  • placées dans un VLAN dédié aux interfaces inutilisées
  • le mode access est forcé et la négociation de ce mode est désactivée
  • les protocoles CDP et VTP sont désactivés

L'intérêt de désactiver les protocoles sur l'interface en plus de la configuration globale réside dans le fait que si un usage nécessite de réactiver l'un d'eux (pour par exemple la VOIP via Cisco Call Manager Express), il faudra manuellement spécifier les interfaces supportant celui-ci (le comportement globale par défaut reste donc le blocage).

Interface de production

Pour un réseau de machines accédants aux même ressources, les interfaces peuvent êtres configurées comme suit :

default interface range GigabitEthernet1/0/1 - 4
int range g1/0/1 - 4
 description --- Production ---
 switchport mode access
 switchport access vlan 10
 switchport port-security
 switchport port-security maximum 1
 switchport port-security mac-address sticky
 switchport port-security violation shutdown
 switchport nonegotiate
 no cdp enable
 no vtp
 spanning-tree portfast
 spanning-tree bpduguard enable

Pour résumer, les interfaces sont :

  • placées dans un VLAN dédié aux interfaces de production
  • le mode access est forcé et la négociation de ce mode est désactivée
  • les protocoles CDP et VTP sont désactivés
  • le protocole Spanning tree est accéléré (à faire uniquement sur des équipements de terminaison)
  • le verrouillage du port est activé en cas de détection d'une trame liée à ce protocole
  • un filtrage par adresse MAC est actif et limité à une entrées par port (pensez à enregistrer la configuration après la première détection d'adresse)
  • en cas de connexion non enregistrée, le port s'éteint

En fonction de la politique que vous appliquez à votre site, il peut être intéressant de lever automatiquement le blocage d'un port en cas de violation afin de ne pas passer son temps à corriger des problèmes techniques superflus manuellement. Il faudra cependant s'atteler à corriger les problèmes humains à l'origine de ceux-ci...

errdisable recovery cause psecure-violation
errdisable recovery interval 60

Interface d'administration

L'interface physique, contient la même configuration que celle de production (pensez à changer le VLAN). L'interface de VLAN gérant le niveau 3 comporte quant à elle les paramètres qui suivent.

La configuration suivante concerne l'IPv6 sans auto-configuration dans une plage à porté locale unique (RFC 4193) :

interface Vlan100
 description --- Administration ---
 no ip address
 ipv6 address FC00:10:100:100::1/64
 ipv6 enable
 ipv6 nd prefix default no-autoconfig no-rtr-address
 ipv6 nd prefix FC00:10:10:100::/64 no-advertise
 ipv6 nd managed-config-flag
 ipv6 nd other-config-flag
 ipv6 nd router-preference High

Interface de VLAN par défaut

Cette interface se trouvant dans le VLAN natif présent par défaut dans IOS et non supprimable doit être désactivée afin de ne pas se retrouver avec un niveau 3 accessible à une machine non désirée (d'autant plus que la configuration par défaut est en client DHCP...).

interface Vlan1
 description --- Interface inactive ---
 no ip address
 shutdown

Interconnexion de commutateurs

Lors de l'interconnexion de plusieurs commutateurs, le protocole IEEE 802.1Q doit systématiquement être utilisé (même pour un seul VLAN). Une liste exhaustive des VLAN autorisés doit être explicitement indiquée et le VLAN natif doit être changé.

default int g1/0/14
int g1/0/14
 description --- Vers COM-DOC-2 ---
 switchport mode trunk
 switchport trunk native vlan 999
 switchport trunk allowed vlan 10,100
 switchport nonegotiate
 no cdp enable
 no vtp

Journalisation

Il est important d'avoir une trace des évènements ayants eu lieu sur notre équipement (notamment les connexions d'utilisateurs).

La journalisation des évènements peut s'effectuer dans le VTY courant (au même titre que la console série) en mode d'exécution privilégié via la commande

terminal monitor

Certains évènements peuvent être ajoutés à la journalisation via les paramètres de la commande login comme ceux en rapport avec l'état de connexion d'un utilisateur

login on-failure log
login on-success log

En mode de configuration globale, il est également possible d'ajouter ceux en rapport avec les connexions SSH

ip ssh logging events

Afin de conserver ces journaux, il convient de les exporter en continu sur un serveur dédié.

Sauvegarde

La sauvegarde d'un équipement fait partie intégrante de sa maintenance. En cas de problème, elle permettra de restaurer un fonctionnement normal. Si les sauvegardes sont archivées, elles permettent de suivre l'évolution d'une configuration et de restaurer certains paramètres ayant étés supprimées plusieurs sauvegardes en arrière.

La méthode que je privilégie le plus possible est l'archivage sur un partage WebDav via TLS. En cas d'impossibilité d'utiliser cette méthode, le protocole SCP (voir TFTP dans le pire des cas) peut être utilisée (il faudra toutefois prendre soin de définir un transport output adéquat dans vos VTY).

Sources