Open SSH
Open SSH
Open SSH
Introduction :
Par défaut, le serveur OpenSSH est directement fonctionnel et utilisable, c'est ce
qui rend OpenSSH et les échanges SSH simples d'utilisation et rapides à mettre
en place dans les environnements Linux. Pour avoir une maîtrise plus concrète
de SSH et d'OpenSSH, nous allons étudier ensemble la configuration du
serveur OpenSSH, nous verrons quels paramètres peuvent être utilisés pour
changer le port d'écoute d'SSH ou gérer des permissions de connexion par
exemple, mais aussi bien d'autres choses !
Pour commencer, notez que le répertoire du service OpenSSH se trouve
dans /etc/ssh, on pourra y trouver les fichiers suivants dans la configuration par
défaut :
moduli : Il s'agit d'un fichier contenant des informations utilisées par le
système de chiffrement, nous parlerons des systèmes de chiffrements
utilisés lors des connexions SSH un peu plus tard, tachons pour l'instant de
comprendre ce qu'il est possible de faire avec SSH.
ssh_config : Il s'agit du fichier de configuration du client (openssh-client).
Et oui ! Rappelez vous, SSH est un système client-serveur et par défaut, ssh
serveur et client sont installés.
sshd_config : Il s'agit du fichier de configuration du serveur OpenSSH, c'est
ce fichier qui va nous intéresser dans cette partie du cours.
ssh_host_* : Il s'agit de fichier contenant certaines clés qui seront utilisées
lors des différents processus de chiffrement.
Comme nous l'avons vu, nous nous intéresserons ici particulièrement au
fichier /etc/ssh/sshd_config. Pour information le "d" de sshd est une marque
courante des configurations serveur car il se rapporte à "daemon" qui est la
façon dont on désigne des applications qui tournent sur un serveur Linux.
Comme pour la plupart des services Linux, une modification de la configuration
nécessite un redémarrage du service en question.
systemctl restart sshd
Pour recharger la configuration, ce qui aura le même effet dans notre contexte,
on utilisera cette commande :
systemctl reload sshd
I. Installer OpenSSH
Si ce n'est pas le cas, installons-le ! Sous Debian
apt-get update
apt-get install openssh-server
Sous CentOS:
yum update
Voila, OpenSSH est maintenant présent sur votre machine Linux. Nous allons
pouvoir jouer un peu avec !
II. Gestion basiques d'OpenSSH
Dans tous les cas, nous pourrons voir l'état du du service SSH avec la
commande "systemctl", le serveur est-il en fonctionnement (actif, activé) ou non
?:
systemctl status sshd
Voici ce que l'on pourra voir si le serveur est effectivement déjà en route :
Et pour le redémarrer :
systemctl restart sshd
Je ne l'ai pas encore mentionné, mais le service SSH écoute par défaut sur le
port 22 en TCP. Nous pouvons alors voir, sur notre serveur Linux, que le
service est bien en écoute sur ce port :
ss -lntp |grep "22"
Ici, la commande "ss" (anciennement connue sous le nom de "netstat") permet
de visualiser l'état des ports et des connexions du serveur sous les systèmes
Unix.
L'option "-l" permet de ne lister que les ports en écoute, l'option "-n" permet
d'afficher les ports de manière numérique, et non leur translation habituelle
(exemple "telnet" à la place de "23") et l'option "-t" permet de ne lister que les
ports TCP, l'option "-p" permet enfin de lister les processus derrière chaque
ports :
Ici, on voit donc que le port 22 est bien écoute, en IPv4 ("*:22") et
en IPv6 (":::22"). On voit également que c'est le processus "sshd" qui est
derrière, aucun doute, il s'agit bien de notre serveur SSH.
Ici, nous allons remplacer "22" par le numéro de port sur lequel nous souhaitons
mettre en écoute notre service SSH, dans notre cas "7256"
Port 7256
On remarque également que l'écoute sur l'interface IPv6 n'est plus présente. Pour
la rajouter, on peut ajouter la ligne suivante dans la configuration d'OpenSSH :
ListenAddress ::
Cela est rarement nécessaire, mis à part si votre service informatique déploie et
utilise l'IPv6 au lieu de l'IPv4. Si ce n'est pas le cas, vous devriez par sécurité
désactiver l'IPv6 de votre serveur Linux (et pas seulement l'écoute d'OpensSSH)
Note : Une restriction plus avancée peut être faite avec IPtables par exemple,
nous pourrons voir ce cas de figure plus loin dans le cours. On pourra par
n'autoriser que quelques IP d'un réseau à venir se connecter en SSH.
Dans les deux cas, si l'on souhaite autoriser les connexions en root via SSH, on
décommentera cette directive pour lui mettre la valeur "yes" :
permitRootLogin yes
On pourra donc aller spécifier dans la configuration OpenSSH que tous les
utilisateurs faisant partie de ce groupe pourront se connecter en SSH, pas les
autres, on ajoutera dans la configuration OpenSSH la ligne suivante pour ce faire
allowGroups ssh_allowed