Sécuriser l'accès SSH

ssh 5 nov. 2022

Si vous comptez laisser l'accès au SSH depuis le web, avec un outil tel que PuTTY, il est absolument vital de le sécuriser au maximum, surtout en changeant le port 22 qui est celui par défaut et donc constamment attaqué.

J'utiliserai l'éditeur nano mais chacun ses préférences, donc je l'installerai de cette manière :

dnf -y install nano

Ensuite, éditons le fichier de configuration de sshd :

nano /etc/ssh/sshd_config

Décommentez la ligne suivante, en enlevant le symbole # et en changeant le port :

Avant :
#Port 22

Après :
Port 1982

Le choix du port vous appartient, mais certains sont réservés.
Si vous avez un doute, vous pouvez trouver ici une liste exhaustive des ports utilisés par Linux et vérifier, en fonction du service correspondant, si vous l'avez installé ou non, et donc dans ce cas si vous pouvez l'utiliser pour la connexion SSH :
https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml

Pour désactiver la connexion via mot de passe :

Avant :
#PasswordAuthentication yes

Après :
PasswordAuthentication no

Le but de ce réglage est de n'autoriser que les connexions par clé SSH.

Afin d'éviter le timeout et donc les déconnexions intempestives en cas d'inactivité :

Avant :
#TCPKeepAlive yes

Après :
TCPKeepAlive yes

Si vous souhaitez empêcher la connexion SSH avec l'utilisateur root :

Avant :
#PermitRootLogin prohibit-password

Après :
PermitRootLogin no

Ne modifiez ce paramètre que si vous avez déjà créé un autre utilisateur avec l'accès SSH et qui permette, une fois connecté, de se loguer en tant que root avec la commande su.

En enlevant simplement le #, vous permettrez l'accès en tant que root mais uniquement avec une clé SSH :

PermitRootLogin prohibit-password

Une fois ces réglages de base mis en place, quittez nano en enregistrant les modifications avec le raccourci Ctrl+X, répondez "O" et confirmez le nom du fichier.

Avant de redémarrer le service sshd, ouvrez le bon port dans iptables en fonction de celui choisi précédemment :

iptables -A INPUT -p tcp -m tcp --dport 1982 -j ACCEPT
service iptables save

Puisque l'on a désactivé la connexion par mot de passe, il est nécessaire de configurer la clé SSH afin de se connecter.
Je vous invite à suivre les instructions présentes sur cet article de mon wiki, où toute la procédure est expliquée.

Une fois que vous êtes absolument sûr et certain d'avoir bien ouvert le bon port, d'avoir renommé la clé publique et d'avoir récupéré la clé privée, vous pouvez redémarrer sshd :

systemctl restart sshd

Vous ne serez pas déconnecté mais à la prochaine tentative de connexion en SSH, entrer un mot de passe ne sera plus possible, d'où l'importance d'avoir bien récupéré la clé SSH et d'avoir correctement configuré l'accès comme expliqué ci-dessus.

À la prochaine connexion, sur le port configuré plus haut, fermez le port par défaut :

iptables -D INPUT -p tcp -m tcp --dport 22 -j ACCEPT
service iptables save

Félicitations, votre accès SSH est désormais bien plus sécurisé et vous aurez beaucoup (vraiment beaucoup) moins de tentatives de connexion.

Mots clés

Samuel

Passionné par le web et les serveurs, je vous fais découvrir toutes sortes de news, de tutos, de scripts et autres points relatifs à cet univers sans limite !