Sécuriser son vps en suivant quelques bonnes pratiques

La sécurisation d'un serveur privé virtuel (VPS) est une étape cruciale pour tout administrateur système ou propriétaire de site web. Dans un environnement numérique où les menaces évoluent constamment, il est essentiel d'adopter une approche proactive en matière de sécurité. Un VPS mal configuré peut devenir une cible facile pour les cybercriminels, mettant en péril vos données, votre réputation et potentiellement votre activité. En suivant quelques bonnes pratiques, vous pouvez considérablement renforcer la sécurité de votre infrastructure et réduire les risques d'intrusion.

Configuration initiale du VPS pour une sécurité renforcée

La première étape pour sécuriser votre VPS consiste à effectuer une configuration initiale robuste. Cela implique de prendre des mesures dès le déploiement de votre serveur pour établir une base solide de sécurité. Commencez par changer immédiatement les mots de passe par défaut, en utilisant des combinaisons complexes et uniques pour chaque compte. Il est recommandé d'utiliser un gestionnaire de mots de passe pour générer et stocker ces informations de manière sécurisée.

Ensuite, assurez-vous de mettre à jour l'ensemble du système d'exploitation et des applications installées. Les failles de sécurité sont souvent corrigées dans les dernières versions des logiciels, il est donc crucial de maintenir votre système à jour. Utilisez des commandes telles que apt update et apt upgrade sur les systèmes basés sur Debian pour effectuer ces mises à jour.

Une autre mesure importante est de désactiver les services inutiles. Chaque service en cours d'exécution représente une surface d'attaque potentielle. Identifiez les services essentiels à votre activité et désactivez tous les autres. Vous pouvez utiliser la commande systemctl pour gérer les services sur les systèmes modernes.

Mise en place d'un pare-feu robuste avec iptables

Un pare-feu est votre première ligne de défense contre les attaques réseau. Iptables est un outil puissant intégré à la plupart des distributions Linux qui vous permet de configurer des règles de filtrage de paquets. Une configuration correcte d'iptables peut considérablement réduire les risques d'intrusion en contrôlant strictement le trafic entrant et sortant de votre VPS.

Règles iptables essentielles pour filtrer le trafic entrant

Pour commencer avec iptables, vous devez définir des règles qui bloquent tout le trafic par défaut et autorisent ensuite explicitement les connexions nécessaires. Voici un exemple de configuration de base :

  • Bloquer tout le trafic entrant par défaut
  • Autoriser les connexions établies et associées
  • Ouvrir les ports spécifiques pour les services requis (par exemple, 80 pour HTTP, 443 pour HTTPS)
  • Permettre le trafic SSH sur un port non standard
  • Journaliser et rejeter tout le reste

Ces règles forment une base solide pour votre pare-feu, mais n'oubliez pas de les adapter en fonction de vos besoins spécifiques. Il est crucial de tester soigneusement votre configuration pour éviter de vous bloquer accidentellement l'accès à votre propre serveur.

Configuration du fail2ban pour bloquer les tentatives d'intrusion

Fail2ban est un outil complémentaire à iptables qui surveille les journaux système pour détecter les tentatives d'intrusion répétées et bloque automatiquement les adresses IP suspectes. Il est particulièrement efficace contre les attaques par force brute sur SSH et d'autres services.

Pour configurer fail2ban, vous devez définir des jails (prisons) qui spécifient les services à surveiller, les seuils de tentatives échouées et la durée du bannissement. Par exemple, vous pouvez configurer une jail pour SSH qui bloque une adresse IP après 5 tentatives de connexion échouées pendant 10 minutes.

Utilisation de UFW (uncomplicated firewall) comme alternative simplifiée

Si vous trouvez iptables trop complexe, UFW (Uncomplicated Firewall) offre une interface plus conviviale pour gérer votre pare-feu. UFW est particulièrement populaire sur les systèmes Ubuntu et peut être configuré avec des commandes simples comme :

  • ufw default deny incoming
  • ufw allow ssh
  • ufw allow http
  • ufw enable

Ces commandes établissent une politique par défaut restrictive tout en autorisant le trafic SSH et HTTP. UFW traduit ces règles en configurations iptables sous-jacentes, offrant ainsi une abstraction pratique pour les administrateurs moins expérimentés.

Sécurisation des accès SSH

SSH (Secure Shell) est souvent la principale méthode d'accès à distance à votre VPS. C'est pourquoi il est crucial de le configurer de manière sécurisée pour prévenir les accès non autorisés. Une configuration SSH robuste peut faire la différence entre un serveur sécurisé et une vulnérabilité exploitable.

Changement du port SSH par défaut

Bien que ce ne soit pas une mesure de sécurité infaillible, changer le port SSH par défaut (22) peut réduire considérablement le nombre de tentatives d'intrusion automatisées. Pour ce faire, modifiez le fichier /etc/ssh/sshd_config et changez la ligne Port 22 par un numéro de port non standard, par exemple Port 2222 . N'oubliez pas de mettre à jour vos règles de pare-feu pour autoriser le trafic sur ce nouveau port.

Désactivation de l'authentification par mot de passe au profit des clés SSH

L'utilisation de clés SSH est nettement plus sécurisée que l'authentification par mot de passe. Pour configurer l'authentification par clé, générez une paire de clés sur votre machine locale avec ssh-keygen , puis ajoutez la clé publique au fichier ~/.ssh/authorized_keys sur votre VPS. Ensuite, désactivez l'authentification par mot de passe dans le fichier sshd_config en définissant PasswordAuthentication no .

Mise en place de l'authentification à deux facteurs (2FA) pour SSH

L'authentification à deux facteurs ajoute une couche de sécurité supplémentaire en exigeant un second élément d'authentification en plus de votre clé SSH ou mot de passe. Vous pouvez configurer 2FA pour SSH en utilisant Google Authenticator ou d'autres solutions similaires. Cette mesure rend pratiquement impossible l'accès non autorisé, même si vos informations d'identification sont compromises.

Configuration de fail2ban spécifiquement pour SSH

Configurer fail2ban pour SSH est une étape cruciale pour protéger votre serveur contre les attaques par force brute. Voici un exemple de configuration dans /etc/fail2ban/jail.local :

[sshd]enabled = trueport = 2222filter = sshdlogpath = /var/log/auth.logmaxretry = 3bantime = 3600

Cette configuration bannira une adresse IP pendant une heure après trois tentatives de connexion échouées sur le port SSH 2222. Adaptez ces paramètres en fonction de vos besoins de sécurité spécifiques.

Gestion avancée des utilisateurs et des permissions

Une gestion efficace des utilisateurs et des permissions est fondamentale pour maintenir la sécurité de votre VPS. En appliquant le principe du moindre privilège, vous pouvez limiter considérablement l'impact potentiel d'une compromission de compte.

Création d'un utilisateur non-root avec sudo

Il est fortement recommandé de créer un utilisateur non-root pour les tâches administratives quotidiennes, plutôt que d'utiliser constamment le compte root. Créez un nouvel utilisateur et ajoutez-le au groupe sudo avec les commandes suivantes :

  1. adduser newuser
  2. usermod -aG sudo newuser

Cette approche vous permet d'effectuer des tâches administratives en utilisant sudo lorsque nécessaire, tout en réduisant les risques associés à l'utilisation permanente du compte root.

Utilisation de chroot pour isoler les utilisateurs FTP

Si vous devez fournir un accès FTP à certains utilisateurs, l'utilisation de chroot peut considérablement améliorer la sécurité en isolant ces utilisateurs dans leur propre environnement. Cela les empêche d'accéder à des parties du système de fichiers en dehors de leur répertoire désigné. Configurez votre serveur FTP (comme vsftpd) pour utiliser chroot, limitant ainsi l'exposition de votre système en cas de compromission d'un compte FTP.

Implémentation de SELinux ou AppArmor pour un contrôle d'accès mandatory

SELinux (Security-Enhanced Linux) et AppArmor sont des systèmes de contrôle d'accès obligatoire qui offrent une couche de sécurité supplémentaire au-delà des permissions Unix traditionnelles. Ces outils permettent de définir des politiques de sécurité détaillées pour chaque processus, limitant ce qu'ils peuvent faire même s'ils sont compromis.

Par exemple, avec SELinux, vous pouvez définir des politiques qui restreignent les actions qu'un serveur web peut effectuer, même s'il est exécuté en tant que root. Bien que la configuration initiale puisse être complexe, ces outils offrent une protection robuste contre de nombreuses formes d'attaques.

Mise à jour et maintenance régulière du système

La maintenance régulière de votre VPS est essentielle pour maintenir un niveau de sécurité élevé. Les mises à jour de sécurité, en particulier, sont cruciales pour corriger les vulnérabilités connues qui pourraient être exploitées par des attaquants.

Automatisation des mises à jour de sécurité avec unattended-upgrades

Sur les systèmes Debian et Ubuntu, l'outil unattended-upgrades peut être configuré pour installer automatiquement les mises à jour de sécurité. Pour l'activer, installez le paquet et configurez-le en éditant le fichier /etc/apt/apt.conf.d/50unattended-upgrades . Assurez-vous de tester cette configuration sur un environnement de staging avant de l'appliquer en production, car des mises à jour automatiques peuvent parfois causer des problèmes de compatibilité.

Surveillance des journaux système avec logwatch

Logwatch est un outil puissant qui analyse vos journaux système et vous envoie des rapports quotidiens par email. Ces rapports peuvent vous alerter sur des activités suspectes ou des problèmes potentiels avant qu'ils ne deviennent critiques. Installez logwatch et configurez-le pour envoyer des rapports à votre adresse email :

sudo apt install logwatchsudo nano /etc/logwatch/conf/logwatch.conf

Assurez-vous de définir MailTo = votre@email.com dans le fichier de configuration pour recevoir les rapports.

Utilisation de lynis pour des audits de sécurité réguliers

Lynis est un outil d'audit de sécurité open-source qui peut scanner votre système pour détecter les failles de sécurité potentielles et les mauvaises configurations. Exécutez Lynis régulièrement pour obtenir des recommandations détaillées sur la façon d'améliorer la sécurité de votre VPS. Pour installer et utiliser Lynis :

  1. git clone https://github.com/CISOfy/lynis
  2. cd lynis
  3. ./lynis audit system

Analysez les résultats et prenez les mesures nécessaires pour corriger les problèmes identifiés. L'utilisation régulière de Lynis peut vous aider à maintenir un niveau de sécurité élevé au fil du temps.

Sécurisation des applications et services hébergés

Au-delà de la sécurisation du système d'exploitation, il est crucial de protéger les applications et services spécifiques que vous hébergez sur votre VPS. Chaque service expose potentiellement de nouvelles vulnérabilités, il est donc important d'adopter une approche de sécurité en profondeur.

Configuration de ModSecurity pour les serveurs web apache et nginx

ModSecurity est un pare-feu d'application web (WAF) open-source qui peut être intégré à Apache et Nginx. Il offre une protection contre diverses attaques web courantes, telles que les injections SQL, les attaques XSS et les tentatives de contournement de l'authentification. Pour l'installer sur Apache :

sudo apt install libapache2-mod-security2

Pour Nginx, le processus est un peu plus complexe et nécessite la compilation du module. Une fois installé, configurez ModSecurity avec un ensemble de règles comme OWASP Core Rule Set pour une protection optimale.

Mise en place de HTTPS avec let's encrypt et configuration HSTS

HTTPS est essentiel pour sécuriser les communications entre vos utilisateurs et votre serveur. Let's Encrypt fournit des certificats SSL/TLS gratuits et automatisés. Utilisez Certbot pour obtenir et configurer facilement ces certificats :

sudo certbot --apache ou sudo certbot --nginx

Après avoir configuré HTTPS, activez HSTS (HTTP

Strict Transport Security) pour forcer les connexions HTTPS. Ajoutez cette ligne à votre configuration de serveur web :add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

HSTS indique aux navigateurs d'utiliser uniquement HTTPS pour accéder à votre site, renforçant ainsi la sécurité contre les attaques de type man-in-the-middle.

Hardening des configurations PHP et MySQL

La sécurisation de PHP et MySQL est cruciale pour protéger vos applications web contre les vulnérabilités courantes. Pour PHP, modifiez le fichier php.ini pour désactiver les fonctionnalités dangereuses et afficher moins d'informations aux attaquants potentiels :

  • display_errors = Off
  • expose_php = Off
  • disable_functions = exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source

Pour MySQL, suivez ces bonnes pratiques :

  1. Utilisez des mots de passe forts pour tous les comptes.
  2. Limitez l'accès à la base de données aux adresses IP nécessaires.
  3. Désactivez les utilisateurs anonymes et supprimez les comptes par défaut inutilisés.
  4. Utilisez des requêtes préparées pour prévenir les injections SQL.

En appliquant ces mesures de sécurisation pour vos applications et services hébergés, vous réduisez considérablement les risques d'exploitation de vulnérabilités courantes. N'oubliez pas que la sécurité est un processus continu qui nécessite une vigilance constante et des mises à jour régulières de vos connaissances et de vos systèmes.

Plan du site