SSH: les bases Partie 01

5 minute de lecture

Mis à jour :

Présentation

OpenSSH (OpenBSD Secure Shell) est un ensemble d’outils informatiques libres permettant des communications sécurisées sur un réseau informatique en utilisant le protocole SSH.

Créé comme alternative Open Source à la suite logicielle proposée par la société SSH Communications Security (en), OpenSSH est développé depuis 1999 par l’équipd’OpenBSD, dirigée par son fondateur, Theo de Raadt, et diffusé sous licence BSD Source Wikipédia

Aspect technique

Composition

Openssh est composé de 2 éléments :

  • le client :openssh-client qui permet de se connecter à une machine distante
  • le serveur :openssh-server installé sur une machine distante

Les 2 éléments peuvent être installé sur une même machine, toutefois la partie serveur n’est pas installée par défaut sur un poste client.

Openssh provenant de OpenBSD, les versions pour Debian et dérivées (comme Ubuntu) se nomment openssh-server et openssh-client en version dite portable, ce qui apparaît dans le numéro de version avec p.

Partie serveur

Vérification du service

vérifions si le service est bien lancé:

# service sshd status
● ssh.service - OpenBSD Secure Shell server
   Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
   Active: active (running) since Fri 2018-06-29 10:04:41 CEST; 41min ago
  Process: 1778 ExecReload=/bin/kill -HUP $MAINPID (code=exited, status=0/SUCCESS)
  Process: 1772 ExecReload=/usr/sbin/sshd -t (code=exited, status=0/SUCCESS)
  Process: 680 ExecStartPre=/usr/sbin/sshd -t (code=exited, status=0/SUCCESS)
 Main PID: 732 (sshd)
    Tasks: 1 (limit: 4915)
   CGroup: /system.slice/ssh.service
           └─732 /usr/sbin/sshd -D

juin 29 10:06:23 gally-reborn systemd[1]: Reloading OpenBSD Secure Shell server.
juin 29 10:06:23 gally-reborn sshd[732]: Received SIGHUP; restarting.
juin 29 10:06:23 gally-reborn systemd[1]: Reloaded OpenBSD Secure Shell server.
juin 29 10:06:23 gally-reborn sshd[732]: Server listening on 0.0.0.0 port 1022.
juin 29 10:06:23 gally-reborn sshd[732]: Server listening on :: port 1022.

Fichiers decConfiguration

Par défaut les fichiers de configuration se situent ici :

  • /etc/ssh/sshd_config – partie serveur.
  • /etc/ssh/ssh_config – partie client.
  • ~/.ssh/ - configuration de l’utilisateur.
  • ~/.ssh/authorized_keys - Liste des clés public (RSA or DSA)autorisée
  • /etc/nologin – si ce fichier existe, sshd interdit la connexion à tout utilisateur sauf root
  • ./etc/hosts.allow et /etc/hosts.deny : Liste de contrôle d’accès.

Partie serveur

/etc/ssh/sshd_config

Sshd est le nom du logiciel serveur, utilisant le port 22 pour communiquer, il est possible de le changer dans le fichier de configuration.

Voici des extrait d’un fichier de configuration du serveur , avec les commentaires.

Le fichier est téléchargeable ici.

Par défaut sshd écoute sur toutes les intefaces, il est possible de restreindre ce comportement en désignant l’IP. Par defaut sshd utilise maintenant la 2° version du protocole. Dans son ancienne version c’était un eoption à configurer.

########################################################
#      Modification du port d'écoute à 1022
########################################################
Port 1022
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::

Séparation des privilèges.Évidemment on laisse à yes

#Privilege Separation is turned on for security
UsePrivilegeSeparation yes

Authentification

Temps d’attente avant déconnexion, si l’utilisateur ne parvient pas à se connecter. Interdire la connexion à root.

########################################################
#    N'utilise pas l'authentification basé sur les hôtes
#########################################################

#HostKey /etc/ssh/ssh_host_rsa_key
#HostKey /etc/ssh/ssh_host_ecdsa_key
#HostKey /etc/ssh/ssh_host_ed25519_key

#########################################################
#  Temps imparti pour la connexion= 2 minutes
#  Tentatives Max = 3
#  Nombre de connexion autorisées = 3
#  Authentification basé sur les clés publics
##########################################################

LoginGraceTime 2m
#PermitRootLogin prohibit-password
StrictModes yes
MaxAuthTries 3
MaxSessions 3

PubkeyAuthentication yes

Basé sur les clés.

############################################################
#  Répertoire des clés autorisées
############################################################

# Expect .ssh/authorized_keys2 to be disregarded by default in future.
AuthorizedKeysFile	.ssh/authorized_keys .ssh/authorized_keys2

#AuthorizedPrincipalsFile none

#AuthorizedKeysCommand none
#AuthorizedKeysCommandUser nobody

Ne pas baser l ‘authentification par un hôte, ce n’est pas un gage de sécurité.

###############################################################
#    Ne pas utiliser l'authentification basé sur l'hote distant
###############################################################

# For this to work you will also need host keys in /etc/ssh/ssh_known_hosts
#HostbasedAuthentication no
# Change to yes if you don't trust ~/.ssh/known_hosts for
# HostbasedAuthentication
#IgnoreUserKnownHosts no
# Don't read the user's ~/.rhosts and ~/.shosts files
IgnoreRhosts yes

Ne pas permettre un MdP vide.

###################################################################
#  Interdire les mot de passe vide
##################################################################

# To disable tunneled clear text passwords, change to no here!
#PasswordAuthentication yes
PermitEmptyPasswords no

Sur un poste , activer le X11Forwarding permet de déporter l’affichage d’une application distante vers le poste en local. Pour un serveur on met la valeur à no, cependant dans certains cas un serveur peut avoir le serverX d’activer c’est selon l’usage.

#########################################################################
#   âctiver le déport d'affichage X11 ça peut servir si il y a un serveurs
#   graphique.
#   Affiche le Message Of The Day (MOTD) édité dans /etc/issue
#   Affiche la dernière connexion
#   Garde la connexion active
#   N'utilise pas la résolution de nom , vérifier d'abord la Configuration
#   DNS
#   Le subsystem SFTP est activé
##########################################################################

#AllowAgentForwarding yes
#AllowTcpForwarding yes
#GatewayPorts no
X11Forwarding yes
#X11DisplayOffset 10
X11UseLocalhost yes
#PermitTTY yes
PrintMotd yes
PrintLastLog yes
TCPKeepAlive yes
#UseLogin no
UsePrivilegeSeparation sandbox
#PermitUserEnvironment no
#Compression delayed
#ClientAliveInterval 0
#ClientAliveCountMax 3
UseDNS no
PidFile /var/run/sshd.pid
#MaxStartups 10:30:100
#PermitTunnel no
#ChrootDirectory none
#VersionAddendum none

# no default banner path
Banner /etc/issue

Pam (Pluggeable Authentification Module) est le gestionnaire de MdP, étant à yes, toutes les politiques de MdP sont appliqué.

# Set this to 'yes' to enable PAM authentication, account processing,
# and session processing. If this is enabled, PAM authentication will
# be allowed through the ChallengeResponseAuthentication and
# PasswordAuthentication. Depending on your PAM configuration,
# PAM authentication via ChallengeResponseAuthentication may bypass
# the setting of "PermitRootLogin without-password".
# If you just want the PAM account and session checks to run without
# PAM authentication, then enable this but set PasswordAuthentication
# and ChallengeResponseAuthentication to 'no'.
UsePAM yes

IMPORTANT

  • Penser à recharger la configuration après toute modification du fichier avec la commande :
    # service sshd restart