Configuration de base - commutateur cisco
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 commandeconf 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 view "Prenom Nom" 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 connexionssh -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
Permission du réseau d'administration
access-list 1 permit 10.100.100.0 0.0.0.15 log
Interdiction de tout le reste
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
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 bootp server 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 >
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 valeurshutdown
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).