Sécuriser Un VPS Ou Serveur Dédié Ubuntu

Temps de lecture : 5 minutes

Lorsque notre VPS, ou serveur dédié, nous est mis à disposition pour la première fois, il convient d’effectuer quelques configurations basiques pour un minimum de sécurité.

Nous allons donc aborder ici quelques étapes à prendre en compte pour bien débuter et sécuriser son VPS ou serveur dédié. Pour ce qui suit, j’utilise Windows pour me connecter via SSH à mon VPS Ubuntu.

Pré-requis: Disposer d’un serveur dédié ou VPS Ubuntu – si ce n’est pas encore le cas, suivre ce guide pour obtenir un VPS chez OVH

Sécuriser VPS
Sécuriser son VPS - Designed by Freepik

Commençons par nous connecter à notre serveur pour la première fois.

On ouvre l’Invite de commande sous Windows et l’on entre:

ssh utilisateur@ip

utilisateur correspond au nom d’utilisateur fourni par l’hébergeur lors de la commande du serveur.

ip correspond à l’adresse IP du serveur, également fourni par l’hébergeur.

Nous sommes ensuite invité à rentrer le mot de passe qui nous a été communiqué par l’hébergeur.

Connexion SSH VPS
Première connexion SSH à notre serveur

Nous sommes maintenant connectés à notre serveur et prêts à commencer à le sécuriser.

Gestion des accès Super Users et Utilisateurs

Initialement, nous sommes connectés en tant que simple utilisateur avec des privilèges limités, nous allons donc utiliser le Super User Root afin d’effectuer les configurations à venir: 

su root

Définition d'un mot de passe pour l'Utilisateur Root

Nous avons pu prendre le contrôle du Super User sans difficulté: aucun mot de passe n’est défini. Or nous souhaiterions éviter cela pour limiter l’accès aux super commandes.

Définissons un mot de passe pour l’utilisateur Root:

passwd

On nous demande alors d’entrer et de confirmer le mot de passe. Ce mot de passe nous sera désormais demandé à chaque fois que l’on tentera d’accéder au Super User Root.

Création d'un utilisateur

Toujours en tant que Super User, continuons avec la création d’un nouvel utilisateur. 

Nous nous sommes connectés au serveur en utilisant le nom d’utilisateur et le mot de passe générés par notre hébergeur. Pour plus de sécurité, nous allons créer notre propre utilisateur et définir son mot de passe.

adduser nouvelutilisateur

On donnera le nom que l’on souhaite pour nouvelutilisateur.

Il nous est demandé de fournir et de confirmer le mot de passe ainsi que des informations optionnelles telles qu’un nom complet, un téléphone…

Ceci étant fait, notre utilisateur est désormais créé. Nous allons quitter le serveur afin de nous reconnecter avec notre nouvel utilisateur.

exit
exit
ssh nouvelutilisateur@ip

Suppression de l'utilisateur initial

Pour finir, nous allons supprimer l’utilisateur initialement généré par l’hébergeur puisque nous souhaitons éviter qu’il puisse être utilisé pour accéder à notre serveur.

On retourne sur notre Super User, cette fois ci un mot de passe nous est bien demandé, tel que défini précedement.

su root

Et l’on supprime l’utilisateur initial.

deluser utilisateur

Mises à jour du système

Lors de sa mise à disposition, notre serveur ne contient probablement pas les dernières versions de système et d’applications, certaines failles de sécurité pourraient être exploitées, c’est pour cela que nous allons mettre à jour notre serveur.

Toujours en tant que super user, nous allons premièrement mettre à jour la liste des paquets disponibles:

apt update

Nous pouvons maintenant mettre à jour les paquets eux-même.

apt upgrade

Pour plus d’informations sur la commande apt et ses méthodes: Documentation sur Ubuntu-fr.org

Accès SSH

Port d'écoute SSH

Par défaut, lorsque nous nous connectons à notre serveur via SSH, le port 22 est utilisé. Ainsi, les tentatives d’intrusion effectuées par les bots sont plus fréquentes sur ce port – afin de limiter le risque, nous allons choisir un autre port non utilisé pour la connexion SSH.

Cette configuration s’effectue dans le fichier « /etc/ssh/sshd_config » que nous allons éditer.

nano /etc/ssh/sshd_config

On décommente la ligne « #Port 22 » et l’on remplace par le nouveau Port souhaité.

Pour éviter de selectionner un Port déjà utilisé, on lancera la commande:

netstat --inet -lnp

Les ports utilisés apparaissent dans la colonne « Local Address », nous pouvons alors choisir tout autre Port jusque 65535.

# What ports, IPs and protocols we listen for Port 22
Port NumeroDePort

On enregistre ensuite nos modifications et l’on redémarre SSH.

/etc/init.d/ssh restart

Il faudra désormais renseigner ce port lorsque nous nous connectons à notre serveur.

Testons donc cette nouvelle configuration en quittant le serveur.

exit
exit

Puis on lance désormais la commande Windows:

ssh nouvelutilisateur@ip -p NumeroDePort

Nous voilà connectés en utilisant notre nouveau Port, le Port 22 n’est lui plus accessible.

Accès SSH de l'Utilisateur Root

Nous avons précedemment défini un mot de passe pour l’utilisateur root. Il nous serait possible de nous connecter directement à notre serveur avec cet utilisateur en entrant:

ssh root@ip -p NumeroDePort

Pour plus de précaution, nous voulons resteindre cette possibilité, nous allons donc retourner sur le Super User root et éditer à nouveau le fichier « /etc/ssh/sshd_config ».

su root
nano /etc/ssh/sshd_config

Plus bas dans ce fichier, se trouve une section « Authentication », nous allons changer le paramètre « PermitRootLogin » à « no »:

# Authentication:

#LoginGraceTime 2m
PermitRootLogin no
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10

On enregistre nos modifications et l’on peut redémarrer SSH:

/etc/init.d/ssh restart

L’accès à l’utilisateur root se fera désormais uniquement de la façon dont nous le faisons actuellement: en se connectant avec un utilisateur, puis:

su root

Pare-feu

Sans pare-feu installé sur notre serveur, les communications entrantes et sortantes ne sont pas filtrées, pouvant entrainer des connexions indésirables. Nous allons donc installer un pare-feu simple et y définir quelques règles pour garder un minimum de contrôle.

Installation du pare-feu UFW

Le pare-feu que nous utiliserons sera Uncomplicated FireWall (UFW).

Plus d’infos sur UFW et les commandes disponibles sur le site Ubuntu-fr.org

Ce logiciel nous permettra de gérer simplement en quelques lignes de commande les configurations des règles de notre pare-feu.

Il est possible qu’UFW soit déjà installé sur notre serveur, on testera son installation en entrant:

ufw status

S’il n’est pas installé: 

apt install ufw

Définition de règles pour UFW

Nous avons précedemment modifié le port d’accès pour SSH, qui par défaut était sur le Port 22.

Nous allons donc dans un premier temps refléter ce changement dans la configuration de notre pare-feu pour autoriser les connexions sur le nouveau port que nous avons défini:

ufw allow NumeroDePort/tcp

Nous pouvons maintenant activer UFW en lançant la commande:

ufw enable

Et afficher la liste des connexion actuellement autorisées (uniquement notre port SSH sur TCP) avec la commande:

ufw status verbose

Par la suite, nous souhaiterons probablement ouvrir d’autres ports en fonction de nos besoins, on utilisera alors la même commande pour le numéro de port souhaité.

Certains ports par défaut peuvent être activés par le nom de leur protocole, par exemple HTTP:

ufw allow http

Ceci aura pour effet de rajouter une règle pour autoriser le port 80/TCP.

Il faudra relancer le pare-feu pour prendre en compte les modifications, avec la commande:

ufw reload

Nous pouvons également à tout moment désactiver UFW en lançant la commande:

ufw disable

Là encore, le guide d’Ubuntu-fr.org offre plus de détails sur les configurations avancées.

Limiter les attaques

Pour finir, nous allons installer et configurer Fail2ban qui nous permettra de limiter les attaques potentielles sur notre serveur.

Par l’analyse des tentatives de connexion échouées sur une période définie, Fail2ban génèrera automatiquement des règles actives pour une durée déterminée afin de bloquer ces tentatives.

Installation de Fail2ban

Commençons donc par installer Fail2ban:

apt install fail2ban

Ensuite, pour le démarrer et également l’activer au démarrage du serveur:

systemctl start fail2ban
systemctl enable fail2ban

En entrant la commande suivante, on pourra en contrôler le statut:

systemctl status fail2ban

La ligne « Active » devrait indiquer « active (running)« . Nous pouvons alors poursuivre et définir notre configuration.

Configurer Fail2ban

Afin de configurer Fail2ban, nous allons créer notre propre fichier conf:

nano /etc/fail2ban/jail.d/custom.conf

Dans lequel nous allons définir les règles suivantes:

[DEFAULT]
ignoreip = 127.0.0.1 iplocale
findtime = 10m
bantime = 1h
maxretry = 5

[sshd]
enabled = true
port = NumeroDePort
maxretry = 5

La première partie « [DEFAULT] » nous permet d’indiquer les IP à ne jamais bloquer, elles seront ignorées lors de l’analyse, on y ajoute donc notre propre adresse IP afin d’éviter de se bannir soi-même.

La règle « findtime » détermine la période sur laquelle fail2ban analysera les tentatives.

La règle « bantime » définit la durée pour laquelle l’IP sera bannie.

Pour finir la règle « maxretry » donne le nombre de tentatives à partir duquel l’IP sera bannie si elle échoue à se connecter.

La seconde partie « [sshd] » est spécifique pour les connexions ssh. Puisque nous avons modifié le port SSH par défaut précédemment, il faut ici l’indiquer.

Pour prendre en compte nos changements, il faut finalement enregistrer le fichier et redémarrer le service:

systemctl restart fail2ban

Pour des configurations plus avancées: plus de détails sur Fail2Ban sur le site Ubuntu-fr.org

Pour toute suggestion, remarque ou correction, n’hésitez pas à commenter ci-dessous ou me contacter!

Partager :

3 Réponses à “Sécuriser Un VPS Ou Serveur Dédié Ubuntu”

Laisser un commentaire