Sécurité
Protéger votre serveur est une étape essentielle pour garantir la sécurité et la stabilité de votre infrastructure.
Dernière mise à jour
Protéger votre serveur est une étape essentielle pour garantir la sécurité et la stabilité de votre infrastructure.
Dernière mise à jour
Ce guide a été créé dans le but unique de protéger notre serveur contre les abus d'exploits qui pourraient endommager le serveur ou le réseau. Avec ce guide, vous pouvez bloquer la plupart des exploits et des bugs que les Griefers (alias Skiddies) utilisent pour casser nos cubes.
Si vous recherchez sur Google "Grief minecraft server", cela vous donnera suffisamment de raisons de protéger votre serveur. En résumé, vous courez le risque que votre compte soit compromis ou que des clients piratés attaquent votre serveur/réseau Minecraft vulnérable.
Vous n'avez pas besoin de beaucoup de connaissances, essayez d'en savoir au moins : comment les plugins sont installés, comment ils sont configurés, comment les ports fonctionnent, comment les serveurs et les paquets fonctionnent. Pour améliorer la sécurité, je vous recommande de ne pas utiliser de pages d'hébergement, mais d'utiliser un VPS ou un serveur dédié (meilleure option).
Il est impossible de bloquer toutes les exploitations, la plupart des griefs sont dus à la stupidité des propriétaires, des administrateurs ou de ceux qui ont fait une configuration incorrecte du serveur, comme l'utilisation de plugins contournant les protections ou leur configuration incorrecte. Je ne vous promets pas non plus que votre réseau/serveur sera complètement inviolable, et je ne serai pas responsable des dommages que vous pourriez causer à votre serveur en suivant ce guide (si vous suivez tout à la lettre, rien de mal ne se produira).
Si vous n’avez pas choisi d’utiliser un VPS/Dédié, vous pouvez passez cette partie du guide.
Avant de commencer à suivre les étapes, connectez-vous en ssh sur votre serveur Linux à l’aide d’un client SSH. Si vous n’en avez pas encore installé un, nous vous recommandons MobaXTerm qui est simple et facile d’utilisation.
Pour mettre à jour son système d’exploitation, il n’y a rien de plus simple. Il vous suffit de rentrer deux commandes dans le terminal et le tour est joué. La première permet de mettre à jour les différents répertoires distants qui vont nous permettre de télécharger ces mises à jour
Ensuite, nous allons télécharger ces mises à jour et les installer grâce à la commande suivante :
Des que ceci, « nomutilisateur@hostname » réapparait c’est que la mise à jour est terminée et que vous pouvez passer à la deuxième étape.
L’une des premières actions à effectuer sur votre serveur est la configuration du port d’écoute du service SSH. Par défaut, celui-ci est défini sur le port 22 donc les tentatives de hack du serveur par des robots vont cibler ce port en priorité. La modification de ce paramètre, au profit d’un port différent, est une mesure simple pour renforcer la protection de votre serveur contre les attaques automatisées.
Pour cela, modifiez le fichier de configuration du service avec l’éditeur de texte de votre choix (nano est utilisé dans cet exemple) :
Vous devriez trouver les lignes suivantes ou équivalentes :
Remplacer 22 par le port de votre choix puis il ne restera plus qu’à redémarrer le service avec la commande suivante
Après avoir effectué cette commande, vous serez déconnecté de votre vps et si tout s’est bien passé il vous suffira juste de changer le port dans Termius et de vous reconnectez
La premiere commande à effectuer vous permet de basculer sur l’utilisateur root
Ensuite, il ne vous reste plus qu’à entrer la commande
Pour modifier le mot de passe associé à l’utilisateur avec lequel vous êtes connecté. Suivez ce qui est demandé et si l’opération s’est déroulée sans probleme, vous devriez voir apparaitre ce message : Passwd : password updated succesfully
Remarque : ne vous inquiétez pas si le mot de passe que vous écrivez n’apparait pas à l’écran. C’est une fonctionnalité de Linux. Tout ce que vous écrivez est bien enregistré alors faites attention à ce que vous écrivez.
Pour ajouter un utilisateur sur un système Linux, il n’y a rien de plus simple que d’effectuer la commande
Le terminal vous demandera ensuite de compléter certaines informations comme le mot de passe.
Une fois créé, vous pouvez directement vous connectez avec cet utilisateur en ssh.
L’utilisateur root est créé par défaut sur les systèmes Linux. C’est le niveau d’accès le plus élevé sur une machine et on veut que cet acces reste discret.
Nous allons donc désactiver l’acces à la machine depuis l’utilisateur root comme ca les personnes souhaitant se connecter doivent utiliser un autre utilisateur pour ensuite se connecter en root via la commande :
Pour commencer, vous devez retourner dans le dossier sshd_config grâce à la commande :
Dedans, vous devez repèrer la section intitulée Authentification. Et à la ligne PermitRootLogin, vous changez le yes en no.
Comme pour la modification du port, il faut maintenant redémarrer le service pour que le changement fasse effet.
Et voila, maintenant toute connexion à votre serveur via l’utilisateur root sera refusée.
En fonction du système d’exploitation que vous avez, un pare feu est installé de base. Celui-ci est déjà très bien pour commencer. Mais si vous voulez encore plus restreindre les acces via les différents ports de votre serveur, je vous invite à lire ce guide fait pas ovh : https://docs.ovh.com/fr/dedicated/firewall-iptables/
Avant d’installer Fail2ban, laissez moi vous expliquez ce que c’est. C’est un framework de prévention contre les intrusions dont le but est de bloquer les adresses IP depuis lesquelles des bots ou des attaquants tentent de pénétrer dans votre système.
Pour l’installer, il vous faut d’abord le télécharger via la commande
Comme le recommande Fail2ban, créez un fichier de configuration local de vos services en copiant le fichier “jail” :
Ouvrez ensuite le fichier avec un éditeur de texte :
Prenez soin de lire les informations en haut du fichier, notamment les commentaires sous [DEFAULT].
Les paramètres [DEFAULT] sont globaux et s’appliqueront donc à tous les services définis pour être activés (enabled) dans ce fichier.
Il est important de savoir que les paramètres globaux ne seront pris en compte que s’il n’y a pas de valeurs différentes définies dans les sections services (JAILS) plus bas dans le fichier.
Prenons pour exemple ces lignes sous :
Cela signifie qu’une adresse IP à partir de laquelle un hôte tente de se connecter sera bloquée pendant dix minutes après la cinquième tentative d’ouverture de session infructueuse. De plus, tous les paramètres spécifiés par [DEFAULT] et dans les sections suivantes restent désactivés sauf si la ligne enabled = true est ajoutée pour un service (listée ci-dessous # JAILS).
À titre d’exemple d’utilisation, le fait d’avoir les lignes suivantes dans la section [sshd] activera des restrictions uniquement pour le service OpenSSH :
Dans cet exemple, si une tentative de connexion SSH échoue trois fois en cinq minutes, la période d’interdiction des IP sera de 30 minutes.
Vous pouvez remplacer “ssh” par le numéro de port réel si vous l’avez modifié.
La meilleure approche consiste à activer Fail2ban uniquement pour les services qui sont réellement exécutés sur le serveur. Chaque paramètre personnalisé ajouté sous # JAILS sera alors prioritaire sur les valeurs par défaut.
Une fois vos modifications terminées, enregistrez le fichier et fermez l’éditeur.
Redémarrez le service pour vous assurer qu’il s’exécute avec les personnalisations appliquées :
Fail2ban dispose de nombreux paramètres et filtres de personnalisation ainsi que d’options prédéfinies, par exemple lorsque vous souhaitez ajouter une couche de protection à un serveur web Nginx.
Pour toute information complémentaire et pour des recommandations concernant Fail2ban, n’hésitez pas à consulter la documentation officielle de cet outil.
Si vous n'utilisez pas Bungeecord (ce que vous devriez faire), vous pouvez passer cette partie, même si je ne le recommande pas du tout.
Le serveur Bungeecord est livré avec une configuration par défaut qui aide les utilisateurs à comprendre son fonctionnement, mais il est dangereux de laisser certains paramètres tels quels.
N'utilisez jamais de plugins d'authentification dans Bungeecord, cela peut sembler sûr, mais cela peut être exploité de nombreuses manières. Il est préférable d'avoir un serveur d'authentification dédié. Si vous utilisez plusieurs lobbies, utilisez une connexion MySQL. Nous vous recommandons d'utiliser JPremium.
Il est conseillé d'avoir le moins de plugins possible dans l'instance de Bungeecord. Évitez de placer ce type de plugins :
Système de signalement global.
Système de modération global.
Système de messagerie globale ou chat du personnel.
Plugins de permissions pour Bungeecord.
N'importe quel plugin d'authentification.
Plugin Multiversion.
Tout système anti-VPN/proxy.
Pour protéger votre serveur contre les attaques d'exploitations et de paquets non valides, il est conseillé d'utiliser Flamecord (Flamecord est un logiciel proxy, une fourche de Travertine, qui atténue les attaques d'exploits) téléchargez-le ici.
Nous pouvons sécuriser nos serveurs Spigot à partir de l'instance Bungeecord avec quelques plugins utiles. ExploitFixer est le plus recommandé.
Il est conseillé de bloquer les bots dans l'instance Bungeecord. Pour cela, nous utiliserons le plugin suivant : Antibot.
Rappelez-vous que les attaques de bots consomment des ressources sur votre serveur, ce qui peut le faire planter.
Voici une façon de bloquer les commandes globales sur votre serveur, ce qui peut être très utile pour désactiver les commandes qui pourraient compromettre la sécurité du serveur. Pour cela, nous utiliserons un plugin appelé BungeeCommandBlock.
Pour empêcher les utilisateurs de voir les plugins du serveur en utilisant la méthode TabComplete, nous pouvons utiliser le plugin appelé : CanelaAntiPluginSteal.
En réalité, il n'est pas nécessaire de suivre toutes ces étapes, sauf Bloquer les bots, Bloquer les exploits et Bloquer les paquets non valides. Tant que tout est en ordre, il ne devrait pas y avoir d'exploits dans Bungeecord.
Tout comme dans Bungeecord, nous devons protéger notre serveur Spigot contre les attaques d'exploitation. Pour cela, nous utiliserons ce plugin Exploitfixer. Il fonctionne à la fois pour Spigot et Bungeecord, il est donc conseillé de l'utiliser dans les deux cas, car certains exploits pour Spigot ne peuvent pas être détectés par Bungeecord.
Il est fortement recommandé de bloquer les OP et de ne les donner à personne, même à nous-mêmes. Vous pouvez configurer les opérateurs pour qu'ils n'aient aucun type d'autorisations en changeant ce paramètre dans la configuration du serveur Spigot :
Valeur par défaut : 4 Valeur recommandée : 0
Si vous souhaitez ajouter une couche de protection supplémentaire, vous pouvez protéger les comptes de tout le personnel en utilisant AccountGuard. Ce plugin vous permet de restreindre l'adresse IP à partir de laquelle un compte peut être accessible. De cette manière, vous pouvez protéger votre compte ou ceux du personnel pour qu'ils ne puissent être accessibles que depuis leur adresse IP respective.
Si votre serveur prend en charge les joueurs non-premium, vous devez avoir un plugin d'authentification, sinon votre serveur sera compromis par des clients piratés. Vous pouvez utiliser l'un des plugins suivants : Login Security
Il existe plusieurs exploits lors de l'utilisation de WorldEdit qui peuvent faire planter le serveur en plus du fait que ce plugin utilise beaucoup de ressources et que ses tâches sont synchronisées (c'est-à-dire que les utilisateurs souffriront de décalage et que le serveur sera figé pendant que ce plugin fonctionne). Pour corriger cela, nous utiliserons FastAsyncWorldEdit.
Il existe plusieurs clients piratés capables de générer des objets malveillants et corrompus ou avec des balises NBT personnalisées qui peuvent aller du crash du serveur à des enchantements énormes. Pour cela, nous utiliserons ExploitFixer et/ou ItemFixer.
Par défaut, le code de Minecraft a quelques bugs qui permettent de dupliquer des objets dans les coffres en profitant de certaines failles. Pour résoudre cela, vous pouvez utiliser l'un des plugins suivants : ExploitFixer (recommandé). Dupe Fixes (Plugins dédiés uniquement aux exploits de duplication). Confiscate (Option premium avec des fonctions utiles !).
Normalement, dans Minecraft, lorsque vous entrez dans un serveur et que votre compte est déjà connecté, vous êtes déconnecté, laissant ainsi place à la connexion la plus récente. Authme et Bungeecord résolvent cela, mais si votre serveur est un réseau et que vous choisissez d'utiliser ipwhitelist car vous ne pouvez pas installer un logiciel pare-feu, alors votre serveur est vulnérable à une exploitation qui correspond à chaque joueur en ligne, créant une connexion qui expulse le joueur sélectionné (expulsion de tous les joueurs).
Pour résoudre cela, nous utiliserons le plugin appelé AntiUserSteal.
Les clients piratés peuvent facilement changer leur UUID, ce qui représente un grand risque pour les serveurs sans protection adéquate. Heureusement, il existe plusieurs plugins qui résolvent ce problème, par exemple ExploitFixer et AntiUUIDSpoof (recommandé pour le mode mixte).
Les paquets de charges utiles personnalisées sont des paquets qui sont envoyés au serveur avec un paramètre spécifique, ces paquets sont principalement utilisés pour la communication entre le client et le serveur dans certains mods ou pour la communication entre Spigot/Bungeecord. Envoyer de tels paquets à grande échelle ou des paquets que le serveur ne peut pas traiter peut entraîner le plantage du serveur s'il n'est pas correctement protégé.
Pour résoudre cela, nous pouvons utiliser ExploitFixer ou CustomPayloadFixer.
Comme mentionné précédemment, il est conseillé de cacher les plugins sur votre serveur Spigot. Pour cela, nous pouvons utiliser le plugin CanelaAntiPluginSteal.
Un moyen d'éviter les serveurs compromis est d'ajouter une vérification supplémentaire pour le personnel qui se connecte au serveur. Vous pouvez utiliser AccountGuard pour protéger les comptes du personnel en utilisant l'adresse IP pour restreindre l'accès au compte.
Pour renforcer la sécurité, vous pouvez utiliser IPWhitelist pour restreindre l'accès au serveur aux adresses IP approuvées uniquement.
Les livres malveillants sont des livres qui contiennent des informations qui peuvent provoquer des plantages sur le serveur. Pour résoudre ce problème, nous utiliserons BookFix.
Les potions corrompues sont des potions qui, lorsqu'elles sont jetées, peuvent causer des dégâts considérables au serveur et même le faire planter. Pour résoudre ce problème, nous utiliserons ExploitFixer.
Les crânes corrompus sont des crânes qui peuvent provoquer un crash sur le serveur lorsqu'ils sont placés ou utilisés. Pour résoudre ce problème, nous utiliserons ExploitFixer.
En général, la meilleure protection pour votre serveur Spigot réside dans l'utilisation de ExploitFixer, qui est un plugin très complet pour protéger votre serveur contre de nombreux exploits et vulnérabilités.
La chose la plus recommandée est d'utiliser un pare-feu pour bloquer les ports des serveurs Spigot à partir des adresses IP qui ne proviennent pas du réseau local (127.0.0.1). Cependant, faire en sorte que Spigot n'écoute que l'adresse IP locale (127.0.0.1) est une bonne pratique que vous ne devriez JAMAIS oublier.
Pour ce faire, vous pouvez configurer le fichier server.properties
de chaque serveur Spigot pour qu'il n'écoute que sur l'adresse IP locale :
Ensuite, dans le fichier config.yml
de votre instance Bungeecord, vous pouvez spécifier les adresses IP locales pour chaque serveur Spigot dans la liste "servers" :
Si le hook de Bungeecord ou l'option "ip forward" est désactivée, les serveurs Spigot ne pourront pas reconnaître l'adresse IP des utilisateurs correctement. Pour remédier à cela, nous allons activer l'option "ip_forward" dans le fichier config.yml
de Bungeecord à true, et l'option "bungeecord" dans le fichier spigot.yml
de chaque serveur Spigot à true également :
Un pare-feu est un logiciel qui nous permet de restreindre les connexions entrantes et sortantes vers le serveur. Il est extrêmement recommandé d'utiliser IPTables ou UFW.
En utilisant un pare-feu, vous pouvez spécifier quels ports et adresses IP sont autorisés à se connecter à votre serveur Spigot, ce qui renforce encore davantage la sécurité de votre serveur.
Ces mesures supplémentaires de sécurité devraient aider à renforcer la protection de votre serveur Spigot contre les attaques potentielles et les exploitations. Gardez à l'esprit que la sécurité est un processus continu, et il est important de rester à jour avec les mises à jour de sécurité et de surveiller activement les activités sur votre serveur.