Skip to main content

ssh cisco ios

·6 mins
Cisco French Gnu/Linux Workshop
xeylou
Author
xeylou
Table of Contents
r301 - This article is part of a series.
Part 1: This Article
authentification par
clés ssh sur équipements cisco

introduction
#

les équipements cisco (switchs, routeurs, asa…) tournent sur une distribution gnu/linux cisco ios

sera couvert la configuration & la connexion en ssh à ces équipements via une paire de clés ssh

génération des clés
#

sera utilisée une vm ubuntu pour la génération des clés ssh

cisco ios supporte uniquement l’algorithme de chiffrement rsa

la taille des clés est à votre convenance (1024, 2048, 4096… bits)

je recommande 1024 bits, les processeurs des équipements cisco à l’iut sont vieux donc prennent du temps pour des tailles de clés plus élevées…

génération d’une paire de clés ssh dans ~/.ssh/ suivant l’algorithme de chiffrement rsa avec une longueur 1024 bits, sans passphrase

Note si vous changez la longueur de la clé, retenez la pour plus tard
ssh-keygen -t rsa -b 1024 -N "" -f "$HOME/.ssh/cisco-ssh"

-t rsa choix de l’algorithme de chiffrement
-b 1024 précision de la longueur de la clé
-c "~/.ssh/cisco-ssh.key" définition de leur emplacement
-N "" indication passphrasse (aucune)

clé privée ~/.ssh/cisco-ssh, clé publique ~/.ssh/cisco-ssh.pub

la taille minimum d’une clé rsa avec ssh en version 2 est de 768 bits, j’ai préféré prendre 1024 car plus courant

la clé publique devra être renseignée sur l’équipement cisco

pour afficher son contenu

cat ~/.ssh/cisco-ssh.pub

exemple de sortie de la commande

1ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDXRp1IYBPwCUtXXwAlY3ewRY6lb9zO+LQ80Ynb1hLFq58F+3ui+MoyRYrD4uIK8Z3B91nQf0zhrmYGKVQHpdgvoWclp8E0QUcwAuWdZLl3zTt5nz97+h10yFg9eTnAYyPOZpaC5J/Obw34yM1pJAWPPrFo+no6KslsFNgFjOlvlQ== xeylou@null

le contenu effectif de la clé serait sans le ssh-rsa au début & le commentaire en fin (ici xeylou@null)

la clé peut être renseignée avec ces informations quand même

cependant, elle occupe une seule grande ligne

or, cisco ios supporte maximum 254 caractères par ligne de commande

la clé sera renseignée par paquets équivalents de 72 octets

fold -b -w 72 ~/.ssh/cisco-ssh.pub

exemple de sortie de la commande

1
2
3
4
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDXRp1IYBPwCUtXXwAlY3ewRY6lb9zO+LQ8
0Ynb1hLFq58F+3ui+MoyRYrD4uIK8Z3B91nQf0zhrmYGKVQHpdgvoWclp8E0QUcwAuWdZLl3
zTt5nz97+h10yFg9eTnAYyPOZpaC5J/Obw34yM1pJAWPPrFo+no6KslsFNgFjOlvlQ== xey
lou@null

ce sera le contenu à coller dans la configuration de l’équipement

Note pour le copier depuis un terminal, selectionnez puis faites CTRL + ↑ + C

configuration sur routeur
#

pour un routeur cisco 2901 configuré comme suivant

enable
configure terminal
hostname GASPARD
no ip domain-lookup

renseignement d’un domaine contingeant à la création de l’environnement ssh (pas important)

génération d’une paire de clés rsa 1024 bits pour initier l’environnement ssh

Générez une paire de clés de même longueur que celles générées sur la vm
ip domain-name rzo.local
crypto key generate rsa modulus 1024

création d’un utilisateur pour la connexion

utilisation de l’algorithme de chiffrement sha256 au lieu de md5 par défaut (256 bits contre 128)

username xeylou privilege 15 algorithm-type sha256 secret motdepasse

privilege 15 mêmes permissions que enable
algorithm-type sha256 choix méthode de chiffrement du mot de passe
secret motdepasse définition d’un mot de passe (optionnel)

les lignes virtuelles sont des supports pour accéder à l’interface de commande cisco à distance

les anciennes versions de cisco ios en ont 5 (0-4) sinon 16 (0-15), && encore ça peut varier…

configuration des lignes virtuelles pour y accéder uniquement via une connexion ssh enregistrée sur la base d’utilisateurs locale

line vty 0 15
transport input ssh
login local

passage de ssh version 1 à 2 (désactivation de la version 1)

ip ssh version 2

importation de la clé publique à l’utilisateur xeylou

ip ssh pubkey-chain
username xeylou
key-string

coller la clé publique découpée sur la vm ici

indication de la fin de la clé

exit

désactivation de tous les types d’authentification sauf par clé ssh (publickey)

ces commandes peuvent ne pas être supportées par la version de cisco ios utilisée, je les donne quand même

no ip ssh server authenticate user password
no ip ssh server authenticate user keyboard

attribution d’une adresse ip à une des interfaces du routeur

int g0/0
ip address 192.168.0.1 255.255.255.0
no shut

configuration sur switch
#

la configuration ssh est identique pour un switch

enable
configure terminal
hostname SW7
no ip domain-lookup
ip domain-name rzo.lan
crypto key generate rsa modulus 4096
username xeylou privilege 15 algorithm-type sha256 secret motdepasse
line vty 0 15
login local
transport input ssh
ip ssh version 2
ip ssh pubkey-chain
username xeylou
key-string

renseignement de la clé publique ici

exit
no ip ssh server authenticate user password
no ip ssh server authenticate user keyboard

configuration de l’interface d’accès qui sera un vlan

un vlan dédié serait préférable, mais bon!

int vlan 1
ip add 192.168.0.2 255.255.255.0
no shut

connexion ssh
#

configuration des commandes ssh gaspard & ssh sw7 pour se connecter aux équipements depuis la vm

sur l’hôte qui accédera aux équipements (la vm)

nano ~/.ssh/config

cisco ios utilise des protocoles obsolètes que openssh refuse d’utiliser par défaut

renseignement de ceux-ci dans la configuration des alias

renseignement pour le routeur

1
2
3
4
5
6
7
Host gaspard
  hostname = 192.168.0.1
  user = xeylou
  KexAlgorithms = diffie-hellman-group-exchange-sha1
  HostKeyAlgorithms = ssh-rsa
  PubKeyAcceptedAlgorithms = ssh-rsa
  IdentityFile "~/.ssh/cisco-ssh"

KexAlgorithms changement d’algorithme d’échange de clé
HostKeyAlgorithms chiffrement proposé par la vm ubuntu
PubKeyAcceptedAlgorithms pareil par l’équipement

une manipulation supplémentaire est à faire pour le switch

les ciphers définissent les algorithmes utilisés pour sécuriser la connexion ssh (ne pas transmettre en clair dès le départ)

rajout d’une ligne pour définir un cipher supporté par les switchs

 9Host sw7
10  hostname = 192.168.0.2
11  user = xeylou
12  KexAlgorithms = diffie-hellman-group-exchange-sha1
13  HostKeyAlgorithms = ssh-rsa
14  PubKeyAcceptedAlgorithms = ssh-rsa
15  IdentityFile "~/.ssh/cisco-ssh"
16  Ciphers aes256-cbc

connexion en ssh depuis la vm ubuntu

ssh gaspard
ssh sw7

pensez à être sur le même réseau que les équipements

à cette étape, vous devriez normalement pouvoir vous connecter au routeur & au switch sans avoir à renseigner de mot de passe

une fois une connexion ssh active initiée, vous êtes au même niveau qu’un enable sur un port console (tous les droits)

je suis toujours là si des choses se sont mal passées ou que tout est vraiment nul

supplément
#

vérification concordance des clés

génération d’une empreinte (fingerprint) des clés publiques des deux côtés (équipements & machine cliente) savoir si elles sont jumelles

sur les équipements

show running-config | begin pubkey

comparable au hash sur la vm ubuntu

ssh-keygen -l -f $HOME/.ssh/cisco-ssh.key.pub

définition d’une acl pour autoriser uniquement les adresses ip locales à se connecter en ssh

enable
configure terminal
ip access-list standard SSH_ACL
permit 192.168.0.0 0.0.0.255
line vty 0 15
access-class SHH_ACL in

ajout d’un timeout au bout de 10 minutes d’inactivité sinon infini

exec timeout 10 0

définition de maximum 3 tentatives de connexion ralentissement de bruteforce

ip ssh authentication-retries 3
service tcp-keepalives-in
service tcp-keepalives-out

activation de scp pour transfert de fichiers via ssh

ip scp server enable
r301 - This article is part of a series.
Part 1: This Article