Objectifs de certification
CCNA 200-301
5.3 Configurer l’accès aux périphériques avec des mots de passe
5.4 Décrire les éléments des politiques de sécurité comme la gestion, la complexité, et les alternatives aux mots de passe (authentications multifacteur, par certificats, et biométriques)
Chiffement des mots de passes locaux en Cisco IOS
Il est de bonne pratique aujourd’hui de ne plus utiliser le paramètre “password
” dans les configurations Cisco IOS car il laisse les crédits en clair ou dans un algorithme vulnérable. Ce chapitre reprend les différents types de mots de passe locaux dans une configuration Cisco IOS, leur mise en place et des tests d’épreuve : Cisco Type 7, Type 5, Type 8, Type 4, Type 9.
Les démonstrations d’épreuve de mots de passe ont seulement un but éducatif. On trouvera une série de recommandation de sécurité en conclusion du propos.
1. Objectif du chiffrement des mots de passe dans les configurations
Le chiffrement des mots de passe dans les configurations vise à protéger le périphérique contre un accès non autorisé aux fichiers de configuration. En effet, ils contiennent ces mots de passe. Les fichiers de configuration deviennent accessibles avec une méthode “Password Recovery” pour les routeurs Cisco ou pour les commutateurs Cisco.
2. Mots de passe en clair
Le paramètre de commande password
est à bannir car les mots de passe encodés apparaissent en clair dans la configuration du routeur ou du commutateur Cisco. Voici donc ce qu’il ne faut surtout pas faire en situation de production.
Pour fixer un mot de passe d’accès au mode privilège et à une console Telnet, ou pour créer un utilisateur :
(config)#enable password mon_mot_de_passe
(config)#line vty 0 4
(config-line)#password mon_mot_de_passe
(config-line)#login
(config-line)#transport input telnet
(config-line)#exit
(config)#username admin password mon_mot_de_passe
(config)#exit
Avec ces méthodes les mots de passe locaux s’affichent dans la configuration :
#show run | include password
no service password-encryption
enable password mon_mot_de_passe
username admin password 0 mon_mot_de_passe
password mon_mot_de_passe
3. Mots de passe Cisco Type 7
La commande service password-encryption
chiffre les mots de passe en clair (de la commande password
) en “Type 7”.
(config)#service password-encryption
(config)#exit
Voici le résultat dans la configuration.
R1#show run | include password
service password-encryption
enable password 7 0309540539022E58710D1C3A0713181F01
username admin password 7 1104160B281F04183B2E2E1B3832263116
password 7 1308181C34010B3E14202D0C2523001413
4. Casser des mots de passe Cisco Type 7
Mais ces mots de passe sont chiffrés de manière faible et sont faciles à décoder :
En réalité, le chiffrement de “Type 7” est connu depuis 1995 et n’a pour d’autre but que de se protéger d’attaques contre des regards indiscrets (“eavesdropping”). L’algorithme Cisco “Type 7” est une implémentation de l’algorithme de Vigenere.
Une autre manière de décoder est d’utiliser aussi la méthode “Key Chain” directement dans l’IOS (Merci à Steve De Jongh).
- On encode le mot de passe “Type 7” dans un trousseau de clés :
(config)#key chain recovery
(config-keychain)#key 1
(config-keychain-key)#key-string 7 1308181C34010B3E14202D0C2523001413
(config-keychain-key)#exit
(config-keychain)#exit
(config)#exit
- Et puis on l’affiche :
#show key chain recovery
Key-chain recovery:
key 1 -- text "mon_mot_de_passe"
accept lifetime (always valid) - (always valid) [valid now]
send lifetime (always valid) - (always valid) [valid now]
5. Secret versus password
Les mots de passe locaux peuvent être chiffrés avec un algorithme de chiffrement asymétrique (MD5, SHA-256 ou SCRYPT). Avec ce type de chiffrement, il devient coûteux de tenter de retrouver des mots de passe. Mais attention, la force de l’algorithme ne suffit pas. Faut-il que le mot de passe soit résistant à une attaque par dictionnaire ou de type “Brute Force”.
- Type 5 : MD5
- Type 81 : PBKDF2, SHA-256, salt de 80 bits, 20000 iterations.
- Type 9 : SCRYPT, salt de 80 bits, 16384 iterations.
On recommandera d’utiliser le “Type 8” ou le “Type 9” quand c’est possible (IOS IOS 15.3(3) minimum) alors que le “Type 5” est utilisé par défaut. MD5 est également à éviter aujourd’hui.
(config)#enable algorithm-type ?
md5 Encode the password using the MD5 algorithm
scrypt Encode the password using the SCRYPT hashing algorithm
sha256 Encode the password using the PBKDF2 hashing algorithm
Que se passe-t-il quand un enable secret
et enable password
sont concurrents ?
- Ils doivent être différents.
- Un
enable secret
est toujours prioritaire.
6. Création des mots de passe “secret”
Pour une authentification des utilisateurs locaux dans les consoles distantes :
(config)#line vty 0 4
(config-line)#login local
(config-line)#transport input ssh
(config-line)#exit
En MD5 :
(config)#username francois secret testtest
(config)#do sh run | include username
username francois secret 5 $1$u0QO$.0MBNApYeIoT26TDahoim1
Quelles sont les autres possibilités ?
(config)#username francois algorithm-type ?
md5 Encode the password using the MD5 algorithm
scrypt Encode the password using the SCRYPT hashing algorithm
sha256 Encode the password using the PBKDF2 hashing algorithm
En SHA-256 :
(config)#username francois algorithm-type sha256 secret testtest
(config)#do sh run | include username
username francois secret 8 $8$.zPZtk4AkpjaXM$K.KQzVds93K5BKgx3dk7Vw43PTj1Q1bT9SnTvCAML9k
En Scrypt :
(config)#username francois algorithm-type scrypt secret testtest
(config)#do sh run | include username
username francois secret 9 $9$nP4LWiOwGSowps$JGbyH6R1Em6K/OBksVrHKaD.RCTYZGXEYIoTO7CQUyk
7. Tester la force des mots de passe Cisco IOS
Dans une station Kali Linux, on reprend les empreintes dans des fichiers à attaquer.
root@KaliLinuxCLI-2:/# cat type5.txt
type5:$1$u0QO$.0MBNApYeIoT26TDahoim1
root@KaliLinuxCLI-2:/# cat type8-sha256.txt
type8:$8$.zPZtk4AkpjaXM$K.KQzVds93K5BKgx3dk7Vw43PTj1Q1bT9SnTvCAML9k
root@KaliLinuxCLI-2:/# cat type9-scrypt.txt
type9:$9$nP4LWiOwGSowps$JGbyH6R1Em6K/OBksVrHKaD.RCTYZGXEYIoTO7CQUyk
8. Composition d’une empreinte de mot de passe
root@KaliLinuxCLI-2:/# cat *.txt
type5:$1$u0QO$.0MBNApYeIoT26TDahoim1
type8:$8$.zPZtk4AkpjaXM$K.KQzVds93K5BKgx3dk7Vw43PTj1Q1bT9SnTvCAML9k
type9:$9$nP4LWiOwGSowps$JGbyH6R1Em6K/OBksVrHKaD.RCTYZGXEYIoTO7CQUyk
Dans cet exemple, une empreinte de mot de passe est composée de 3 éléments séparé par le signe $
:
- Le type de chiffrement. Ici :
$1$
,$8$
,$9$
. - Le Salt qui rend l’empreinte unique.
- L’empreinte elle-même.
9. Cassage avec john
Avec notre mot de passe très faible testtest
, le résultat est immédiat en MD5.
root@KaliLinuxCLI-2:/# john ./type5.txt
Created directory: /root/.john
Using default input encoding: UTF-8
Loaded 1 password hash (md5crypt, crypt(3) $1$ [MD5 128/128 SSE2 4x3])
Press 'q' or Ctrl-C to abort, almost any other key for status
testtest (type5)
1g 0:00:00:00 DONE 2/3 (2017-09-25 22:06) 2.702g/s 10889p/s 10889c/s 10889C/s tata..toucan
Use the "--show" option to display all of the cracked passwords reliably
Session completed
63 secondes en “Type 8” mais cela tient au mot de passe très faible.
root@KaliLinuxCLI-2:/# john ./type8-sha256.txt
Using default input encoding: UTF-8
Loaded 1 password hash (PBKDF2-HMAC-SHA256 [PBKDF2-SHA256 128/128 SSE2 4x])
Press 'q' or Ctrl-C to abort, almost any other key for status
testtest (type8)
1g 0:00:01:03 DONE 2/3 (2017-09-25 22:09) 0.01580g/s 63.53p/s 63.53c/s 63.53C/s tata..testtest
Use the "--show" option to display all of the cracked passwords reliably
Session completed
29 secondes en “Type 9” toujours à cause d’un mot de passe faible.
root@KaliLinuxCLI-2:/# john ./type9-scrypt.txt
Using default input encoding: UTF-8
Loaded 1 password hash (scrypt [Salsa20/8 128/128 SSE2])
Press 'q' or Ctrl-C to abort, almost any other key for status
testtest (type9)
1g 0:00:00:29 DONE 2/3 (2017-09-25 22:11) 0.03338g/s 134.2p/s 134.2c/s 134.2C/s testtest
Use the "--show" option to display all of the cracked passwords reliably
Session completed
10. Recommandations sur les mots de passe locaux en Cisco IOS
- Utiliser des mots de passe forts (diversifiés, longs, aléatoires).
- Utiliser le mot-clé
secret
au lieu depassword
dans les configurations. - Utiliser des mots de passe de Type 9 quand c’est possible.
- Utiliser un authentification centralisée AAA Radius ou TACACS+ (selon la taille de l’infrastructure).
- Usage des rôles ou des vues avec délégation des droits.
- La désactivation de Telnet, FTP, TFTP comme protocoles de gestion.
- Utiliser SSH avec une authentification par clé.
- Désactiver la fonctionnalité “password recovery”.
Le “Type 4” utilise aussi SHA-256 mais est plus vulnérable que MD5 (Cisco IOS and Cisco IOS XE Type 4 Passwords Issue). ↩