Sécuriser un commutateur Cisco: les bases
Dans cet article nous allons voir les politiques de base en matière de sécurité pour configurer correctement un switch Cisco, puis nous utiliserons Kali Linux pour effectuer différentes attaques et tester la fiabilité de notre lab.
Comme écrit ci-dessus, nous allons voir aujourd’hui les règles élémentaires concernant la sécurisation d’un commutateur Cisco. Je vais m’efforcer d’être le plus complet et précis possible, mais la sécurité d’équipement réseau est tellement complexe que je ne pourrais forcément pas parler de tout, donc prenez cet article comme un simple coup de pouce, une aide supplémentaire, et un non un recueil de « best practices » car je n’en ai pas du tout la prétention ! 🙂
1) Protection des mots de passe stockés sur le commutateur
La base de tout ! Que ce soit une personne qui regarde de façon indiscrète par dessus votre épaule, ou un utilisateur ayant un accès physique au switch et sachant donc afficher sa configuration (show running-config), le chiffrement des mots de passe est indispensable car sans cela ils seront affichés en clair.
Pour cela, Cisco propose différents types de chiffrement asymétriques, à savoir (et dans l’ordre croissant d’efficacité) :
- Le Type 7, exemple: mon_mot_de_passe devient donc 0309540539022E58710D1C3A0713181F01. L’inconvénient ? Il est déchiffrable en quelques secondes et via plusieurs sites web, comme celui-ci. Pourquoi donc l’avoir créé ? Dans le seul but de se protéger des regards indiscrets, appelés « eavesdropping » via la commande service password-encryption.
- Le Type 5 (MD5), exemple: mon_mot_de_passe devient donc eda775c5c816d7d1551bf1543ca58090. Cet algorithme est à éviter aujourd’hui car d’autres algorithmes plus robustes sont disponibles, mais il constitue une très bonne alternative.
- Le Type 8 (SHA-256), exemple mon_mot_de_passe devient donc 9CD4A59E9F7A9538678A71BA8D9F12A5A09092C72C74C78E358AD12B32134471. Cet algorithme a été créé par la NSA elle-même et est encore à l’heure actuelle très robuste et très utilisé.
- Le Type 9 (SCRYPT), exemple mon_mot_de_passe devient donc bG2U7fIW6phO6O++XrAPIdKnuAw9hpbSrbXZ3Jxh4Ic=. Cet algorithme est utilisé en version simplifiée par certaines crytpo-monnaies comme le Litecoin pour sécuriser leurs transactions. Il est très puissant et presque identique au SHA-256 niveau robustesse.
En général, Cisco recommande d’utiliser plutôt le type 8 ou 9 quand il est disponible (il vous faut un routeur/commutateur sous IOS 15.3 minimum). Bien, maintenant nous allons voir comment sécuriser les différents moyens d’accès à notre équipement (ligne console, lignes VTY, etc).
Petit rappel: la commande service password-encryption permet comme dit plus haut de chiffrer en MD7 la totalité des mots de passe apparaissant en clair sur le commutateur, ceci dans le but d’éviter les regards indiscrets lorsque l’on trifouille dans la configuration ou que l’on affiche celle-ci. Si vos mots de passe sont déjà tous chiffrés en MD5 par exemple, cette commande ne sert à rien (même si on préconise de toujours l’activer, au cas où un oubli ferait apparaître l’un ou l’autre mot de passe en clair).
Donc, commençons. Pour sécuriser la ligne console, rien de plus simple : on créer un utilisateur en local, on lui attribue un mot de passe que l’on chiffre avec un algorithme assez fort puis l’on configure la ligne pour forcer la connexion via un compte local avant de pouvoir accéder à l’équipement.
username it-anthony secret mon_super_mot_de_passe
line console 0
login local
exit
Dans l’exemple ci-dessus, je n’ai pas spécifié d’algorithme pour le mot de passe d’it-anthony, donc ce sera chiffré en MD5 par défaut. Pour changer cela, il faut procéder ainsi:
username it-anthony algorithm-type sha-256 secret mon_super_mot_de_passe
Grâce à la commande algorithm-type sha-256 on a défini le type de chiffrement à utiliser, c’est aussi simple que ça.
Concernant les lignes VTY (comprenez les lignes virtual teletype, càd les lignes distantes) on peut déjà commencer par changer le protocole de base (Telnet) et y mettre plutôt SSH en version 2.
ip domain-name notamax.local
crypto key generate rsa
1024
line vty 0 15
transport input ssh
login local
ip ssh version 2
ip ssh time-out 120
Donc concrètement, voilà ce qu’on a fait: on a généré une clé RSA de 1024bits (ce qui est suffisant, mais si vous le désirez vous pouvez en mettre une de 2048), puis nous avons sélectionné la totalité des lignes VTY disponibles et on a remplacé telnet par SSH en version 2. On a aussi activé la demande de mot de passe stocké en local (comme pour la ligne console plus haut) et ensuite on rajoute une déconnexion automatique au bout de 120s d’inactivité.
A ce stade, votre commutateur est déjà bien protégé ! On peut donc se permettre de rajouter une petite bannière lors de la connexion à l’équipement, juste pour l’esthétique et éventuellement le côté juridique de la chose:
banner motd #Unauthorized access to this device is prohibited! Property of Notamax !#
Cela pourra éventuellement semer le doute chez un éventuel attaquant, sait-on jamais😄
Maintenant, passons à la partie plus sérieuse. Le cassage de mot de passe Cisco via une Kali Linux.
2) Déchiffrer des mots de passe avec l’outil John The Ripper
Comme vous pouvez vous en douter, aucun mot de passe n’est invulnérable, et même ceux présents sur notre cher équipement Cisco.
Pour cela, on récupère l’empreinte de notre mot de passe et on démarre notre Kali Linux :
En général, une empreinte de mot de passe est composée de 3 parties séparées par le signe $
:
- Le type de chiffrement (
$1$
,$8$
,$9$)
- Le Salt (c’est ce qui rend l’empreinte unique)
- Et enfin le mot de passe lui-même
Maintenant place au déchiffrement ! La simple commande
john nomdufichier et le résultat apparaît presque instantanément ! Pour information, j’ai ici simplement choisi le mot de passe testtest, donc assez facile à déchiffrer normalement:
Pour le sha-256 John aura mis un peu plus de temps, mais le voilà !
Et enfin le dernier, en scrypt qui aura mis légèrement plus de temps
encore :
Bien entendu, le mot de passe choisi ici était très facile à déchiffrer, mais de nos jours avec la puissance de calcul qui augmente très rapidement, ne soyez jamais trop sûr de vous… et mettez donc toujours un mot de passe complexe mêlant minuscules, majuscules, chiffres, et caractères spéciaux !
3) Isoler les ports de son commutateur
Une des bonnes pratiques de base est celle d’éteindre les ports non-utilisés de votre commutateur pour empêcher qu’un attaquant se branchant dessus puisse réaliser du « packet sniffing« , ou encore forger de fausses trames et semer la pagaille au sein de votre réseau. Pour ce faire, rien de plus simple !
interface FastEthernet 0/1 - 5
switchport mode access
shutdown
De cette façon, les interfaces une, deux, trois, quatre, et cinq de notre switch ne pourront pas négocier de trunk (mode access) et en plus de cela elles seront purement et simplement éteintes !
Une seconde pratique au lieu de fermer les ports consistent à placer ces derniers dans un VLAN isolé, comme un VLAN 666 qui n’aboutirait à rien.
4) Mot de la fin
Et bien voilà voilà, je n’ai (pour le moment) pas d’autres astuces à vous communiquer, mais si un jour j’ai le temps de peaufiner cet article je le mettrai à jour. Bien entendu, je n’ai pas parlé du changement du VLAN natif, de la sauvegarde des fichiers de configs via SCP ou HTTPS, ou encore des ACL qui sont aussi quelque chose de très important en terme de sécurité, mais qui demandent un peu plus de temps à mettre en place et cet article aurait été encore repoussé.
Ceci conclut donc ce petit article sur quelques notions de base en terme de sécurité sur un commutateur/routeur Cisco. Alors certes j’ai très certainement omis certaines choses, mais comme dit en début je n’ai pas la prétention de tout connaître et je désirais simplement vous partager quelques notions de base 🙂