Souhaitez-vous faire fonctionner un serveur Minecraft depuis votre domicile sans pour autant exposer votre adresse IP ? C’est tout à fait possible ! En configurant un simple proxy gratuit via Amazon Web Services, vous pouvez protéger efficacement votre serveur contre les attaques par déni de service. Nous allons vous guider à travers les étapes nécessaires.
Cette méthode est applicable à n’importe quel serveur de jeu, pas uniquement Minecraft. Le proxy redirige le trafic sur un port spécifique. Il vous suffit d’adapter le port 25565, utilisé par défaut pour Minecraft, au port de votre serveur de jeu.
Fonctionnement du proxy
Imaginez que vous désirez héberger un serveur Minecraft et le rendre accessible à tous sur internet. Cette opération est relativement simple. Les serveurs sont faciles à installer, ils fonctionnent avec un seul thread de processeur, et même les serveurs avec de nombreux mods ne nécessitent que 2 à 3 Go de RAM avec quelques joueurs connectés. Vous pouvez tout à fait héberger un serveur sur un vieil ordinateur portable, ou le faire tourner en tâche de fond sur votre PC de bureau, plutôt que de payer un hébergeur.
Cependant, pour permettre aux autres joueurs de se connecter, vous devez partager votre adresse IP, ce qui pose plusieurs problèmes. C’est un risque majeur pour votre sécurité, particulièrement si votre routeur utilise encore le mot de passe d’administrateur par défaut. Vous vous exposez également à des attaques par déni de service distribué (DDoS), qui pourraient non seulement arrêter votre serveur Minecraft, mais aussi couper votre accès à internet jusqu’à ce que l’attaque cesse.
Heureusement, il existe une solution. Au lieu d’autoriser les joueurs à se connecter directement à votre routeur, vous pouvez louer une petite machine virtuelle Linux auprès d’Amazon Web Services, Google Cloud Platform ou Microsoft Azure, qui proposent tous des offres gratuites. Ce serveur n’a pas besoin d’être très puissant, son rôle est de faire transiter la connexion. Ainsi, vous fournissez l’adresse IP du serveur proxy, et non la vôtre.
Quand un joueur veut se connecter à votre serveur, il entre l’adresse IP de votre proxy AWS dans son client Minecraft. Un paquet est transmis au proxy sur le port 25565 (le port par défaut de Minecraft). Le proxy est configuré pour identifier le trafic sur le port 25565 et le rediriger vers votre routeur. Tout ceci se déroule en arrière-plan, le joueur ne s’en aperçoit même pas.
Votre routeur doit ensuite être configuré pour rediriger ce trafic vers votre PC, qui héberge le serveur. Votre PC répond au paquet du joueur, l’envoie au proxy, et le proxy réécrit le paquet pour simuler qu’il est l’expéditeur de la réponse. Le joueur n’a aucune idée de tout ce qui se passe, il pense simplement que le proxy est le serveur.
C’est comme ajouter un routeur supplémentaire devant votre serveur, de la même façon que votre routeur domestique protège votre ordinateur. Cependant, ce nouveau routeur est hébergé par Amazon Web Services et bénéficie d’une protection DDoS complète de la couche de transport, incluse gratuitement avec tous les services AWS ( AWS Shield). Si une attaque est détectée, elle est automatiquement atténuée sans perturber votre serveur. Et si cela ne suffit pas, vous pouvez désactiver l’instance et couper la connexion avec votre domicile.
Pour gérer le proxy, nous utilisons un utilitaire appelé sslh, conçu pour le multiplexage de protocole. Il permet de résoudre les conflits quand vous voulez faire fonctionner SSH (port 22) et HTTPS (port 443) sur le même port. sslh se place en amont et redirige les ports vers les applications adéquates. Il fonctionne au niveau de la couche de transport, comme un routeur. Cela nous permet d’identifier le trafic Minecraft et de le rediriger vers votre serveur à domicile. Par défaut, sslh n’est pas transparent, ce qui signifie qu’il réécrit les paquets pour cacher votre adresse IP domestique. Il devient donc impossible de l’intercepter avec un outil comme Wireshark.
Création et connexion à un nouveau VPS
Pour débuter, il vous faut configurer le serveur proxy. Une connaissance de Linux facilite grandement la tâche, mais ce n’est pas indispensable.
Rendez-vous sur Amazon Web Services et créez un compte. Vous devez fournir vos coordonnées bancaires, mais cela sert uniquement à éviter la création de comptes multiples. Vous n’êtes pas débité pour l’instance que vous allez créer. L’offre gratuite a une durée limitée d’un an, pensez donc à la désactiver une fois que vous n’en avez plus besoin. Google Cloud Platform propose une instance f1-micro gratuite en permanence, si vous préférez cette option. Google offre également un crédit de 300 USD pendant un an, que vous pouvez utiliser pour un serveur cloud plus puissant.
AWS facture un peu la bande passante. Vous avez droit à 1 Go gratuit, puis vous êtes facturé 0,09 $ par Go supplémentaire. En principe, vous ne devriez pas dépasser cette limite, mais vérifiez régulièrement votre facture.
Une fois votre compte créé, cherchez « EC2 ». Il s’agit de la plateforme de serveurs virtuels d’AWS. Il est possible qu’il faille patienter un peu avant qu’AWS n’active EC2 pour votre nouveau compte.
Dans l’onglet « Instances », sélectionnez « Lancer une instance » pour démarrer l’assistant de lancement.
Choisissez « Amazon Linux 2 AMI » ou « Ubuntu Server 18.04 LTS » par défaut comme système d’exploitation. Cliquez sur « Suivant » et sélectionnez le type d’instance. Optez pour t2.micro, qui fait partie de l’offre gratuite. Vous pouvez faire fonctionner cette instance 24h/24 et 7j/7 sans frais grâce à l’offre gratuite d’AWS.
Sélectionnez « Vérifier et lancer ». Sur la page suivante, cliquez sur « Lancer » et une fenêtre s’ouvre. Choisissez « Créer une nouvelle paire de clés », puis « Télécharger la paire de clés ». Cette clé vous permet d’accéder à l’instance, gardez-la précieusement dans votre dossier « Documents ». Une fois le téléchargement terminé, cliquez sur « Lancer les instances ».
Vous êtes redirigé vers la page des instances. Repérez l’adresse IP publique IPv4 de votre instance, c’est l’adresse de votre serveur. Si vous le souhaitez, vous pouvez configurer une adresse IP AWS Elastic (qui ne changera pas lors des redémarrages) ou un nom de domaine gratuit avec dot.tk, afin de ne pas avoir à chercher l’adresse à chaque fois.
Mémorisez cette adresse pour plus tard. Avant toute chose, il faut modifier le pare-feu de l’instance pour ouvrir le port 25565. Dans l’onglet « Groupes de sécurité », sélectionnez le groupe utilisé par votre instance (probablement launch-wizard-1), puis cliquez sur « Modifier ».
Ajoutez une nouvelle règle TCP personnalisée et fixez la plage de ports à 25565. La source doit être définie sur « N’importe où » ou 0.0.0.0/0.
Enregistrez les modifications pour mettre à jour le pare-feu.
Nous allons maintenant nous connecter en SSH au serveur pour configurer le proxy. Si vous utilisez macOS ou Linux, ouvrez votre terminal. Sous Windows, vous avez besoin d’un client SSH, comme PuTTY ou du sous-système Windows pour Linux (option recommandée pour plus de cohérence).
Commencez par vous déplacer dans votre dossier « Documents », où se trouve le fichier de clés:
cd ~/Documents/
Si vous utilisez le sous-système Windows pour Linux, votre lecteur C se trouve dans /mnt/c/. Accédez à votre dossier « Documents » comme ceci:
cd /mnt/c/Users/username/Documents/
Utilisez l’option -i pour indiquer à SSH que vous souhaitez utiliser le fichier de clés pour vous connecter. Le fichier a l’extension .pem, n’oubliez pas de l’inclure:
ssh -i keyfile.pem ec2-user@0.0.0.0
Remplacez « 0.0.0.0 » par votre adresse IP. Si vous avez créé un serveur Ubuntu plutôt qu’AWS Linux, connectez-vous en tant qu’utilisateur « ubuntu ».
Vous devriez être connecté et voir votre invite de commande changer pour celle du serveur.
Configuration de SSLH
Installez sslh via le gestionnaire de paquets. Sous AWS Linux, il s’agit de yum, et sous Ubuntu, apt-get. Il faudra peut-être ajouter le dépôt EPEL sur AWS Linux:
sudo yum install epel-release
sudo yum install sslh
Une fois l’installation terminée, ouvrez le fichier de configuration avec nano:
nano /etc/default/sslh
Modifiez le paramètre RUN= en « yes »:
Sous la dernière ligne DAEMON, entrez la ligne suivante:
DAEMON_OPTS="--user sslh --listen 0.0.0.0:25565 --anyprot votre_adresse_ip:25565 --pidfile /var/run/sslh/sslh.pid"
Remplacez « votre_adresse_ip » par votre adresse IP personnelle. Si vous ne la connaissez pas, tapez « Quelle est mon adresse IP? » dans Google.
Cette configuration permet au proxy sslh d’écouter sur toutes les interfaces réseau sur le port 25565. Modifiez le port si votre client Minecraft utilise un autre port, ou si vous jouez à un autre jeu. Habituellement, sslh est utilisé pour faire correspondre différents protocoles et les rediriger à différents endroits. Dans notre cas, nous voulons simplement rediriger tout le trafic vers votre_adresse_ip:25565.
Appuyez sur Ctrl + X, puis sur Y pour enregistrer le fichier. Entrez les commandes suivantes pour activer sslh:
sudo systemctl enable sslh
sudo systemctl start sslh
Si systemctl n’est pas disponible sur votre système, vous devrez peut-être utiliser la commande service à la place.
sslh devrait maintenant fonctionner. Assurez-vous que votre routeur redirige le port 25565 vers votre ordinateur. Pensez à attribuer une adresse IP statique à votre ordinateur pour éviter que cela ne change.
Pour vérifier si les autres peuvent accéder à votre serveur, entrez l’adresse IP du proxy dans un vérificateur d’état en ligne. Vous pouvez aussi entrer l’adresse IP de votre proxy directement dans votre client Minecraft et essayer de vous connecter. Si cela ne fonctionne pas, assurez-vous que les ports sont bien ouverts dans les groupes de sécurité de votre instance.