Logo de kxs.frFiches pour l'informatique

Sécuriser l'accès au serveur

Introduction

Nous verrons ici les méthodes basiques pour sécuriser notre serveur dès sa réception. Il y aura des actions supplémentaires à effectuer plus tard pour protéger le serveur.

Nous allons sécuriser l'accès à notre serveur grâce aux étapes suivantes :

Prérequis

Vous avez besoin d'un accès ssh à votre serveur. Vous avez dû recevoir par mail des informations ou vous pouvez les retrouver dans votre compte client. Vous avez besoin de trois choses pour vous connecter en ssh :

Accéder au serveur avec le login par défaut

Nous allons donc accéder à notre serveur avec les login et mot de passe reçus (ou choisis). Nous supposerons que le login est debian et l'adresse ip du server 255.255.255.255. À vous de les remplacer par les vôtres.

Dans un shell sur votre machine saisissez :

ssh debian@255.255.255.255

Le shell vous demande votre mot de passe. Saisissez-le (rien ne s'affiche, c'est normal) et appuyez sur entrée

Vous devez alors accéder à l'invite de commande de votre serveur :

nom_de_serveur:~$

Vous êtes connecté à votre serveur !

Sur notre serveur nous n'avons pas de mot de passe root. Il nous faudrait donc utiliser la commande sudo pour effectuer les tâches administratives. Pour éviter cela je préfère me connecter en root. Il nous faut donc donner un mot de passe au compte root.

Si jamais vous avez déjà un accès root cela peut être une bonne idée de changer le mot de passe.

Attribuer un mot de passe à root

Il faut lancer la commande suivante :

sudo passwd root

Il vous est éventuellement demandé votre mot de passe (pour debian) et ensuite vous devez saisir deux fois le nouveau mot de passe pour root.

[sudo] password for debian:
New password:
Retype new password:
passwd: password updated successfully

Vous allez maintenant pouvoir vous connecter en root.

Se connecter en root

Vous pouvez maintenant vous connecter en root avec la commande :

su -

Saisissez alors le mot de passe root. L'invite de commande doit alors ressembler à ceci :

root@nom_de_serveur:~#

Le # indique que vous êtes bien connecté en root.

Créer un nouvel utilisateur avec des droits restreints

Maintenant que vous êtes connecté en root, nous allons commencer à effectuer certaines tâches administratives.

Créons alors un nouvel utilisateur pour remplacer l'utilisateur debian par défaut. Cet utilisateur nous permettra de nous connecter en ssh et de transférer des fichiers en FTP pour le serveur web. Pour simplifier cette dernière manipulation nous allons définir le dossier contenant les sites web comme le répertoire personnel de l'utilisateur. Nous supposerons que ce nouvel utilisateur s'appelle kevin.

Saisissez la commande suivante :

adduser --home /var/www kevin

Il y aura quelques warnings à cause du répertoire personnel, c'est normal. Ensuite il faudra saisir deux fois le nouveau mot de passe pour cet utilisateur. Enfin, appuyez sur entrée pour les autres saisies de façon à garder les valeurs par défaut.

Vous disposez maintenant d'un nouvel utilisateur kevin. Nous allons maintenant supprimer l'utilisateur debian.

Supprimer l'utilisateur par défaut

Ouvrez un nouveau shell et connectez-vous avec le nouvel utilisateur kevin :

ssh kevin@255.255.255.255

Saisissez votre mot de passe et appuyez sur entrée

Vous devez alors accéder à l'invite de commande de votre serveur :

kevin@nom_de_serveur:~$

Connectez-vous alors en root (ça sera la procédure habituelle) :

su -

Saisissez alors le mot de passe root. L'invite de commande doit à nouveau ressembler à ceci :

root@nom_de_serveur:~#

Tout fonctionne bien, vous pouvez fermer le shell avec l'utilisateur debian. Nous allons supprimer cet utilisateur. Attention ! Avant de supprimer l'utilisateur debian il faut bien être connecté au serveur avec le nouvel utilisateur kevin !

Saisissez la commande :

userdel -r debian

S'il y a le message d'erreur suivant :

userdel: user debian is currently used by process xxxxxx

C'est parce que vous êtes toujours connecté avec l'utilisateur debian. Il faut vous déconnecter et vous reconnecter avec le nouvel utilisateur kevin. Il peut aussi y avoir un message concernant « mail spool ». Ça n'est pas un problème car l'utilisateur sera tout de même supprimé.

Pour vérifier que l'utilisateur debian est bien supprimé, saisissez la commande :

su debian

Vous devriez alors avoir le message suivant :

su: user debian does not exist or the user entry does not contain all the required fields

C'est que tout a bien fonctionné.

Sécuriser ssh

Interdire l'accès ssh à root

Nous allons maitenant interdire à root de se connecter en ssh. Cela sécurise votre serveur car pour avoir un accès root, il faut maintenant connaître votre nouvel utilisateur (kevin) son mot de passe et le mot de passe root. Il est possible que cela soit déjà fait par défaut mais il est préférable de vérifier.

Pour ouvrir le fichier de configuration de ssh, lancez la commande :

nano /etc/ssh/sshd_config

Cherchez alors la ligne :

#PermitRootLogin prohibit-password
et mettez à la place :
PermitRootLogin no

S'il y a un # au début de la ligne, il faut l'enlever sinon elle sera ignorée.

Sauvegardez (Ctrl + s) et quittez (Ctrl + x).

Changer le port ssh

Changer le port permet de limiter grandement les attaques ssh car la plupart des bots ne s'embêtent pas avec d'autres ports que 22. pour cela choisissez un port entre 1024 et 65535. Pour l'exemple nous prendrons 41635.

Ouvrez le fichier de configuration de ssh :

nano /etc/ssh/sshd_config

Cherchez alors la ligne contenant :

port 22
et mettez à la place :
port 41635

S'il y a un # au début de la ligne, il faut l'enlever sinon elle sera ignorée.

Sauvegardez (Ctrl + s) et quittez (Ctrl + x).

Maintenant, pour vous connecter il faudra utiliser la commande :

ssh -p 41635 kevin@ip_serveur

Autoriser seulement kevin à se connecter en ssh

Pour une sécurité encore plus renforcée, il est possible de donner la liste des utilisateurs qui sont autorisés à se connecter en ssh.

Ouvrez le fichier de configuration de ssh :

nano /etc/ssh/sshd_config

Ajoutez dans la section Authentication, non loin de PermitRootLogin la ligne suivante :

AllowUsers kevin

Valider les changements

Quand vous modifiez le fichier /etc/ssh/sshd_config, les modifications ne sont pas prises en compte automatiquement. Pour cela il faut redémarrer le service ssh avec la commande :

/etc/init.d/ssh restart

Attention ! Quand vous modifiez la configuration de ssh, il faut essayer de vous connecter dans un autre shell avant de fermer la connexion actuelle. Sinon vous pourriez vous retrouver coincé sans pouvoir vous connecter au serveur. Il ne vous resterait plus qu'à le réinstaller et à recommencer la configuration.