Aller au contenu

Configuration et sécurisation de SSH

·
redhat ssh
Jérémy Norgol
Auteur
Jérémy Norgol
Consultant ingénieur Linux Devops
RH124 - Cet article fait partie d'une série.
Partie 20: Cet article

SSH stands for secure shell
#

Introduction sur ce qu’est le shell
#

Le shell (ou interface système en français) est un programme qui reçoit des commandes informatiques données par un utilisateur à partir de son clavier pour les envoyer au système d’exploitation qui se chargera de les exécuter.

Le programme le plus couramment utilisé est sous un terminal ou en soit une interface de ligne de commande (CLI pour les intimes)

Comment ça communique tout ça vous vous dites ? Et bien c’est très simple, il faut le voir un peu comme un oignon avec plusieurs couche de la partie Hardware jousqu’à la couche logiciel.

  • Commandes / Logiciel: ls, pwd, cp, libreoffice
  • Shell: bash, csh, ksh, zsh
  • Kernel
  • Hardware

Code utilisateur:
#

Pour différencier le niveau de privilèges entre les users et le privilège d’administration, une icone est représenté par défaut sur le prompt:

  • $ pour les users
  • # - pour le compte root ou élévation de privilèges sudo

Configuration SSH
#

Le fichier de configuration est le suivant: /etc/ssh/sshd_config

Redémarrer le service SSH: systemctl restart sshd

Le petit mot de sysops: Attention malheureux ! Lors du redémarrage du service SSH. Si la config' a été changer, tu ne perdras pas la main sur la session courante si tu es connecté: la session TCP est maintenu; heureusement. Vérifie que les modifications que tu as appliquer fonctionne bien en ré-ouvrant une nouvelle session en parallèle afin de contrôler que toute l’authentification et l’accès réseau au shell se passe bien.

Sécurité à surveiller dans la configuration;
#

Liste de paramètres à être attentif dans le fichier de configuration: /etc/ssh/sshd_config

#Le port par défaut est à définir
Port 22
#Desactiver la connexion SSH en tant que root
PermitRootLogin no
#Politique de mot de passe vide à rejeter
PermitEmptyPasswords no
#Délai de connexion
ClientAliveInterval 600
ClientAliveCountMax 0
#Limit access to specific users
AllowUsers anakin, r2d2

Accès par échange de clés
#

Il existe des cas de figure sur lequel la saisie du user / mot de passe peut poser problème ou être une contrainte:

  • Accès utilisateur répété
  • Automatisation de tâches (scripts, applications ect…)

Ainsi pour bypass la saisie de credentials mais conserver une sécurité optimale de SSH, il est possible de dérouler un échange de clé entre le client et le serveur. Cela se fait en 3 étapes très simple:

ssh-keygen
ssh-copy-id [email protected]
#Saisie du mot de passe
ssh [email protected]
#Hop ! Vous êtes connecter directement

Erreur ssh-copy-id command not found, Ca peut-être possible si la configuration du serveur est vraiment au minimal, mais j’ai un Plan B:

#!/bin/bash

if [[ "$1" == "root" ]]; then
HOME_DIR="/root"
else
HOME_DIR="/home/$1"
fi
if [ "$#" -ne 2 ]; then
echo "Commande valide $0 <User> <IP>"
else
cat ~/.ssh/id_rsa.pub | ssh -i ~/.ssh/generique $1@$2 "mkdir -p $HOME_DIR/.ssh && cat >> $HOME_DIR/.ssh/authorized_keys"
fi

Raccourci SSH de connexion
#

Il est possible de définir des raccourcis par des aliases sur les hôtes saisies: Celà ce passe dans la configuration globale: /etc/ssh/ssh_config ou spécifique à un utilisateur dans: ~/.ssh/config:

Host darkstar
    HostName 172.16.1.10
    User dark_vador
    Port 9722
    IdentityFile ~/.ssh/dark_vador.key

Host *
    User root
    Compression yes

Ainsi par exemple à la place de renseigner ssh [email protected] -p 9722 -i ~/.ssh/dark_vador.key il suffira juste de renseigner ssh darkstar. C’est quand même bien plus rapide ;-)

RH124 - Cet article fait partie d'une série.
Partie 20: Cet article

Articles connexes

Accès à la ligne de commande
redhat
Analyse et enregistrement de fichiers journaux
redhat
Contrôle de l'accès aux fichiers
redhat