Sécuriser un serveur : la bonne configuration
Configurer un serveur en toute sécurité est une priorité pour les administrateurs, qu’il s’agisse de matériel personnel ou loué. Une protection par mot de passe robuste, des paramètres SSH optimisés et des mises à jour régulières sont indispensables pour garantir une sécurité fiable et complète. Dans cet article, découvrez les étapes clés et les meilleures pratiques pour sécuriser efficacement un serveur.
Sécuriser les serveurs : à qui revient la responsabilité ?
Pour bénéficier d’une liberté maximale dans la configuration, héberger son propre serveur est la solution idéale. Les serveurs avec accès root sont disponibles auprès de nombreux fournisseurs, dont IONOS, et offrent un accès complet au compte root. Dans les deux cas, les étapes fondamentales telles que l’installation, la structuration et la maintenance du serveur relèvent entièrement de la responsabilité du locataire. Cependant, la prudence est de mise, car une erreur dans le domaine root peut entraîner de graves conséquences. À l’inverse, une gestion correcte pose les bases d’un serveur stable, performant et sécurisé.
Profitez de votre propre serveur, avec hardware dédié, intégration Cloud, facturation à la minute et processeur Intel® Xeon® ou AMD.
Sécuriser un serveur : instructions étape par étape
Que vous souhaitiez protéger un serveur Windows, Ubuntu ou Debian, certaines mesures universelles vous aideront à établir une base de sécurité fiable. Voici les étapes essentielles que nous avons regroupées pour vous.
Étape 1 : effectuer une installation minimale
Avant même de commencer les préparatifs et de configurer votre serveur en toute sécurité, vous pouvez influencer le potentiel de sécurité futur de votre projet Web. Peu importe si vous souhaitez utiliser un système d’exploitation Windows ou Linux. Lors de l’installation, appliquez le principe suivant : votre serveur ne doit contenir que les logiciels nécessaires à l’accomplissement de ses tâches.
En effet, chaque application installée représente un risque pour la sécurité et peut également nuire aux performances. Pour minimiser les vulnérabilités, vous ne devez installer ou activer que les composants système indispensables et utiliser uniquement des logiciels tiers vérifiés.
Étape 2 : définir un mot de passe sécurisé
Après l’installation, la première étape consiste à définir un mot de passe sécurisé pour le compte administrateur (Windows) ou root (Linux). Par défaut, aucun mot de passe n’est défini, ce qui bloque aussi le compte administrateur jusqu’à ce que vous en configuriez un. En règle générale, le système d’exploitation vous invite automatiquement à créer un compte avec un mot de passe après l’installation. Ce compte servira d’accès administrateur ou root.
Si vous avez loué un serveur Linux auprès d’un fournisseur et reçu un accès root, vous devez changer le mot de passe immédiatement. Pour cela, vous devez d’abord vous connecter à votre serveur via SSH. Saisissez ensuite la commande suivante dans le terminal correspondant :
passwd
bashVous 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 caractères spéciaux et des chiffres. Pour protéger vos accès, un gestionnaire de mots de passe est une solution efficace qui vous permet de conserver vos mots de passe en toute confidentialité.
Si un mot de passe root a déjà été défini pour votre système Linux et que vous ne le connaissez pas, vous pouvez le modifier en mode récupération. Pour accéder à ce mode, maintenez la touche majuscule enfoncée pendant le processus de démarrage. Dans le menu, sélectionnez l’entrée « root » pour lancer l’invite de commande Root. Vous y opérez automatiquement en tant qu’administrateur et pouvez procéder au changement 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 automatiquement configuré lors de la réinstallation du système. Les cybercriminels, en quête de failles de sécurité, concentrent donc leurs tentatives d’attaques (principalement des essais de connexion automatisés) sur ce port. En définissant un autre port pour les connexions à distance sécurisées, vous réduisez considérablement le risque d’accès non autorisé.
Pour ce faire, il vous suffit de modifier le fichier de configuration 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 saisissant la commande suivante :
nano /etc/ssh/sshd_config
bashCherchez 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.
Avant que les changements dans sshd_config
ne deviennent actifs, il est nécessaire de redémarrer le service SSH. Sous Debian, cela se fait avec la commande etc/init.d/ssh restart
. Les utilisateurs d’Ubuntu, quant à eux, redémarrent le service à l’aide de service ssh restart
.
Étape 4 : désactiver la connexion SSH pour l’administrateur
Pour sécuriser votre serveur, il est conseillé de bloquer l’accès SSH pour le compte root ou administrateur. 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 totalement 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
bashDe cette manière, vous créez le compte d’utilisateur exemplaire « utilisateur1 », pour lequel vous définissez un mot de passe sûr :
passwd utilisateur1
bashTestez si la connexion avec le compte d’utilisateur créé fonctionne, et en cas de succès, passez à l’étape du verrouillage du compte root. Pour cela, vous avez à nouveau besoin du fichier de configuration 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 redémarrage 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 configuration les utilisateurs autorisés à se connecter au serveur via SSH. Pour cela, il suffit de créer un groupe (addgroup
) et d’y ajouter les utilisateurs souhaités (adduser
). Ensuite, ajoutez le nom du groupe choisi dans sshd_config
(par exemple AllowGroups ssh_utilisateur
).
Une alternative pratique au blocage de la connexion SSH consiste à interdire complètement la connexion par mot de passe pour l’utilisateur et à utiliser à la place l’authentification par clé publique avec des clés SSH.
Étape 5 : configurer les notifications par email des connexions SSH
Quelle que soit la manière dont vous procédez en détail pour sécuriser l’accès SSH, vous devez absolument garder un œil sur toutes les activités à distance après coup. De cette manière, vous pourrez constater si vous avez correctement sécurisé le service SSH de votre serveur. En même temps, grâce à un bon monitoring des connexions établies, vous serez averti à temps en cas d’accès non autorisé et serez en mesure de prendre les contre-mesures correspondantes. Pour cela, il suffit d’un simple script shell qui envoie automatiquement un email de notification à votre adresse à chaque connexion à distance réussie sur votre serveur.
Un exemple de script /opt/shell-login.sh
pour Linux, que vous pouvez facilement créer vous-même, doit simplement 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
txtAjoutez la ligne suivante dans le fichier /etc/profile
:
/opt/shell-login.sh | mailx -s "Connexion SSH sur le serveur" mailadresse@example.com
txtAvec cette entrée, vous vous assurez que le script s’exécute et envoie une notification 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 utilisateurs, écriture uniquement pour le propriétaire), ce que vous pouvez définir avec la commande suivante :
chmod 755 /opt/shell-login.sh
bashSi un utilisateur é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 inutilisés
Les ports ouverts ne constituent généralement pas un risque particulier pour la sécurité. Comme ils sont indispensables à la communication avec les différents services et applications, il est même essentiel que certains ports soient ouverts par défaut, comme les ports 80 et 443 pour les connexions HTTP ou HTTPS, ou encore le port SSH que vous avez configuré. Ces interfaces ouvertes ne deviennent un risque que si les programmes qui y répondent présentent des vulnérabilités, exploitées ensuite par des cybercriminels.
Apprenez dans notre article séparé comment tester les ports ouverts afin d’identifier les éventuelles vulnérabilités.
Si vous avez effectué une installation minimale du système et installé seulement un petit nombre d’applications tierces, le nombre de ports nécessaires reste limité. Pour protéger votre serveur contre les attaques, il est conseillé de bloquer tous les ports ouverts inutilisés dans les paramètres de votre pare-feu. Tous les systèmes d’exploitation importants 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écifiant quels ports doivent être autorisés ou bloqués.
Étape 7 : mettre à jour régulièrement le logiciel
En général, les vulnérabilités de sécurité connues dans les applications sont rapidement corrigées grâce aux mises à jour publiées. En surveillant régulièrement les mises à jour de votre système d’exploitation et des programmes installés, puis en les appliquant rapidement, vous assurez une protection optimale de votre serveur. La plupart des systèmes de serveur disposent également d’une fonction permettant de télécharger et d’installer automatiquement en arrière-plan les mises à jour de sécurité essentielles.
Si vous souhaitez sécuriser un serveur Windows, vous pouvez définir des directives précises pour le processus de mise à jour automatique dans la section « Windows Update ». Vous y configurez en détail le moment et la fréquence des recherches de mises à jour, si les mises à jour détectées doivent être installées immédiatement, et quand le système doit redémarrer.
Pour les systèmes Linux, des outils spécifiques comme apt-listchanges ou le script shell apticron peuvent vous informer quotidiennement des nouveaux paquets disponibles et les télécharger automatiquement. Des scripts comme unattended-upgrades prennent ensuite en charge leur installation automatique.
Gardez toujours une vue d’ensemble des mises à jour effectuées, même si le processus est automatisé. Cela vous permettra de mieux comprendre les éventuelles erreurs survenues après une mise à jour et d’y réagir rapidement.
É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 automatisé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 considérer que tous les utilisateurs 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 comportements inhabituels et bloquent automatiquement les adresses IP suspectes. Vous pouvez configurer ces outils pour définir le nombre de tentatives infructueuses déclenchant le blocage ainsi que la durée pendant laquelle le blocage est appliqué.
Pour renforcer encore davantage la sécurité de votre serveur, activez l’authentification à deux facteurs. Cette procédure exige, en plus de la saisie du mot de passe, un second élément en possession de l’utilisateur pour se connecter (par exemple, un smartphone, une carte à puce ou un mot de passe à usage unique).
Étape 9 : utiliser des outils de surveillance
Pour sécuriser un serveur, il est essentiel de garantir que l’interaction entre le matériel et les logiciels fonctionne correctement. Cette tâche ne se limite pas au lancement réussi de l’environnement serveur, mais constitue un travail de longue haleine qui demande une attention constante. La gestion des différents processus système peut être complexe. C’est pourquoi il est utile d’utiliser dès le départ des outils de surveillance pour contrôler le serveur et signaler tout événement inhabituel.
Un outil simple et rapide à configurer est Monit, facilement installable via le gestionnaire de paquets de nombreuses distributions Linux. Cette application open source (licence GNU-AGPL) permet de surveiller divers éléments tels que les processus, fichiers, Clouds, hôtes, programmes ou scripts. Les ressources système comme l’utilisation du CPU, de la mémoire et du système global peuvent également être suivies. Pour une surveillance plus détaillée, le logiciel Nagios est recommandé. Disponible en version de base open source pour Linux et Windows, Nagios peut être enrichi par différents plugins pour une personnalisation et une efficacité accrues.
Étape 10 : configurer les sauvegardes
En suivant les configurations recommandées, vous augmentez considérablement la sécurité de votre serveur. Cependant, même la meilleure configuration et une maintenance régulière ne peuvent garantir une protection absolue. C’est pourquoi une stratégie de sauvegarde complète est essentielle pour restaurer vos fichiers en cas de perte.
Heureusement, de nombreux outils performants sont disponibles pour vous aider à créer et restaurer des sauvegardes. Parmi eux, le programme de synchronisation open source rync se distingue : disponible pour presque toutes les plateformes courantes (macOS, Windows, Linux), cet outil maintient vos sauvegardes à jour en synchronisant en temps réel les modifications apportées aux données originales.
Assurer la sauvegarde globale de votre serveur est indispensable, mais il est tout aussi important de sauvegarder régulièrement vos bases de données.
Pour garantir une sauvegarde aussi sécurisée que possible, il est conseillé de stocker le répertoire de sauvegarde sur un support externe (par exemple, un disque dur externe ou un autre serveur) plutôt que sur le serveur lui-même.