samedi 4 janvier 2014

Une astuce toute simple pour renforcer la sécurité d'un serveur ssh sous linux

Ssh est un protocole permettant la connexion à des machines distantes en cryptant les données circulant sur le réseau.
Il est très utilisé pour l'administration de serveurs à distance et offre pour cela un niveau de sécurité supérieur à telnet, ce qui ne dispense pas de prendre quelques précautions :

Les serveurs reliés à internet sont presque inévitablement scannés à l'aide d'outils cherchant des ports ouverts pouvant éventuellement être exploités dans des intentions malveillantes.
Si un serveur ssh est installé sur votre machine, l'ouverture du port 22 sera rapidement découverte et des connexions en tant que root vont tout aussi vite être tentées.

Il va sans dire que le mot de passe de l'utilisateur root doit être sérieux mais deux précautions valent mieux qu'une :
Je conseille vraiment de configurer le serveur ssh de façon à ce qu'il interdise les connexions du root et n'autorise que les connexions d'un utilisateur prédéfini auquel on aura attribué un login improbable, un vrai mot de passe, les droits les plus restreints et que l'on aura exclu de la liste des sudoers.

De cette façon, vous pouvez établir la connexion en utilisant cet utilisateur puis utiliser la commande su pour travailler en tant que root. Par contre si une personne mal intentionnée arrive à entrer en possession des informations lui permettant de se connecter via ssh, il faudra encore qu'elle trouve le mot de passe du root pour disposer des droits d'administration sur la machine.

Cette configuration est simple à mettre en place dans le fichier /etc/ssh/sshd_config où il suffit d'indiquer :

  • PermitRootLogin no pour interdire les connections en tant que root
  • AlloUsers toto pour n'autoriser que les connections de l'utilisateur toto.