Con­fi­gu­rer un serveur en toute sécurité est une priorité pour les ad­mi­nis­tra­teurs, qu’il s’agisse de matériel personnel ou loué. Une pro­tec­tion par mot de passe robuste, des pa­ra­mètres SSH optimisés et des mises à jour ré­gu­lières sont in­dis­pen­sables pour garantir une sécurité fiable et complète. Dans cet article, découvrez les étapes clés et les meil­leures pratiques pour sécuriser ef­fi­ca­ce­ment un serveur.

Sécuriser les serveurs : à qui revient la res­pon­sa­bi­lité ?

Pour bé­né­fi­cier d’une liberté maximale dans la con­fi­gu­ra­tion, héberger son propre serveur est la solution idéale. Les serveurs avec accès root sont dis­po­nibles auprès de nombreux four­nis­seurs, dont IONOS, et offrent un accès complet au compte root. Dans les deux cas, les étapes fon­da­men­tales telles que l’ins­tal­la­tion, la struc­tu­ra­tion et la main­te­nance du serveur relèvent en­tiè­re­ment de la res­pon­sa­bi­lité du locataire. Cependant, la prudence est de mise, car une erreur dans le domaine root peut entraîner de graves con­sé­quences. À l’inverse, une gestion correcte pose les bases d’un serveur stable, per­for­mant et sécurisé.

Serveurs dédiés
Per­for­mance et in­no­va­tion
  • Pro­ces­seurs dernière gé­né­ra­tion
  • Hardware dédié haute per­for­mance
  • Data centers certifiés ISO

Sécuriser un serveur : ins­truc­tions étape par étape

Que vous sou­hai­tiez protéger un serveur Windows, Ubuntu ou Debian, certaines mesures uni­ver­selles vous aideront à établir une base de sécurité fiable. Voici les étapes es­sen­tielles que nous avons re­grou­pées pour vous.

Étape 1 : effectuer une ins­tal­la­tion minimale

Avant même de commencer les pré­pa­ra­tifs et de con­fi­gu­rer votre serveur en toute sécurité, vous pouvez in­fluen­cer le potentiel de sécurité futur de votre projet Web. Peu importe si vous souhaitez utiliser un système d’ex­ploi­ta­tion Windows ou Linux. Lors de l’ins­tal­la­tion, appliquez le principe suivant : votre serveur ne doit contenir que les logiciels né­ces­saires à l’ac­com­plis­se­ment de ses tâches.

En effet, chaque ap­pli­ca­tion installée re­pré­sente un risque pour la sécurité et peut également nuire aux per­for­mances. Pour minimiser les vul­né­ra­bi­li­tés, vous ne devez installer ou activer que les com­po­sants système in­dis­pen­sables et utiliser uni­que­ment des logiciels tiers vérifiés.

Étape 2 : définir un mot de passe sécurisé

Après l’ins­tal­la­tion, la première étape consiste à définir un mot de passe sécurisé pour le compte ad­mi­nis­tra­teur (Windows) ou root (Linux). Par défaut, aucun mot de passe n’est défini, ce qui bloque aussi le compte ad­mi­nis­tra­teur jusqu’à ce que vous en con­fi­gu­riez un. En règle générale, le système d’ex­ploi­ta­tion vous invite au­to­ma­ti­que­ment à créer un compte avec un mot de passe après l’ins­tal­la­tion. Ce compte servira d’accès ad­mi­nis­tra­teur ou root.

Si vous avez loué un serveur Linux auprès d’un four­nis­seur et reçu un accès root, vous devez changer le mot de passe im­mé­dia­te­ment. Pour cela, vous devez d’abord vous connecter à votre serveur via SSH. Saisissez ensuite la commande suivante dans le terminal cor­res­pon­dant :

passwd
bash

Vous pouvez y définir votre mot de passe sécurisé, que vous devrez alors vérifier. Assurez-vous de choisir un mot de passe aussi long que possible, incluant non seulement des lettres, mais également des ca­rac­tères spéciaux et des chiffres. Pour protéger vos accès, un ges­tion­naire de mots de passe est une solution efficace qui vous permet de conserver vos mots de passe en toute con­fi­den­tia­lité.

Conseil

Si un mot de passe root a déjà été défini pour votre système Linux et que vous ne le con­nais­sez pas, vous pouvez le modifier en mode ré­cu­pé­ra­tion. Pour accéder à ce mode, maintenez la touche majuscule enfoncée pendant le processus de démarrage. Dans le menu, sé­lec­tion­nez l’entrée « root » pour lancer l’invite de commande Root. Vous y opérez au­to­ma­ti­que­ment en tant qu’ad­mi­nis­tra­teur et pouvez procéder au chan­ge­ment de mot de passe souhaité.

Étape 3 : modifier le port SSH

Par défaut, le port TCP/UDP 22 est utilisé pour l’accès au serveur via SSH. Ce port est au­to­ma­ti­que­ment configuré lors de la réins­tal­la­tion du système. Les cy­ber­cri­mi­nels, en quête de failles de sécurité, con­centrent donc leurs ten­ta­tives d’attaques (prin­ci­pa­le­ment des essais de connexion au­to­ma­ti­sés) sur ce port. En dé­fi­nis­sant un autre port pour les con­nexions à distance sé­cu­ri­sées, vous réduisez con­si­dé­ra­ble­ment le risque d’accès non autorisé.

Pour ce faire, il vous suffit de modifier le fichier de con­fi­gu­ra­tion SSH sshd_config à l’aide d’un éditeur de texte de votre choix. Par exemple, vous pouvez ouvrir ce fichier avec l’éditeur standard nano en sai­sis­sant la commande suivante :

nano /etc/ssh/sshd_config
bash

Cherchez la ligne « Port » et remplacez le numéro de port 22 par celui de votre choix. Gardez à l’esprit que certains ports sont réservés à d’autres services standards, comme le port 80 pour le HTTP.

Note

Avant que les chan­ge­ments dans sshd_config ne de­vien­nent actifs, il est né­ces­saire de re­dé­mar­rer le service SSH. Sous Debian, cela se fait avec la commande etc/init.d/ssh restart. Les uti­li­sa­teurs d’Ubuntu, quant à eux, re­dé­mar­rent le service à l’aide de service ssh restart.

Étape 4 : dé­sac­ti­ver la connexion SSH pour l’ad­mi­nis­tra­teur

Pour sécuriser votre serveur, il est conseillé de bloquer l’accès SSH pour le compte root ou ad­mi­nis­tra­teur. Sinon, un attaquant disposant du mot de passe pourrait accéder au serveur via une connexion de bureau à distance en utilisant ce compte.

Avant de procéder, assurez-vous toutefois de disposer d’au moins un autre compte capable de se connecter au serveur, afin d’éviter d’être to­ta­le­ment bloqué hors du système. Sous Linux, vous pouvez créer un tel compte avec la commande suivante :

useradd -g users -d /home/utilisateur1 -m -s /bin/bash utilisateur1
bash

De cette manière, vous créez le compte d’uti­li­sa­teur exem­plaire « uti­li­sa­teur1 », pour lequel vous dé­fi­nis­sez un mot de passe sûr :

passwd utilisateur1
bash

Testez si la connexion avec le compte d’uti­li­sa­teur créé fonc­tionne, et en cas de succès, passez à l’étape du ver­rouil­lage du compte root. Pour cela, vous avez à nouveau besoin du fichier de con­fi­gu­ra­tion SSH sshd_config, que vous ouvrez avec l’éditeur de votre choix. Cherchez l’entrée PermitRootLogin yes et remplacez-la par PermitRootLogin no. Après un re­dé­mar­rage du service SSH, l’accès à distance n’est plus possible pour le compte root.

De plus, la ligne AllowGroups vous permet de définir dans le fichier de con­fi­gu­ra­tion les uti­li­sa­teurs autorisés à se connecter au serveur via SSH. Pour cela, il suffit de créer un groupe (addgroup) et d’y ajouter les uti­li­sa­teurs souhaités (adduser). Ensuite, ajoutez le nom du groupe choisi dans sshd_config (par exemple AllowGroups ssh_utilisateur).

Note

Une al­ter­na­tive pratique au blocage de la connexion SSH consiste à interdire com­plè­te­ment la connexion par mot de passe pour l’uti­li­sa­teur et à utiliser à la place l’au­then­ti­fi­ca­tion par clé publique avec des clés SSH.

Étape 5 : con­fi­gu­rer les no­ti­fi­ca­tions par email des con­nexions SSH

Quelle que soit la manière dont vous procédez en détail pour sécuriser l’accès SSH, vous devez ab­so­lu­ment garder un œil sur toutes les activités à distance après coup. De cette manière, vous pourrez constater si vous avez cor­rec­te­ment sécurisé le service SSH de votre serveur. En même temps, grâce à un bon mo­ni­to­ring des con­nexions établies, vous serez averti à temps en cas d’accès non autorisé et serez en mesure de prendre les contre-mesures cor­res­pon­dantes. Pour cela, il suffit d’un simple script shell qui envoie au­to­ma­ti­que­ment un email de no­ti­fi­ca­tion à votre adresse à chaque connexion à distance réussie sur votre serveur.

Un exemple de script /opt/shell-login.sh pour Linux, que vous pouvez fa­ci­le­ment créer vous-même, doit sim­ple­ment contenir le code suivant à cet effet :

#!/bin/bash
echo "connexion sur $(hostname) le $(date +%Y-%m-%d) um $(date +%H:%M)"
echo "utilisateur: $USER"
echo
finger
txt

Ajoutez la ligne suivante dans le fichier /etc/profile :

/opt/shell-login.sh | mailx -s "Connexion SSH sur le serveur" mailadresse@example.com
txt

Avec cette entrée, vous vous assurez que le script s’exécute et envoie une no­ti­fi­ca­tion par email à l’adresse souhaitée en cas de connexion via SSH. La condition préalable est que le script dispose des droits 755 (lecture et exécution pour tous les uti­li­sa­teurs, écriture uni­que­ment pour le pro­prié­taire), ce que vous pouvez définir avec la commande suivante :

chmod 755 /opt/shell-login.sh
bash
Note

Si un uti­li­sa­teur établit une connexion SSH via un programme comme WinSCP, qui ne réalise pas une session complète, le script shell décrit ici n’enverra pas d’email !

Étape 6 : bloquer les ports inu­ti­li­sés

Les ports ouverts ne cons­ti­tuent gé­né­ra­le­ment pas un risque par­ti­cu­lier pour la sécurité. Comme ils sont in­dis­pen­sables à la com­mu­ni­ca­tion avec les dif­fé­rents services et ap­pli­ca­tions, il est même essentiel que certains ports soient ouverts par défaut, comme les ports 80 et 443 pour les con­nexions HTTP ou HTTPS, ou encore le port SSH que vous avez configuré. Ces in­ter­faces ouvertes ne de­vien­nent un risque que si les pro­grammes qui y répondent pré­sen­tent des vul­né­ra­bi­li­tés, ex­ploi­tées ensuite par des cy­ber­cri­mi­nels.

Conseil

Apprenez dans notre article séparé comment tester les ports ouverts afin d’iden­ti­fier les éven­tuelles vul­né­ra­bi­li­tés.

Si vous avez effectué une ins­tal­la­tion minimale du système et installé seulement un petit nombre d’ap­pli­ca­tions tierces, le nombre de ports né­ces­saires reste limité. Pour protéger votre serveur contre les attaques, il est conseillé de bloquer tous les ports ouverts inu­ti­li­sés dans les pa­ra­mètres de votre pare-feu. Tous les systèmes d’ex­ploi­ta­tion im­por­tants ont déjà installé par défaut l’outil approprié, le logiciel de filtrage de paquets iptables. Cet outil permet de définir des règles fixes pour contrôler le trafic de données, notamment en spé­ci­fiant quels ports doivent être autorisés ou bloqués.

Étape 7 : mettre à jour ré­gu­liè­re­ment le logiciel

En général, les vul­né­ra­bi­li­tés de sécurité connues dans les ap­pli­ca­tions sont ra­pi­de­ment corrigées grâce aux mises à jour publiées. En sur­veil­lant ré­gu­liè­re­ment les mises à jour de votre système d’ex­ploi­ta­tion et des pro­grammes installés, puis en les ap­pli­quant ra­pi­de­ment, vous assurez une pro­tec­tion optimale de votre serveur. La plupart des systèmes de serveur disposent également d’une fonction per­met­tant de té­lé­char­ger et d’installer au­to­ma­ti­que­ment en arrière-plan les mises à jour de sécurité es­sen­tielles.

Si vous souhaitez sécuriser un serveur Windows, vous pouvez définir des di­rec­tives précises pour le processus de mise à jour au­to­ma­tique dans la section « Windows Update ». Vous y con­fi­gu­rez en détail le moment et la fréquence des re­cherches de mises à jour, si les mises à jour détectées doivent être ins­tal­lées im­mé­dia­te­ment, et quand le système doit re­dé­mar­rer.

Pour les systèmes Linux, des outils spé­ci­fiques comme apt-list­changes ou le script shell apticron peuvent vous informer quo­ti­dien­ne­ment des nouveaux paquets dis­po­nibles et les té­lé­char­ger au­to­ma­ti­que­ment. Des scripts comme unat­ten­ded-upgrades prennent ensuite en charge leur ins­tal­la­tion au­to­ma­tique.

Note

Gardez toujours une vue d’ensemble des mises à jour ef­fec­tuées, même si le processus est au­to­ma­tisé. Cela vous permettra de mieux com­prendre les éven­tuelles erreurs survenues après une mise à jour et d’y réagir ra­pi­de­ment.

Étape 8 : sécuriser les serveurs Windows et Linux contre les attaques par force brute

L’une des attaques les plus simples et courantes est la méthode dite de force brute. Les pirates tentent de deviner les mots de passe à l’aide d’outils au­to­ma­ti­sés. Cependant, plus vos mots de passe sont robustes et bien choisis, moins cette méthode a de chances de réussir.

Si vous proposez un service avec un mécanisme de connexion, il est important de con­si­dé­rer que tous les uti­li­sa­teurs ne sont pas forcément aussi prudents qu’ils le devraient. Pour pallier ce risque, des outils d’analyse peuvent être utilisés : des solutions comme Fail2ban (pour les systèmes Linux/POSIX) ou RdpGuard (pour Windows) analysent les fichiers journaux de votre serveur, détectent les com­por­te­ments in­ha­bi­tuels et bloquent au­to­ma­ti­que­ment les adresses IP suspectes. Vous pouvez con­fi­gu­rer ces outils pour définir le nombre de ten­ta­tives in­fruc­tueuses dé­clen­chant le blocage ainsi que la durée pendant laquelle le blocage est appliqué.

Conseil

Pour renforcer encore davantage la sécurité de votre serveur, activez l’au­then­ti­fi­ca­tion à deux facteurs. Cette procédure exige, en plus de la saisie du mot de passe, un second élément en pos­ses­sion de l’uti­li­sa­teur pour se connecter (par exemple, un smart­phone, une carte à puce ou un mot de passe à usage unique).

Étape 9 : utiliser des outils de sur­veil­lance

Pour sécuriser un serveur, il est essentiel de garantir que l’in­te­rac­tion entre le matériel et les logiciels fonc­tionne cor­rec­te­ment. Cette tâche ne se limite pas au lancement réussi de l’en­vi­ron­ne­ment serveur, mais constitue un travail de longue haleine qui demande une attention constante. La gestion des dif­fé­rents processus système peut être complexe. C’est pourquoi il est utile d’utiliser dès le départ des outils de sur­veil­lance pour contrôler le serveur et signaler tout événement in­ha­bi­tuel.

Un outil simple et rapide à con­fi­gu­rer est Monit, fa­ci­le­ment ins­tal­lable via le ges­tion­naire de paquets de nom­breuses dis­tri­bu­tions Linux. Cette ap­pli­ca­tion open source (licence GNU-AGPL) permet de sur­veil­ler divers éléments tels que les processus, fichiers, Clouds, hôtes, pro­grammes ou scripts. Les res­sources système comme l’uti­li­sa­tion du CPU, de la mémoire et du système global peuvent également être suivies. Pour une sur­veil­lance plus détaillée, le logiciel Nagios est re­com­mandé. Dis­po­nible en version de base open source pour Linux et Windows, Nagios peut être enrichi par dif­fé­rents plugins pour une per­son­na­li­sa­tion et une ef­fi­ca­cité accrues.

Étape 10 : con­fi­gu­rer les sau­ve­gardes

En suivant les con­fi­gu­ra­tions re­com­man­dées, vous augmentez con­si­dé­ra­ble­ment la sécurité de votre serveur. Cependant, même la meilleure con­fi­gu­ra­tion et une main­te­nance régulière ne peuvent garantir une pro­tec­tion absolue. C’est pourquoi une stratégie de sau­ve­garde complète est es­sen­tielle pour restaurer vos fichiers en cas de perte.

Heu­reu­se­ment, de nombreux outils per­for­mants sont dis­po­nibles pour vous aider à créer et restaurer des sau­ve­gardes. Parmi eux, le programme de syn­chro­ni­sa­tion open source rync se distingue : dis­po­nible pour presque toutes les pla­te­formes courantes (macOS, Windows, Linux), cet outil maintient vos sau­ve­gardes à jour en syn­chro­ni­sant en temps réel les mo­di­fi­ca­tions apportées aux données ori­gi­nales.

Assurer la sau­ve­garde globale de votre serveur est in­dis­pen­sable, mais il est tout aussi important de sau­ve­gar­der ré­gu­liè­re­ment vos bases de données.

Note

Pour garantir une sau­ve­garde aussi sécurisée que possible, il est conseillé de stocker le ré­per­toire de sau­ve­garde sur un support externe (par exemple, un disque dur externe ou un autre serveur) plutôt que sur le serveur lui-même.

Aller au menu principal