Modifier le port SSH
La modification du port SSH par défaut (22) réduit l’exposition aux analyses automatisées et aux attaques par force brute basiques, mais ne remplace pas les mesures de sécurité appropriées.
Avant d’effectuer toute modification, assurez-vous qu’une session SSH active est ouverte. Ne la fermez pas tant que vous n’avez pas vérifié que le nouveau port fonctionne. En cas de problème, vous risquez de perdre l’accès au serveur.
Choisir un numéro de port
Choisissez un numéro de port supérieur à 1024. Les ports compris entre 49152 et 65535 sont moins susceptibles d’entrer en conflit avec d’autres services connus. Évitez les alternatives couramment utilisées telles que 2222 ou 22222, car elles sont fréquemment ciblées par des scanners automatisés. Ce guide utilise 22777 comme exemple.
Sauvegarder le fichier de configuration
Avant d’effectuer toute modification, créez une sauvegarde du fichier de configuration SSH :
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.backup
Modifier le port SSH sur Ubuntu et Debian
À partir de Debian 12 et de certaines versions plus récentes d’Ubuntu (22.04+), SSH peut utiliser par défaut l’activation de socket systemd. Dans ce cas, modifier uniquement la directive Port dans sshd_config ne suffit souvent pas.
Commencez par vérifier si l’activation de socket est active :
systemctl is-active ssh.socket
Si la commande renvoie active, configurez le socket SSH pour utiliser le nouveau port.
Créez une surcharge systemd pour le socket SSH :
systemctl edit ssh.socket
Ajoutez le contenu suivant :
[Socket] ListenStream= ListenStream=22777
La ligne vide ListenStream= supprime le port par défaut (22). Sans cette ligne, SSH peut continuer à écouter à la fois sur le port 22 et sur le nouveau port.
Pour plus de fiabilité, définissez également le port dans la configuration SSH. Cela aide le générateur systemd et permet de conserver le paramètre lors des mises à jour d’OpenSSH :
mkdir -p /etc/ssh/sshd_config.d echo "Port 22777" | tee /etc/ssh/sshd_config.d/10-port.conf
Pour une meilleure compatibilité, vous pouvez également spécifier explicitement les adresses :
[Socket] ListenStream= ListenStream=0.0.0.0:22777 ListenStream=[::]:22777
Enregistrez la configuration et appliquez les modifications :
systemctl daemon-reload systemctl restart ssh.socket systemctl restart ssh
Vérifiez que le service fonctionne :
systemctl status ssh.socket
Sur certains systèmes plus récents, tels qu’Ubuntu 24.04+, le générateur systemd peut lire automatiquement le port depuis sshd_config. Dans ce cas, il peut suffire de modifier directement Port, puis d’exécuter systemctl daemon-reload suivi de systemctl restart ssh.socket. La méthode de surcharge décrite ci-dessus fonctionne sur toutes les versions.
Anciennes versions d’Ubuntu et Debian
Sur les versions d’Ubuntu antérieures à 22.04 et les versions de Debian antérieures à 12, SSH n’est pas géré par l’activation de socket. Ouvrez le fichier de configuration SSH :
nano /etc/ssh/sshd_config
Recherchez la ligne suivante :
Port 22
Décommentez-la et remplacez 22 par le numéro de port choisi :
Port 22777
Enregistrez le fichier et vérifiez la configuration :
sshd -t
Si la commande n’est pas trouvée, utilisez :
/usr/sbin/sshd -t
Si la commande ne renvoie aucune sortie, la configuration est valide. Redémarrez le service SSH :
systemctl restart ssh
Désactiver l’activation de socket
Si vous préférez gérer SSH via le service traditionnel plutôt que via le socket, vous pouvez désactiver l’activation de socket :
systemctl disable --now ssh.socket systemctl enable --now ssh
Ensuite, modifiez sshd_config comme décrit ci-dessus et redémarrez SSH avec :
systemctl restart ssh
Modifier le port SSH sur AlmaLinux, Rocky Linux et CentOS
Modifier le fichier de configuration SSH
Ouvrez le fichier de configuration SSH :
nano /etc/ssh/sshd_config
Recherchez la ligne suivante :
Port 22
Décommentez-la et remplacez 22 par le numéro de port choisi :
Port 22777
Enregistrez le fichier et vérifiez la configuration :
/usr/sbin/sshd -t
Si la commande ne renvoie aucune sortie, la configuration est valide. Redémarrez le service SSH :
systemctl restart sshd
Vérifiez que le service fonctionne :
systemctl status sshd
Autoriser le port dans SELinux
Sur les systèmes où SELinux est activé, vous devez également autoriser le nouveau port dans la politique SELinux. Pour vérifier quels ports sont actuellement autorisés pour SSH, exécutez :
semanage port -l | grep ssh
Ajoutez ou modifiez ensuite le nouveau port :
semanage port -a -t ssh_port_t -p tcp 22777 || semanage port -m -t ssh_port_t -p tcp 22777
Si semanage n’est pas installé, installez le paquet requis :
dnf install policycoreutils-python-utils
Configurer le pare-feu
Autorisez toujours le nouveau port dans le pare-feu avant de redémarrer SSH. Si vous redémarrez SSH en premier, vous risquez de perdre l’accès au serveur.
UFW
ufw allow 22777/tcp ufw reload ufw status
firewalld
firewall-cmd --permanent --zone=public --add-port=22777/tcp firewall-cmd --reload
iptables
iptables -I INPUT -p tcp --dport 22777 -j ACCEPT iptables-save > /etc/iptables/rules.v4
La commande iptables-save enregistre les règles dans un fichier uniquement si iptables-persistent est installé et configuré sur le système. Pour l’installer, exécutez :
apt install -y iptables-persistent
Vérifiez que votre distribution utilise ce fichier avant de compter sur lui pour la persistance des règles. Notez que les systèmes modernes peuvent utiliser nftables à la place d’iptables. Si vous utilisez nftables, ajoutez une règle autorisant le nouveau port dans votre configuration nftables.
Configurer Fail2Ban
Si Fail2Ban est configuré sur le serveur, mettez à jour le port SSH dans sa configuration. Ouvrez /etc/fail2ban/jail.local ou le fichier approprié dans /etc/fail2ban/jail.d/ et définissez :
port = 22777
Après avoir mis à jour la configuration, redémarrez Fail2Ban :
systemctl restart fail2ban
Vérifier le nouveau port
Vérifiez que SSH écoute sur le nouveau port :
ss -tlnp | grep :22777
Vous pouvez également afficher tous les écouteurs liés à SSH :
ss -tlnp | grep ssh
Sur les anciens systèmes, utilisez plutôt netstat :
netstat -tlnp | grep :22777
Vous pouvez également vérifier directement l’état du service.
Sur Ubuntu et Debian :
systemctl status ssh.socket
Sur AlmaLinux, Rocky Linux et CentOS :
systemctl status sshd
Sans fermer votre session SSH actuelle, ouvrez une nouvelle fenêtre de terminal et connectez-vous en utilisant le nouveau port :
ssh root@YOUR_SERVER_IP -p 22777
Si la connexion réussit, vous pouvez fermer l’ancienne session. Supprimez ensuite le port 22 des règles du pare-feu s’il n’est plus nécessaire.
Pour UFW :
ufw delete allow 22/tcp ufw reload
Pour firewalld :
firewall-cmd --permanent --zone=public --remove-port=22/tcp firewall-cmd --reload
Ne supprimez pas le port 22 du pare-feu avant d’avoir vérifié que le nouveau port fonctionne. Si la nouvelle connexion échoue, utilisez la session SSH ouverte pour résoudre le problème ou annuler les modifications :
systemctl revert ssh.socket cp /etc/ssh/sshd_config.backup /etc/ssh/sshd_config rm -f /etc/ssh/sshd_config.d/10-port.conf systemctl daemon-reload systemctl restart ssh.socket
Si l’activation de socket est désactivée, remplacez les deux dernières commandes par :
systemctl restart ssh
Conclusion
Modifier le port SSH par défaut de 22 vers un port personnalisé peut réduire l’exposition aux analyses automatisées et aux tentatives d’attaque par force brute basiques. Cependant, le changement de port doit être considéré comme une mesure de sécurité supplémentaire et non comme un remplacement du renforcement approprié de la sécurité SSH.
Gardez toujours votre session SSH actuelle ouverte jusqu’à ce que vous vous soyez connecté avec succès au nouveau port. Une fois la nouvelle connexion vérifiée, vous pouvez fermer l’ancienne session en toute sécurité et supprimer le port 22 du pare-feu s’il n’est plus nécessaire.