« Ssh - cisco » : différence entre les versions

De Wiki doc

Connexion depuis OpenSSH : Modifications du texte + séparation de la section sur OpenSSH en client et en serveur + ajout de la configuration côté serveur pour fonctionner avec IOS.
Serveur OpenSSH : Ajout des commandes pour lister les valeurs actuellement appliquées au serveur SSH.
Ligne 83 : Ligne 83 :


Vous pouvez en afficher la liste exhaustive avec les commandes suivantes:
Vous pouvez en afficher la liste exhaustive avec les commandes suivantes:
  ssh -Q server
  ssh -Q server
  ssh -Q kex
  ssh -Q kex
Ligne 95 : Ligne 96 :
for i in $(ssh -Q kex); do suite=$suite$(echo "${i}," | tr -d "\n"); done; echo "${suite%?}"
for i in $(ssh -Q kex); do suite=$suite$(echo "${i}," | tr -d "\n"); done; echo "${suite%?}"
</source>
</source>
Enfin, il est possible de [https://unix.stackexchange.com/questions/333728/ssh-how-to-disable-weak-ciphers lister les valeurs] actuellement appliquées au service ''SSHd'':
sshd -T | grep ciphers
sshd -T | grep kex

Version du 7 octobre 2020 à 22:40


L'administration d'un équipement Cisco se fait généralement via le protocole Secure SHell (SSH). Il est nécessaire d'appliquer quelques paramètre pour l'activer.

Session SSH

L'activation de SSH sous Cisco IOS passe par quelques commandes comprenants nottament, la création d'un utilisateur, d'une clé ainsi que des critaires de sessions.

<source lang="bash"> configure terminal

  1. Création de l'utilisateur

username <utilisateur> privilege 15 secret <motdepasse>

  1. Création de la clé

crypto key generate rsa modulus 4096 label <FQDN>

  1. Activation de la version 2 du protocole SSH (normalement c'est automatique)

ip ssh version 2

  1. Paramétrage des sessions SSH sur les consoles virtuelles

line vty 0 4

  1. Activation des connexions en utilisant la base utilisateur locale

login local

  1. Modification de la durée de la session (définie à 3 minutes)

exec-timeout 0 3

  1. Activation des connexions entrantes

transport input ssh

  1. Activation des connexions sortantes

transport output ssh

  1. Il est également possible de journaliser les évènements en rapport avec SSH lorsque l'on est connecté via ce protocole (sinon cela se fait uniquement via le port série)

configure terminal ip ssh logging events </source>

Bien que ce protocole serve principalement à établir une sessions distante à un équipements, elle ne se limite pas à ça et certaines autres fonctions peuvent êtres utilisées avec les matériels réseau de cette marque.

Transferts de fichiers via SSH

Les transferts de fichiers au travers d'SSH permettent un échange chiffré de données. IOS gère Secure Copy (SCP), un protocole se basant sur UNIX BSD RCP et utilisant SSH pour le chiffrement. Il faut au préalable avoir activé ce dernier pour que SCP fonctionne.

Une petite précision qui a son importance. L'implémentation d'SCP dans IOS ne gère pas la récursivité (<source lang="bash" inline>-r</source>) contrairement à son homologue UNIX/Linux. Si vous avez un répertoire à transférer, baaah, bon courage...

En tant que client

L'utilitaire copy permet d'initier des transferts avec un serveur. En voici la syntaxe:

copy <fichier_source> scp://<utilisateur>@<adresse>:<destination>

ATTENTION

{{{1}}}

En tant que serveur

Afin de réceptionner des transferts initiés par un hôte distant, Cisco IOS intègre un module serveur Secure Copy (SCP). Pour l'activer, rien de plus simple:

ip scp server enable

ASTUCE

{{{1}}}

Connexion depuis OpenSSH

Pour des raisons de sécurité, avec les versions d'OpenSSH récentes, les suites cryptographiques utilisées par IOS ne correspondent pas à celles définies dans la configuration par défaut du célèbre client libre (depuis GNU/Linux Debian >= Jessie). En effet, comme à son habitude, Cisco est à la traîne dans le support des standards. Les algorithmes tant de chiffrement que de signature supportés sont complètements obsolètes (car dangereux) et sortis des recommandations internationales depuis plus de 10 ans (N'utilisez pas le SSH des équipements de cette marque depuis Internet) ! Il est possible de fixer manuellement ce paramètre sur l'équipement réseau (si supporté par votre modèle) et de préciser au client quel algorithme utiliser pour la connexion. Enfin, avec les modèles derniers cris, ces problèmes ne devraient pas se manifester (chez Cisco, la "sécurité", ça se paie).

Sur IOS

Afin de définir la suite cryptographique que l'on souhaite utiliser lors des sessions SSH, on peut utiliser la commande suivante en mode "configuration":

ip ssh server algorithm encryption aes256-cbc aes192-cbc aes128-cbc

Note: les algorithmes sont visibles avec le traditionnel <source lang="bash" inline>?</source>.

Sur OpenSSH

Client OpenSSH

Dans la commande

ssh -oKexAlgorithms=+diffie-hellman-group1-sha1 -c aes128-cbc <utilisateur>@<adresse>

Dans la configuration

Il est également possible de préciser au client d'utiliser cette configuration directement dans son fichier. Ainsi, la commande standard pourra être utilisée de façon transparente.

vim ~/.ssh/config

<source lang="bash"> Host 10.0.0.1 KexAlgorithms +diffie-hellman-group1-sha1 </source>

Serveur OpenSSH

Si c'est le matériel réseau qui doit se connecter au Linux, il faut éditer la configuration du service SSHd et ajouter les deux algorithmes supportés par IOS tout en conservant ceux par défaut (afin de continuer à pouvoir se connecter au serveur):

<source lang="bash"> echo -e "Ciphers +aes128-cbc\nKexAlgorithms +diffie-hellman-group1-sha1" >> /etc/ssh/sshd_config systemctl restart ssh.service </source>

Vous pouvez en afficher la liste exhaustive avec les commandes suivantes:

ssh -Q server
ssh -Q kex

Afin de vous éviter le supplice de faire des copier/coller dans tous les sens en supprimant les retours chariots et en joutant des virgules pour les ajouter dans la configuration, vous pouvez utiliser les scripts suivants dans l'ordre respectif:

<source lang="bash"> for i in $(ssh -Q cipher); do suite=$suite$(echo "${i}," | tr -d "\n"); done; echo "${suite%?}" </source>

<source lang="bash"> for i in $(ssh -Q kex); do suite=$suite$(echo "${i}," | tr -d "\n"); done; echo "${suite%?}" </source>

Enfin, il est possible de lister les valeurs actuellement appliquées au service SSHd:

sshd -T | grep ciphers
sshd -T | grep kex