Le VPS (Virtual Private Server) connaît un élan de popularité auprès du grand publique suite à l’adoption majeur de l’IA par un grand nombre de personne. En effet, le développement de solutions et application devient beaucoup plus accessible que précédemment. Les VPS sont alors utilisés pour publier les applications et les rendre accessible.
Cependant, bien que nous pouvons pointer du doigts des failles dans certaines applications développées avec des intelligences artificielles, on oublie souvent que le serveur qui l’héberge doit être configuré de manière à sécuriser l’infrastructure. Cela devient plus compliqué dans la mesure ou un VPS est accessible par défaut à tout le réseau internet par défaut.
Changez le mot de passe administrateur
Lorsque vous commander un nouveau VPS, un mais est en principe envoyé une fois le déploiement terminé pour non seulement le notifier, mais également transmettre un mot de passe généré aléatoirement. Si tel est le cas, il est important de changer le mot de passe à la première connexion.
La raison est que si vous laissez le mot de passe fournit, et que votre boîte mail est victime d’une fuite de données, les attaquants auront le mot de passe de votre compte administrateur. De manière générale, lorsqu’un mot de passe est transmis par email ou tout autre support, il faut partir du principe qu’il est automatiquement compromis.
De plus, il est conseillé de changer souvent de mot de passe (1 à 4 fois par année, à vous de définir la criticité des comptes), et d’éviter d’utiliser le même mot de passe pour tous ses comptes. Un gestionnaire de mot de passe tel que KeePass est conseillé pour permettre de garder un inventaire complet, et d’utiliser des mots de passe complexes sans devoir tous les mémoriser.
Limitez les IP autorisées
Par défaut, n’importe qui sur internet peut se connecter à votre nouveau VPS. Si vous avez des IP fixes (attribuées par votre fournisseur d’accès internet, et qui ne changeront pas), vous pouvez mettre en place un filtrage basées sur vos IP. Cela a pour but de restreindre les accès pour certains services, tel que le SSH ou le RDP.
Pour faire cela, vous pouvez le faire via le pare-feu du serveur directement en créant des règles qui seront chargées au démarrage du serveur. De plus, si votre application doit être accessible uniquement par certaines IP, vous pouvez appliquer également un filtre sur les ports réseau utilisés.
Dans le cas où vous n’avez pas d’adresse IP fixe, vous pouvez restreindre l’accès aux IP de votre pays. Pour ce faire, il sera nécessaire d’utiliser un service de GeoIP qui s’intègre avec le pare-feu du serveur. A l’heure actuelle, je n’ai pas testé de service pour le faire car mes serveurs sont toujours protégées par un pare-feu en frontal qui intègre la GeoIP. Cependant, une recherche sur votre moteur de recherche préféré devrait pouvoir faire votre bonheur.
Privilégiez la connexion par clé
La connexion par mot de passe en SSH est pratique pour se connecter depuis n’importe quelle machine, pour autant que le mot de passe et le login soit connu. Cependant un mot de passe peut-être brute force si le login est connu.
Une façon sécurisée de se connecter est en utilisant une authentification par clé publique. Le principe est que la clé publique est stockée sur le serveur et permettent de valider que la connexion est légitime. Cela demande de créer une clé privée par poste de travail utilisé, et de préparer la connexion avant de se connecter.
Définissez un utilisateur d’administration
Lorsque vous souhaitez configurer et effectuer les opérations de maintenance, il est vivement conseillé de créer un utilisateur dédié. Cela signifie que le compte root ou administrateur ne doit pas être utilisé pour effectuer ces tâches.
Vous pouvez utiliser le même compte sur tous les serveurs, mais pensez à choisir un mot de passe différents pour chaque compte (dans le cas où vous vous connectez avec un mot de passe).
Segmentez les droits
Ce paragraphe est en quelque sorte en lien avec le précédent. Assurez-vous que votre compte d’administration n’ait pas accès aux données de l’application ou l’application elle-même. Cela permettra de limiter le risque de fuite de données, et de s’assurer que les droits sont correctement paramétrés.
Ainsi, l’utilisateur exécutant le service de l’application n’a (en principe) pas besoin d’avoir les droits administrateurs pour faire fonctionner l’application. Il ne doit avoir accès qu’aux dossiers et/ou services nécessaires pour son bon fonctionnement.
Cette bonne pratique permet de se protéger si l’application a une faille, et que les attaquants tentent de prendre le contrôle du serveur via l’application, ou simplement le détruire en supprimant des dossiers et fichiers systèmes et applicatifs.
Surveillez et sauvegardez le serveur
Une application indisponible, ou un message d’erreur suite à une manipulation ou une panne rend une mauvaise image du service fourni. C’est pourquoi il est conseillé de monitorer et de sauvegarder régulièrement le service.
Il existe plusieurs service de surveillance vous permettant de vous avertir en cas de panne. Si vous avez la possibilité d’en installer un, vous pouvez vous tourner vers PRTG, car il est simple d’utilisation et intuitif. De plus, il est gratuit en dessous de 100 points de surveillance.
Dans le cas où vous aimez configurer des paramètres spécifiques, ou encore voulez aller en profondeur dans le comportement des alertes qui remontes, je peux vous conseiller Zabbix qui est opensource est gratuit.
Concernant les sauvegardes, il est conseiller d’également d’en avoir et surtout vérifier qu’elles sont restaurable. Il est toujours possible que le stockage du serveur se corrompe, et que vous perdiez toutes les données et le service complet. Pour éviter de repartir de zéro, des sauvegardes sont vivement conseillée.
Vous pouvez soit sauvegarder au niveau applicatif avec des scripts (dépendant de l’architecture de votre application), ou alors le serveur complet. A vous de définir la stratégie la plus viable.
Vérifiez les packages utilisés
Dans les applications, il y a souvent des librairies tierces qui sont utilisées. Je suis conscients que cela peut être compliqué à vérifier, mais je vous conseille de vérifier si les librairies utilisées sont non seulement fiables, mais viennent également d’un repos connu et officiel.
Une librairie corrompue pourrait amener à une backdoor que des attaquants peuvent exploiter. Ils peuvent se connecter sans connaître le login et mot de passe d’administration. Pire, ils peuvent prendre le contrôle du serveur, et s’en servir dans des attaques massives de DDOS, ou encore héberger du contenu non désiré.
Tout comme l’installation d’application sur votre poste de travail, faîtes attention aux dépendances utilisées, et assurez-vous qu’elles sont fiables.
Maintenir le serveur à jour
Enfin, le dernier point que je vous conseille de faire attention est de maintenir votre serveur et application à jour. Des failles et bugs sont découvertes dans les services, et les mises à jour permettent de corriger ces problèmes avant que cela n’empire.
Les mises à jour du serveur lui-même peut se faire en quelques commandes ou quelques clics, mais il ne faut pas les négliger. Pour les mises à jour de l’application, pensez à tester dans un environnement de développement/validation (en local sur votre ordinateur par exemple) avant de pousser en production les mises à jour.
Une librairie en conflit avec une autre, ou encore une fonction disparue suite à une mise à jour peut provoquer une interruption de service, et un manque à gagner et perte de réputation importante.
Conclusion
Nous avons traiter quelques points qui sont génériques, mais il y a encore d’autres façons de faire, dépendant de votre architecture et connaissances. N’oubliez jamais qu’un serveur/service exposé sur internet sans protection va se faire attaquer/détourné. Cela n’est qu’une question de temps en 2026.
