Sécurité

Protéger votre serveur est une étape essentielle pour garantir la sécurité et la stabilité de votre infrastructure.

À quoi sert ce guide ?

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.

Pourquoi ai-je besoin de sécuriser mon serveur ?

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.

De quoi ai-je besoin ?

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).

Avertissement

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.

Mettre à jour le système d’exploitation

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

sudo apt update

Ensuite, nous allons télécharger ces mises à jour et les installer grâce à la commande suivante :

sudo apt upgrade

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.

Modifier le port ssh de votre serveur

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) :

sudo nano /ect/ssh/sshd_config

Vous devriez trouver les lignes suivantes ou équivalentes :

# What ports, IPs and protocols we listen for
Port 22

Remplacer 22 par le port de votre choix puis il ne restera plus qu’à redémarrer le service avec la commande suivante

sudo systemctl restart sshd

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

Modifier le mot de passe associé à l’utilisateur « root »

La premiere commande à effectuer vous permet de basculer sur l’utilisateur root

su root

Ensuite, il ne vous reste plus qu’à entrer la commande

passwd

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.

Créer un utilisateur avec des droits restreints

Pour ajouter un utilisateur sur un système Linux, il n’y a rien de plus simple que d’effectuer la commande

sudo adduser <nomutilisateur>

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.

Désactiver l’accès au serveur à partir de l’utilisateur root

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 :

su root

Pour commencer, vous devez retourner dans le dossier sshd_config grâce à la commande :

sudo nano /ect/ssh/sshd_config

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.

sudo systemctl restart sshd

Et voila, maintenant toute connexion à votre serveur via l’utilisateur root sera refusée.

Configurer le pare-feu interne

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/

Installer Fail2ban

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

sudo apt install fail2ban

Comme le recommande Fail2ban, créez un fichier de configuration local de vos services en copiant le fichier “jail” :

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Ouvrez ensuite le fichier avec un éditeur de texte :

sudo nano /etc/fail2ban/jail.local

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 :

[DEFAULT]
bantime = 10m
maxretry = 5
enabled = false

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 :

[sshd]
enabled = true
port = ssh
filter = sshd
maxretry = 3
findtime = 5m
bantime = 30m

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 :

sudo service fail2ban restart

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.

Configuration par défaut

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.

# Laisser cela est assez dangereux.
groups:
  md_5:
  - admin

# changez-les comme suit.
groups:
  md_5: []

# assurez-vous que les valeurs suivantes sont comme suit.
ip_forward: true
prevent_proxy_connections: true

# Utilisez ceci uniquement si votre serveur prend en charge les utilisateurs non-premium ou si vous voulez que les utilisateurs entrent de force dans le lobby.
listeners:
  force_default_server: true

Plugin d'authentification

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.

Quels plugins ne pas utiliser

Il est conseillé d'avoir le moins de plugins possible dans l'instance de Bungeecord. Évitez de placer ce type de plugins :

  1. Système de signalement global.

  2. Système de modération global.

  3. Système de messagerie globale ou chat du personnel.

  4. Plugins de permissions pour Bungeecord.

  5. N'importe quel plugin d'authentification.

  6. Plugin Multiversion.

  7. Tout système anti-VPN/proxy.

Bloquer les paquets non valides

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.

Bloquer les exploits

Nous pouvons sécuriser nos serveurs Spigot à partir de l'instance Bungeecord avec quelques plugins utiles. ExploitFixer est le plus recommandé.

Bloquer les bots

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.

Bloquer les commandes

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.

Cacher les plugins

Pour empêcher les utilisateurs de voir les plugins du serveur en utilisant la méthode TabComplete, nous pouvons utiliser le plugin appelé : CanelaAntiPluginSteal.

Résumé

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.

Bloquer les exploits

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.

Bloquer les OP

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 :

op-permission-level=0

Valeur par défaut : 4 Valeur recommandée : 0

Protection basée sur l'IP

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.

Authentification des comptes craqués

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

WorldEdit

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.

Pour les serveurs créatifs

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.

Bloquer la duplication d'objets

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 !).

Exploitation de KickAll

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.

Contournement de l'UUID

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).

Exploitation des charges utiles personnalisées

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.

Cacher les plugins

Comme mentionné précédemment, il est conseillé de cacher les plugins sur votre serveur Spigot. Pour cela, nous pouvons utiliser le plugin CanelaAntiPluginSteal.

Vérification supplémentaire pour les staff

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.

Liste blanche d'adresses IP

Pour renforcer la sécurité, vous pouvez utiliser IPWhitelist pour restreindre l'accès au serveur aux adresses IP approuvées uniquement.

Exploits des livres

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.

Exploits des potions corrompues

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.

Skull Exploits

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.

Résumé

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.

Masquer le port de Spigot

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 :

# Sur les serveurs Spigot (dans server.properties)
server-ip=127.0.0.1

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" :

# Sur l'instance Bungeecord (dans config.yml)
# Pour chaque serveur dans la liste "servers" :
servers:
  server-1:
    address: 127.0.0.1:xxxxx
    restricted: false
  server-2:
    address: 127.0.0.1:xxxxx
    restricted: false
  server-3:
    address: 127.0.0.1:xxxxx
    restricted: false

IP Forward

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 :

# Dans le fichier config.yml de Bungeecord
ip_forward: true
# Dans le fichier spigot.yml de chaque serveur Spigot
settings:
  bungeecord: true

Pare-feu

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.

Dernière mise à jour