Utiliser Debian et dérivées

Ubuntu 24.04 et + : Changer le port d'écoute du serveur SSH

Table des matières

ssh_logo



Introduction



Testant la béta d'Ubuntu 24.04 LTS, j'ai remarqué que le changement de port du serveur openssh est sans effet. Cet article a pour but de vous expliquer le changement et de vous donner la solution pour changer le port d'écoute.

Changer le port d'écoute n'améliorera pas la sécurité du système (un attaquant trouvera facilement le port utilisé par le serveur SSH), mais peut éviter de pourrir les logs par les bots qui scannent le port 22.

Après quelques recherches , depuis la version 1:9.0p1-1ubuntu1 de openssh-server dans Ubuntu 22.10 (et supérieur), OpenSSH est configuré par défaut pour utiliser l'activation de socket systemd. Cela signifie qu'il ne sera pas démarré tant qu'une demande de connexion entrante n'aura pas été reçue.

Une unité de type socket avec systemd est une entité qui représente un point d'écoute pour la communication réseau, permettant aux processus de se connecter et de communiquer entre eux via des sockets.

Chez Canonical, le choix a été fait pour, je cite : réduire la mémoire consommée par les instances de serveurs Ubuntu par défaut, ce qui est particulièrement intéressant avec Ubuntu fonctionnant dans des VM ou des conteneurs LXD.

C'est donc systemd qui va gérer le port d'écoute du serveur openssh. Par conséquent, si on a besoin de le changer le port d'écoute, on ne changera pas la ligne Port dans le fichier /etc/ssh/sshd_config.
D'ailleurs, un commentaire est présent dans le fichier de configuration indiquant : Port and ListenAddress options are not used when sshd is socket-activated, which is now the default in Ubuntu.

Cet article concerne les nouvelles installations, car lors de la mise à niveau depuis Ubuntu 22.04 LTS les paramètres seront migrés : On upgrades from Ubuntu 22.04 LTS, users who had configured Port settings or a ListenAddress setting in /etc/ssh/sshd_config will find these settings migrated to /etc/systemd/system/ssh.socket.d/addresses.conf

Changer le numéro de port



Paramétrage systemd



Dans cette section, nous allons voir comment changer le port d'OpenSSH.

On va y créer un fichier de configuration directement avec la commande suivante :

Code BASH :
systemctl edit ssh.socket


Cette commande va créer, s'il n'existe pas, le dossier /etc/systemd/system/ssh.socket.d/ et créer un fichier de configuration appelé override.conf.

On va ajouter la section [Socket] et la paramétrer comme suit avant la ligne ### Edits below this comment will be discarded :

Code BASH :
[Socket]
ListenStream=22022


Si le serveur possède plusieurs adresses IP, on pourra n'écouter que sur une seule d'entre elles :
Code BASH :
ListenStream=192.168.21.210:2022


Ensuite, on recharge la configuration de systemd :
Code BASH :
systemctl daemon-reload 


Et on redémarre le socket ssh :
Code BASH :
systemctl restart ssh.socket


Paramétrage pare-feu ufw



Si on utilise le pare-feu fourni par défaut dans Ubuntu (ufw), on n'oubliera pas d'ouvrir le port précédemment défini.

On ajoute notre port personnalisé (exemple avec mon port 22022) :

Code BASH :
ufw allow 22022/tcp


Solution de contournement



Si on le souhaite, on peut revenir à un démarrage classique du serveur OpenSSH.
Cela n'est cependant pas conseillé je pense, car c'est une volonté d'Ubuntu de ne plus utiliser ce fonctionnement standard d'OpenSSH.

On pourra alors désactiver le socket systemd pour SSH :
Code BASH :
systemctl disable --now ssh.socket


On pourra recharger le démon systemd :
Code BASH :
systemctl daemon-reload


Et on réactive OpenSSH avec son service classique :
Code BASH :
systemctl enable --now ssh.service


Ensuite, les modifications habituelles sur le port d'écoute dans le fichier /etc/ssh/sshd_config seront fonctionnelles.
Cette page a été vue 10726 fois