Sécuriser votre VPS est la toute première priorité après la mise en place d'un nouveau serveur. Un VPS non sécurisé, c'est comme une maison dont la porte d'entrée est ouverte : ce n'est qu'une question de temps avant que quelqu'un n'entre. Dans cette checklist détaillée, nous passons en revue toutes les étapes essentielles pour sécuriser votre VPS à fond après l'installation. Du durcissement de SSH à la configuration du pare-feu, des mises à jour automatiques à la détection d'intrusion, tout y est abordé.

Pourquoi faut-il sécuriser votre VPS immédiatement après l'installation ?

Dès que votre VPS est en ligne, son adresse IP est scannée par des bots automatisés qui recherchent des failles. Des études montrent qu'un nouveau serveur est attaqué en moyenne dans les 15 minutes qui suivent son activation. Il est donc crucial de faire de la sécurisation de votre VPS la toute première tâche, avant même d'installer des applications ou de configurer des sites web.

Les risques d'un VPS non sécurisé

  • Attaques par force brute : des milliers de tentatives de connexion par jour sur SSH
  • Installation de logiciels malveillants : votre serveur est détourné pour le minage de cryptomonnaies ou l'envoi de spam
  • Vol de données : des données sensibles sont dérobées et peut-être publiées
  • Lancement d'attaques DDoS : votre serveur devient un maillon d'un botnet
  • Rançongiciel : vos fichiers sont chiffrés et une rançon est exigée

Étape 1 : sécuriser SSH, l'étape la plus importante pour sécuriser votre VPS

SSH est le moyen principal d'administrer votre VPS et donc la principale surface d'attaque. Sécuriser un VPS commence par conséquent par le durcissement de l'accès SSH.

Mettre en place l'authentification par clé SSH

Remplacez l'authentification par mot de passe par des clés SSH. Les clés SSH sont des paires de clés cryptographiques pratiquement impossibles à casser par force brute. Générez une paire de clés SSH sur votre ordinateur local et copiez la clé publique sur votre VPS. Testez la connexion avec la clé avant de désactiver l'authentification par mot de passe.

Désactiver l'authentification par mot de passe

Une fois que vous avez vérifié que la connexion SSH par clé fonctionne, désactivez l'authentification par mot de passe dans la configuration SSH. Modifiez les paramètres suivants dans /etc/ssh/sshd_config :

  • PasswordAuthentication no : désactive la connexion par mot de passe
  • PubkeyAuthentication yes : active l'authentification par clé
  • PermitRootLogin no : empêche la connexion directe en root
  • MaxAuthTries 3 : limite le nombre de tentatives de connexion

Changer le port SSH

Le port SSH par défaut, le 22, est la première cible des scans automatisés. En remplaçant le port SSH par un numéro élevé choisi au hasard (par exemple 2222 ou 49152), vous réduisez fortement le nombre de tentatives de force brute. Ce n'est pas une mesure de sécurité en soi (security through obscurity), mais cela diminue nettement le bruit dans vos journaux.

Étape 2 : configurer le pare-feu

Un pare-feu est un élément fondamental de votre stratégie pour sécuriser votre VPS. Le pare-feu détermine quel trafic peut atteindre votre serveur et bloque tout le reste.

Mettre en place UFW (Uncomplicated Firewall)

UFW est le pare-feu le plus convivial pour les serveurs Ubuntu/Debian. Il offre une interface simple au-dessus d'iptables. Par défaut, vous bloquez toutes les connexions entrantes et vous n'autorisez que les ports précis dont vous avez besoin.

Règles de pare-feu essentielles

PortServiceActionRemarque
22 (ou personnalisé)SSHAutoriserUniquement depuis des adresses IP de confiance si possible
80HTTPAutoriserTrafic web (redirection vers HTTPS)
443HTTPSAutoriserTrafic web chiffré
Tous les autres-RefuserTout bloquer par défaut

N'ajoutez que les ports dont vous avez réellement besoin. Chaque port ouvert est une surface d'attaque potentielle. Utilisez des certificats SSL pour les connexions chiffrées sur le port 443.

Étape 3 : installer Fail2ban

Fail2ban est un outil indispensable pour sécuriser un VPS. Il surveille les fichiers journaux à la recherche d'activités suspectes et bloque automatiquement les adresses IP qui enchaînent les tentatives de connexion échouées.

Comment fonctionne Fail2ban

Fail2ban lit les fichiers journaux de services tels que SSH, Apache et Nginx. Lorsqu'il détecte un schéma qui indique une attaque (par exemple 5 connexions SSH échouées en 10 minutes), il ajoute automatiquement une règle de pare-feu qui bloque l'adresse IP de l'attaquant pendant une durée définie.

Configuration Fail2ban recommandée

  • Jail SSH : bloque après 3 tentatives échouées pendant 1 heure
  • Jail Apache/Nginx : bloque en cas de requêtes 404 répétées ou de schémas d'URL suspects
  • Jail récidive : bloque les récidivistes pendant des périodes plus longues (jusqu'à 1 semaine)
  • Notifications par e-mail : recevez un message à chaque blocage

Étape 4 : mises à jour de sécurité automatiques

Sécuriser un VPS est un processus continu. Les mises à jour de sécurité doivent être appliquées le plus vite possible pour combler les failles connues. Configurez des mises à jour automatiques pour les correctifs de sécurité afin que votre serveur soit toujours protégé, même quand vous ne l'administrez pas activement.

Configurer unattended-upgrades

Sur Ubuntu/Debian, vous utilisez le paquet unattended-upgrades. Il installe automatiquement les mises à jour de sécurité sans intervention manuelle. Configurez-le pour que seules les mises à jour de sécurité soient installées automatiquement, et non toutes les mises à jour, afin de garantir la stabilité.

Configurer le redémarrage automatique

Certaines mises à jour nécessitent un redémarrage du serveur. Vous pouvez configurer des redémarrages automatiques à un moment calme, par exemple à 04 h du matin. Veillez toutefois à ce que vos applications démarrent automatiquement après un redémarrage.

Étape 5 : gestion des utilisateurs et des droits

Une bonne gestion des utilisateurs est essentielle pour sécuriser un VPS. Ne travaillez jamais en root par défaut et n'accordez aux utilisateurs que les droits dont ils ont besoin.

Créer un utilisateur sudo

Créez un utilisateur distinct disposant de droits sudo pour l'administration quotidienne du serveur. Cet utilisateur peut obtenir temporairement les droits root via la commande sudo, mais travaille par défaut avec des droits limités. Cela limite les dégâts si le compte est compromis.

Sécuriser le compte root

  • Désactivez la connexion directe en root via SSH
  • Définissez un mot de passe très robuste pour le compte root
  • Envisagez de désactiver complètement le compte root si vous n'en avez pas besoin
  • Journalisez toutes les actions sudo à des fins d'audit

Étape 6 : permissions des fichiers et intégrité

Des permissions de fichiers correctes empêchent les utilisateurs ou processus non autorisés de lire ou de modifier des fichiers sensibles. C'est un aspect souvent négligé lorsqu'on sécurise un VPS.

Permissions de fichiers importantes

Fichier/dossierPermissionPropriétaireRaison
/etc/ssh/sshd_config600rootProtéger la configuration SSH
/etc/shadow600rootProtéger les hachages de mots de passe
Répertoires personnels700utilisateurConfidentialité par utilisateur
Racine web755www-dataLe serveur web peut lire mais pas écrire
Fichiers de configuration644rootLisibles mais non modifiables

Surveillance de l'intégrité des fichiers

Installez un outil comme AIDE (Advanced Intrusion Detection Environment), qui crée une base de données de tous les fichiers système et vous avertit lorsque des fichiers sont modifiés de manière inattendue. C'est un moyen efficace de détecter les intrusions à un stade précoce.

Étape 7 : durcissement du réseau

En plus du pare-feu, il existe des configurations réseau complémentaires qui aident à sécuriser un VPS.

Ajuster les paramètres du noyau

  • Protection contre le SYN flood : activez les SYN cookies contre les attaques SYN flood
  • Protection contre l'usurpation d'IP : activez le reverse path filtering
  • Désactiver les redirections ICMP : évitez la manipulation des routes
  • Désactiver le source routing : bloquez les paquets à routage par la source
  • Désactiver IPv6 : si vous ne l'utilisez pas, désactivez-le

Désactiver les services inutiles

Chaque service en cours d'exécution est une surface d'attaque potentielle. Faites l'inventaire des services actifs et désactivez tout ce dont vous n'avez pas besoin. Parmi les services souvent inutiles figurent Avahi (mDNS), CUPS (impression), NFS et les services liés à RPC.

Étape 8 : surveillance et journalisation

Sécuriser un VPS n'est pas complet sans une bonne surveillance et une bonne journalisation. Vous devez savoir ce qui se passe sur votre serveur pour réagir rapidement aux menaces.

Configurer la journalisation

  • Centralisez les journaux avec rsyslog ou journald
  • Configurez la rotation des journaux pour gérer l'espace disque
  • Envisagez un stockage externe des journaux afin qu'ils soient conservés en cas de piratage
  • Surveillez auth.log à la recherche de tentatives de connexion suspectes

Outils de surveillance

Installez un logiciel de surveillance pour suivre la santé et la sécurité de votre serveur. Parmi les options courantes figurent Netdata (gratuit, surveillance en temps réel), Zabbix (complet, pour plusieurs serveurs) et Prometheus avec Grafana (pour les métriques et tableaux de bord avancés). Consultez aussi notre guide sur la surveillance de site web pour en savoir plus.

Étape 9 : stratégie de sauvegarde

Une bonne sauvegarde est votre dernière ligne de défense quand vous sécurisez un VPS. Si toutes les autres mesures échouent, une sauvegarde vous permet de tout restaurer.

Bonnes pratiques de sauvegarde pour un VPS

  • Effectuez des sauvegardes automatiques quotidiennes
  • Stockez les sauvegardes hors site (pas sur le même VPS)
  • Testez régulièrement le processus de restauration
  • Conservez plusieurs générations de sauvegardes
  • Chiffrez les sauvegardes avec un mot de passe robuste

Lisez notre guide sur la création d'une sauvegarde de site web pour obtenir des instructions détaillées sur la mise en place d'une stratégie de sauvegarde robuste.

Checklist pour sécuriser un VPS : vue d'ensemble complète

Voici la checklist complète pour sécuriser votre VPS après l'installation :

  1. Mettre en place l'authentification par clé SSH et désactiver la connexion par mot de passe
  2. Changer le port SSH et désactiver la connexion root
  3. Configurer le pare-feu (UFW) avec un minimum de ports ouverts
  4. Installer et configurer Fail2ban
  5. Activer les mises à jour de sécurité automatiques
  6. Créer un utilisateur sudo, désactiver la connexion root
  7. Vérifier et renforcer les permissions des fichiers
  8. Installer la surveillance de l'intégrité des fichiers (AIDE)
  9. Durcir les paramètres du noyau
  10. Désactiver les services inutiles
  11. Configurer la journalisation et la surveillance
  12. Mettre en place et tester la stratégie de sauvegarde
  13. Installer des certificats SSL pour tous les services web
  14. Planifier des audits de sécurité réguliers

Sécuriser un VPS n'est pas une tâche ponctuelle mais un processus continu. Planifiez chaque mois une revue de sécurité au cours de laquelle vous contrôlez tous les points ci-dessus et mettez votre configuration à jour en fonction des nouvelles menaces. Avec cette checklist détaillée, vous disposez d'une base solide pour un VPS sûr sur lequel héberger vos sites web et vos applications en toute confiance. Consultez aussi notre comparaison entre VPS infogéré et non infogéré si vous envisagez de déléguer la gestion de la sécurité.

Sécuriser un VPS : configuration avancée du pare-feu

Un pare-feu est la première ligne de défense lorsque vous sécurisez votre VPS. Par défaut, tous les ports sont ouverts sur un nouveau VPS, ce qui rend votre serveur vulnérable aux attaques. Une configuration stricte du pare-feu est donc la toute première étape après l'installation.

UFW contre iptables

UFW (Uncomplicated Firewall) est le pare-feu le plus accessible pour les débutants sous Linux, tandis qu'iptables offre plus de contrôle aux utilisateurs avancés. Pour la plupart des administrateurs de VPS, UFW est le meilleur choix grâce à sa syntaxe simple.

CaractéristiqueUFWiptablesnftables
Facilité d'utilisationTrès simpleComplexeMoyenne
FlexibilitéDe baseComplèteComplète
Prise en charge d'IPv6AutomatiqueÀ configurer séparémentIntégrée
JournalisationSimpleDétailléeDétaillée
Recommandé pourDébutants et utilisateurs intermédiairesUtilisateurs avancésNouveaux utilisateurs et utilisateurs avancés

Commencez par bloquer tout le trafic entrant, puis n'autorisez que les ports nécessaires. L'ensemble minimal de ports pour un serveur web est : SSH (22 ou un numéro de port personnalisé), HTTP (80) et HTTPS (443). N'autorisez aucun accès aux ports de base de données (3306 pour MySQL, 5432 pour PostgreSQL) depuis l'internet public.

Détection et prévention des intrusions sur votre VPS

En plus d'un pare-feu, vous avez besoin d'une surveillance active pour détecter les tentatives d'intrusion et les bloquer automatiquement. C'est un volet crucial pour sécuriser votre VPS contre les attaques automatisées comme ciblées.

Fail2Ban est l'outil de prévention des intrusions le plus utilisé pour les serveurs Linux. Il analyse les fichiers journaux à la recherche de tentatives de connexion échouées et bloque automatiquement les adresses IP au comportement suspect. Configurez Fail2Ban pour :

  • SSH : bloquez les adresses IP après 3 à 5 tentatives de connexion échouées pendant au moins 30 minutes
  • Serveur web : détectez et bloquez les scanners qui recherchent des failles
  • FTP : si vous utilisez FTP (mieux : utilisez SFTP via SSH)
  • Pages de connexion des CMS : protégez wp-login.php de WordPress ou d'autres pages d'administration

Envisagez en outre d'installer un système de détection d'intrusion sur l'hôte (HIDS) tel qu'OSSEC ou Wazuh. Ces outils surveillent les modifications de fichiers, détectent les rootkits et vous avertissent en cas d'activité système suspecte. Combinez-les avec des outils de surveillance de serveur pour avoir une vue d'ensemble de la santé et de la sécurité de votre VPS.

Sécuriser un VPS : gestion des utilisateurs et contrôle d'accès

Une bonne gestion des utilisateurs est fondamentale pour un VPS sûr. De nombreux incidents de sécurité résultent de droits trop larges ou de comptes partagés. Suivez ces consignes pour un contrôle d'accès solide :

  1. Désactivez la connexion root via SSH : utilisez un utilisateur ordinaire disposant de droits sudo et désactivez la connexion root directe dans sshd_config.
  2. Créez des comptes individuels : donnez à chaque administrateur son propre compte plutôt qu'un compte administrateur partagé. Cela permet de tracer les actions pour les audits.
  3. Utilisez des clés SSH : désactivez l'authentification par mot de passe et n'utilisez que des clés SSH pour un accès sécurisé.
  4. Limitez les droits sudo : n'accordez aux utilisateurs que les commandes sudo précises dont ils ont besoin, via le fichier sudoers.
  5. Mettez en place le 2FA pour SSH : ajoutez l'authentification à deux facteurs à SSH pour une couche de sécurité supplémentaire via le module PAM Google Authenticator.

Mises à jour automatiques et gestion des correctifs pour votre VPS

Les logiciels obsolètes sont l'un des plus grands risques pour votre VPS. La gestion automatique des correctifs garantit que les mises à jour de sécurité sont appliquées rapidement, même quand vous ne vous occupez pas activement de l'administration du serveur. C'est un volet essentiel pour sécuriser votre VPS.

Sur Ubuntu et Debian, vous pouvez configurer unattended-upgrades pour les mises à jour de sécurité automatiques. Cet outil installe les correctifs du système d'exploitation sans intervention manuelle. Pour les mises à jour d'applications (comme les images Docker ou les versions de CMS), un processus plus contrôlé est nécessaire.

  • Correctifs du système : automatiquement via unattended-upgrades ou yum-cron
  • Mises à jour du serveur web : testez d'abord sur un environnement de préproduction avant de mettre à jour Nginx ou Apache
  • Mises à jour de la base de données : faites toujours une sauvegarde avant de mettre à jour le logiciel de base de données
  • Mises à jour des applications : planifiez des cycles de mise à jour mensuels pour votre CMS, vos frameworks et vos extensions

Surveillez les mises à jour disponibles avec les commandes Linux pour l'administration d'un VPS. La commande apt list --upgradable affiche les mises à jour disponibles sur les systèmes basés sur Debian. Tenez un journal des modifications (changelog) de toutes les mises à jour que vous effectuez, afin de pouvoir revenir en arrière rapidement en cas de problème. Combinez le tout avec un pare-feu de site web pour une protection optimale de votre serveur et des sites web qui y fonctionnent.

Sécuriser un VPS : durcissement du noyau et sécurité du système

Outre la sécurité du réseau et des accès, le durcissement du noyau Linux est un volet important pour sécuriser votre VPS. Le noyau est le cœur du système d'exploitation et les failles qui s'y trouvent ont les conséquences les plus lourdes.

Avec les paramètres sysctl, vous pouvez ajuster divers paramètres du noyau pour une meilleure sécurité. Protégez-vous contre l'usurpation d'IP en activant le reverse path filtering. Évitez les attaques par redirection ICMP en désactivant l'acceptation des redirections. Activez la protection par SYN cookies contre les attaques SYN flood, une forme courante de déni de service. Limitez les informations que le noyau divulgue en activant kernel.dmesg_restrict, afin que seuls les utilisateurs root puissent lire les messages du journal du noyau.

AppArmor et SELinux offrent un contrôle d'accès obligatoire (MAC), qui complète les droits de fichiers Linux standard. Ces systèmes limitent ce que les programmes peuvent faire, même lorsqu'ils s'exécutent en root. AppArmor est disponible par défaut sur Ubuntu et plus simple à configurer, tandis que SELinux (par défaut sur CentOS et RHEL) offre un contrôle plus granulaire mais demande un apprentissage plus long.

Sécuriser un VPS : journalisation et piste d'audit

Un système de journalisation bien configuré est indispensable pour détecter et analyser les incidents de sécurité sur votre VPS. Sans journalisation adéquate, vous ne pouvez pas retrouver ce qui s'est passé lors d'une intrusion ni quelles données ont pu être compromises.

Configurez auditd pour un audit système complet. Il enregistre tous les événements système pertinents : accès aux fichiers, actions des utilisateurs, connexions réseau et appels de processus. Centralisez vos journaux avec rsyslog ou journald vers un serveur de journaux externe ou un service cloud. Cela empêche un attaquant d'effacer les journaux locaux pour dissimuler ses traces. Mettez en place la rotation des journaux pour éviter que les fichiers journaux ne remplissent votre disque, mais conservez les journaux au moins 90 jours pour les enquêtes forensiques. Surveillez activement vos journaux avec des outils comme Logwatch, qui envoient un résumé quotidien, ou avec des systèmes SIEM avancés qui reconnaissent des schémas en temps réel et alertent en cas d'activité suspecte. Une bonne stratégie de journalisation, combinée aux mesures évoquées plus haut, rend votre VPS résistant à la plupart des attaques et vous permet de réagir rapidement lorsque quelque chose tourne mal malgré tout.

Sécuriser un VPS : stratégie de sauvegarde et reprise après sinistre

Un VPS sécurisé n'est complet qu'avec une stratégie de sauvegarde bien pensée. Même avec la meilleure sécurité, des pannes matérielles, des erreurs humaines ou des attaques sophistiquées peuvent entraîner une perte de données. Votre sauvegarde est votre dernière ligne de défense lorsque vous sécurisez votre VPS.

Appliquez la règle de sauvegarde 3-2-1 : conservez trois copies de vos données sur deux types de supports différents, dont une copie sur un site externe. Automatisez des sauvegardes quotidiennes de vos bases de données et des sauvegardes hebdomadaires de tous les fichiers. Stockez les sauvegardes chiffrées avec un chiffrement AES-256 et conservez la clé de chiffrement séparément des sauvegardes elles-mêmes.

Testez vos sauvegardes chaque mois en effectuant une restauration complète sur un environnement de test. Une sauvegarde qui ne peut pas être restaurée ne vaut rien. Documentez la procédure de restauration étape par étape, afin qu'un collègue qui n'est pas impliqué au quotidien dans l'administration du serveur puisse aussi effectuer une restauration en cas d'urgence. Définissez votre Recovery Time Objective (en combien de temps le système doit refonctionner) et votre Recovery Point Objective (quelle quantité de données vous pouvez perdre au maximum) et adaptez-y la fréquence de vos sauvegardes. Pour les sites web critiques pour l'entreprise, un RPO d'une heure maximum et un RTO de quatre heures maximum constituent une référence courante.

Sécuriser un VPS : résumé et liste de priorités

Sécuriser votre VPS peut sembler écrasant au vu de toutes les mesures disponibles. Utilisez cette liste de priorités pour réaliser les étapes les plus importantes dans le bon ordre. Dès l'installation, commencez par changer le mot de passe SSH par défaut et par créer un utilisateur non root disposant de droits sudo. Configurez ensuite l'authentification par clé SSH et désactivez la connexion par mot de passe. Installez et configurez un pare-feu qui bloque tout le trafic entrant, sauf les ports dont vous avez besoin. Mettez en place Fail2Ban pour bloquer automatiquement les attaques par force brute. Activez les mises à jour de sécurité automatiques pour le système d'exploitation. Configurez des sauvegardes automatiques quotidiennes vers un emplacement externe. Installez une surveillance qui vous avertit en cas de comportement anormal. Documentez l'intégralité de la configuration de votre serveur afin de pouvoir la reproduire en cas d'urgence. Avec ces étapes dans le bon ordre, vous disposez d'une base de sécurité solide que vous pourrez ensuite étoffer avec des mesures plus avancées comme le durcissement du noyau et la détection d'intrusion.