Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 10-08-2016 09:00:26

Rainbow
Membre
Inscription : 10-08-2016

[Demande d'aide] Configuration IPtables

Bonjour,

Je suis l'un des Fondateurs et AdminSyS (débutant) de la communauté BattleCube. Nous proposons différents modes de jeux Minecraft. Ces modes de jeux sont reliés par un Proxy nommé Bungeecord. Nous utilisons Debian8, et nos modes de jeux sont répartis sur différentes machines, donc il ya différentes ips.
Depuis plusieurs jours des joueurs contournent notre serveur d'authentification Minecraft en se connectant directement sur notre Lobby car ils ont eux aussi créée leur Bungeecord et mit l'ip ainsi que le port de notre Lobby dans leur configuration, c'est donc pour sa que je tente de configurer mes iptables (nous avons plusieurs ip car nous avons plusieurs vps).

Voilà les commandes que j'ai exécutées:

http://pastebin.com/faMRgwkQ

(Configuration qui n'a pas marché car les joueurs n'arrivaient plus à rejoindre...)

Mais plusieurs questions me gênent encore...:

- Dois-je changer le chmod du fichier ou sont conservés ces iptables, si oui quel est le chemin pour y accéder ?

- Dois-je effectuer une certaine commande afin d'enregistrer mes iptables si oui quelle est cette commande ?

- Ces iptables, vont elles influencer la connexion à mon serveur Apache2, MySQL situé sur l'un des vps ou se trouve également des serveurs Minecraft ?

- Dois-je appliquer ces commandes d'iptables sur chacun de mes vps ou se trouvent des serveurs Minecraft ou uniquement sur celui ou se trouve mon Proxy Bungeecord ?

- Les ports correspondent à des serveurs Minecraft, doivent-ils être mis dans un ordre particulier ? (J'ai vu qu'il fallait les mettre par rapport aux ips auxquels ils correspondent).


Merci de votre aide, j'espère que vous avez réussi à comprendre mon problème malgré mon manque d'expérience.

Hors ligne

#2 10-08-2016 10:23:02

raleur
Membre
Inscription : 03-10-2014

Re : [Demande d'aide] Configuration IPtables

Rainbow a écrit :

Voilà les commandes que j'ai exécutées:


[mode raleur]C'est vrai que c'était vachement trop long pour être copié directement dans le forum plutôt que d'obliger les lecteurs à aller voir sur un site tiers[/mode]

Ne connaissant pas du tout Minecraft, je n'ai rien compris à ta description, à quoi sert le "bungeecord", qu'est- que le "lobby"...
Je pense que ce serait plus clair si tu énumérais juste les flux légitimes entre les clients et les serveurs et entre les serveurs. Cela sera nécessaire pour écrire un jeu de règles iptables adapté.

Rainbow a écrit :

Dois-je changer le chmod du fichier ou sont conservés ces iptables, si oui quel est le chemin pour y accéder ?


Quel fichier ? Si c'est un fichier que tu as créé, tu dois savoir où il se trouve.

Rainbow a écrit :

Dois-je effectuer une certaine commande afin d'enregistrer mes iptables si oui quelle est cette commande ?


Ça dépend ce que tu entends pas "enregistrer". Si tu veux extraire le jeu de règles actif à un moment donné tu peux utiliser la commande "iptables-save" et rediriger sa sortie standard dans un fichier. Ce fichier pourra servir à restaurer le même jeu de règles avec la commande "iptables-restore".
Si tu veux un mécanisme qui restaure automatiquement les règles au démarrage, il n'y en a pas par défaut. Il faut écrire un script et l'exécuter au démarrage ou le paquet iptables-persistent.

Rainbow a écrit :

Ces iptables, vont elles influencer la connexion à mon serveur Apache2, MySQL situé sur l'un des vps ou se trouve également des serveurs Minecraft ?


Pas si ces services n'utilisent pas les ports concernés par les règles.

Rainbow a écrit :

Dois-je appliquer ces commandes d'iptables sur chacun de mes vps ou se trouvent des serveurs Minecraft ou uniquement sur celui ou se trouve mon Proxy Bungeecord ?


Excellente question qui aurait dû être la première. Cela dépend de ce que tu veux empêcher. Si tu veux empêcher les joueurs de se connecter directement aux serveurs en court-circuitant le proxy, alors mettre les règles sur le proxy ne sert à rien, il faut les mettre sur les serveurs. Si tu veux empêcher les joueurs de se connecter à certains ports du proxy, alors il faut les mettre sur le proxy. Les règles ne seront pas forcément identiques sur le proxy et sur les serveurs. On en revient à ce que j'écrivais au début : il faut énumérer les flux légitimes.

Rainbow a écrit :

Les ports correspondent à des serveurs Minecraft, doivent-ils être mis dans un ordre particulier ?


Non,

Dernière modification par raleur (10-08-2016 10:24:20)

Hors ligne

#3 10-08-2016 21:20:37

Rainbow
Membre
Inscription : 10-08-2016

Re : [Demande d'aide] Configuration IPtables

Re-Bonjour,

Pour ce qui est de pastebin j'ai pris l'habitude de mettre mon code/commandes là dessus, car lorsque je le fais pas on me fait la remarque et quand je le fait on me la fait aussi ^^, fin bref je vais tenter de répondre à vos questions malgré mon manque d'expérience.

Donc Minecraft et le jeux sur lequel on joue, vu que l'on se lasse vite on a inventé différents modes de jeux, mais plus on a de modes de jeux plus on utilise de ressources, donc pour mieux répartir ces ressources on mets un mode de jeu par machine, mais on ce retrouve donc avec plusieurs ip, ce qui est désagréable pour les joueurs qui doivent changer de serveur dès qu'ils veulent changer de mode de jeu (ils doivent donc se déconnecter puis se reconnecter) afin de faciliter cela un Proxy nommé Bungeecord à été créer, il permet de relier tout les serveurs, par des portails de téléportations (ou autre chose) qu'empruntent les joueurs pour changer de mode de jeu, on peut choisir le serveur auquel le joueur va se connecter en premier dans la configuration de Bungeecord, en l'occurrence moi j'ai mis un serveur d'authentification, c'est un lieu où les joueurs effectuent une commande ou ils indiquent leur mot de passe, une fois que cela est fait ils sont rédirigés vert le "Lobby" c'est en quelque sorte le carrefour des mode de jeux, le lieu où ils vont pouvoir choisir à quoi ils vont jouer. Dans la configuration de Bungeecord on indique tout les serveurs (ips) que l'on veut relier, à ce Bungeecord, le problème c'est qu'il ne demande aucune vérification, il suffit donc de trouver l'IP du Lobby du serveur concurrents, de créer sont Bungeecord et d'y mettre l'IP du concurrent, lorsque vous allez vous connecter à votre Bungeecord vous allez être envoyé vers l'IP du Lobby concurrent et donc contourner sont serveur d'authentification il vous suffira donc de vous connecter avec le pseudo d'un administrateur de ce serveur pour avoir toutes les permissions car le Lobby où vous serrez arrivé pensera que vous êtes bien passé par le serveur d'authentification. C'est ce qui nous arrive actuellement.
Voici les ips de nos différents services :

Bungeecord :
xxx.33.140.49:25565

Serveur d'authentification :
xxx.33.140.49:25531

Lobby:
xxx.132.188.190:25565

Mode de jeu 1:
5.xxx.197.166:25568

Mode de jeu 2:
xxx.33.140.49:25572

Mode de jeu 3:
92.xxx.156.91:25568

Voici ce qui je l'espère vous éclairera d'avantage wink

Merci pour votre aide !

Hors ligne

#4 11-08-2016 15:19:57

raleur
Membre
Inscription : 03-10-2014

Re : [Demande d'aide] Configuration IPtables

Je n'ai pas dû être assez clair. Ce dont j'ai besoin, ce sont les flux réseau mis en jeu, car c'est tout ce qu'iptables peut voir et traiter. Les utilisateurs, les modes de jeu, les logins, il s'en fiche royalement.
Quelle machine doit se connecter à quelle autre et sur quel port ?

Dernière modification par raleur (11-08-2016 15:20:56)

Hors ligne

#5 11-08-2016 15:56:22

Rainbow
Membre
Inscription : 10-08-2016

Re : [Demande d'aide] Configuration IPtables

Le lobby, le mode de jeu1, le mode de jeu3 se connecte au Bungeecord. Le serveur d'authentification et le mode de jeu2 sont sur la même machine que le Bungeecord.

Hors ligne

#6 11-08-2016 17:04:20

raleur
Membre
Inscription : 03-10-2014

Re : [Demande d'aide] Configuration IPtables

Rainbow a écrit :

Le lobby, le mode de jeu1, le mode de jeu3 se connecte au Bungeecord.


Ce n'est pas plutôt dans l'autre sens ? Je ne connais pas ce jeu, mais en général c'est le proxy qui se connecte aux serveurs.

Et les clients, ils se connectent à quoi ?

Hors ligne

#7 11-08-2016 19:02:16

Rainbow
Membre
Inscription : 10-08-2016

Re : [Demande d'aide] Configuration IPtables

Oui en effet c'est même plus logique et les joueurs se connectent à l'IP du proxy
xxx.33.140.49:25565

Voilà 2images qui résument plutôt bien la situation :
Bungee.png
bungeecord-system.png

Dernière modification par Rainbow (11-08-2016 19:04:14)

Hors ligne

#8 11-08-2016 19:19:50

raleur
Membre
Inscription : 03-10-2014

Re : [Demande d'aide] Configuration IPtables

En gros, les clients ne doivent se connecter qu'au port du proxy et rien d'autre.
Ce qui n'est pas clair, c'est s'il y a des communications directes entre lobby et modes ou si tout passe par le proxy.

Hors ligne

#9 12-08-2016 09:53:31

Rainbow
Membre
Inscription : 10-08-2016

Re : [Demande d'aide] Configuration IPtables

Oui voilà il se connectent à l'IP et au port du Proxy et après il ne mettent plus aucune ip, le Proxy gére le reste. Et il n'y a pas de communication entre le lobby et les modes de jeux.
1406843178-connexion-serveurs-hellominecraft.png

Hors ligne

#10 12-08-2016 09:58:13

Rainbow
Membre
Inscription : 10-08-2016

Re : [Demande d'aide] Configuration IPtables

J'ai réussi à trouver un script mais j'ai du mal à comprendre...

Sample scripts(top)
The code below is an iptables script for multiple dedicated machines with multiple servers by PhanaticD. Make a file called firewall.sh and paste the script below into it. Make necessary modifications to match your IPs and ports.


iptables -F #remove all existing rules
iptables -X #remove all existing chains
iptables -N bungee # create a new chain for bungee

# Which IPs do you want to allow
iptables -A bungee --src 111.111.111.111 -j ACCEPT
iptables -A bungee --src 222.222.222.222 -j ACCEPT
# etc
iptables -A bungee --src 127.0.0.1 -j ACCEPT

# block anything not from the those IPs
iptables -A bungee -j DROP

# which ports will the above IPs be allowed to work on.
# all other ports not here will not be limited
iptables -I INPUT -m tcp -p tcp --dport 25565 -j bungee
iptables -I INPUT -m tcp -p tcp --dport 25565 -j bungee
# etc

Hors ligne

#11 12-08-2016 09:58:58

Rainbow
Membre
Inscription : 10-08-2016

Re : [Demande d'aide] Configuration IPtables

Il doit être en bash pas en shell comme il est marqué

Dernière modification par Rainbow (12-08-2016 10:00:00)

Hors ligne

#12 12-08-2016 14:11:09

raleur
Membre
Inscription : 03-10-2014

Re : [Demande d'aide] Configuration IPtables

Bash est un shell parmi d'autres. Pas de "bashisme" (utilisation d'extension non standard propre à bash) dans ce script, donc il pourra très bien être exécuté par le shell standard /bin/sh (qui pointe par défaut dans Debian vers dash, plus léger, rapide, sécurisé et adapté pour l'exécution non interactive des scripts). Pour le spécifier, il faut insérer ceci en première ligne du script :

#!/bin/sh



Revenons à nos moutons.
Dans ton dernier schéma, les doubles flèches indiquent-elles que les serveurs peuvent aussi se connecter au proxy ?

Ce script est un modèle de ce qui peut être mis en place sur chaque serveur, proxy compris, pour restreindre l'accès. Il faut en écrire une version personnalisée pour chaque serveur.

Dans le premier groupe de règles "Which IPs do you want to allow", il faut créer une règle avec l'adresse de chaque machine qui doit se connecter à un port restreint du serveur. Il faut y mettre au moins l'adresse du proxy (y compris sur la machine hébergeant le proxy pour que ce dernier ait accès aux autres services qu'elle héberge). Si les autres serveurs doivent se connecter à des services restreints du serveur hébergeant le proxy, il faut ajouter leurs adresses dans le script du proxy.

Dans le second groupe de règles "which ports will the above IPs be allowed to work on", il faut créer une règle avec chaque port restreint ouvert sur le serveur. Note que le port 25565 du proxy n'est pas restreint puisque c'est celui sur lequel se connectent les joueurs.

Ce script devra être lancé au démarrage du serveur, par exemple via le fichier /etc/rc.local.

Si c'est assez clair, je te laisse travailler sur le script à écrire pour chaque serveur. Si tu veux je vérifierai ensuite.

Dernière modification par raleur (12-08-2016 14:12:16)

Hors ligne

#13 12-08-2016 17:38:41

Rainbow
Membre
Inscription : 10-08-2016

Re : [Demande d'aide] Configuration IPtables

J'ai réalisé les scripts en suggérant que les serveur spigot ne se connectent pas au Proxy (car je n'ai renseigné à aucun endroit l'IP de mon proxy sur mes serveurs)

Script pour mon proxy:

#!/bin/sh
#Script Firewall pour Serveur PROXY
iptables -F #remove all existing rules
iptables -X #remove all existing chains
iptables -N bungee # create a new chain for bungee

# Which IPs do you want to allow
iptables -A bungee --src xxx.33.140.49 -j ACCEPT #IP de mon Proxy
iptables -A bungee --src 127.0.0.1 -j ACCEPT

# block anything not from the those IPs
iptables -A bungee -j DROP

# which ports will the above IPs be allowed to work on.
# all other ports not here will not be limited



Mon script pour mes serveur de jeu:

#!/bin/sh
#Script Firewall pour Serveur de JEU
iptables -F #remove all existing rules
iptables -X #remove all existing chains
iptables -N bungee # create a new chain for bungee
 
# Which IPs do you want to allow
iptables -A bungee --src xxx.33.140.49 -j ACCEPT #IP de mon Proxy
iptables -A bungee --src 127.0.0.1 -j ACCEPT
 
# block anything not from the those IPs
iptables -A bungee -j DROP
 
# which ports will the above IPs be allowed to work on.
# all other ports not here will not be limited
iptables -I INPUT -m tcp -p tcp --dport 25565 -j bungee #port de mon proxy

Hors ligne

#14 12-08-2016 18:32:02

raleur
Membre
Inscription : 03-10-2014

Re : [Demande d'aide] Configuration IPtables

As-tu bien compris le principe des ports restreints ?
Dans chaque script il faut mettre tous les ports du serveur concerné qui ne doivent être accessible que depuis la liste d'adresses autorisées.
Les serveurs n'ont rien à faire du port sur lequel le proxy reçoit les connexions des joueurs.

Hors ligne

#15 12-08-2016 21:25:36

Rainbow
Membre
Inscription : 10-08-2016

Re : [Demande d'aide] Configuration IPtables

Oui en effet je n'ai pas très bien compris ducoup j'ai refais les scripts.
Voici celui pour le serveur où il ya le Proxy et les 3serveurs de jeux:

#!/bin/sh
#Script Firewall pour Serveur PROXY qui contient 3 serveurs de jeu
iptables -F #remove all existing rules
iptables -X #remove all existing chains
iptables -N bungee # create a new chain for bungee
 
# Which IPs do you want to allow
iptables -A bungee --src xxx.33.140.49 -j ACCEPT #IP de mon Proxy
iptables -A bungee --src 127.0.0.1 -j ACCEPT
 
# block anything not from the those IPs
iptables -A bungee -j DROP
 
# which ports will the above IPs be allowed to work on.
# all other ports not here will not be limited
iptables -I INPUT -m tcp -p tcp --dport 25531 -j
iptables -I INPUT -m tcp -p tcp --dport 25571 -j
iptables -I INPUT -m tcp -p tcp --dport 25572 -j



J'ai donc mis les 3 ports des serveurs Minecraft et je n'ai pas mis le 25565 pour que les joueurs puissent se connecter, j'ai mis l'IP de mon proxy également.

Voici mon second script pour ma seconde machine ou ce trouve uniquement un serveur de jeu:

#!/bin/sh
#Script Firewall pour Serveur PROXY qui contient 3 serveurs de jeu
iptables -F #remove all existing rules
iptables -X #remove all existing chains
iptables -N bungee # create a new chain for bungee
 
# Which IPs do you want to allow
iptables -A bungee --src xxx.33.140.49 -j ACCEPT #IP de mon Proxy
iptables -A bungee --src 127.0.0.1 -j ACCEPT
 
# block anything not from the those IPs
iptables -A bungee -j DROP
 
# which ports will the above IPs be allowed to work on.
# all other ports not here will not be limited
iptables -I INPUT -m tcp -p tcp --dport 25568 -j
 



Sur ce script j'ai donc mis uniquement le port sur lequel tourne le serveur de jeu de ma seconde machine.

Voici le script pour ma 3eme machine ou ce trouvent 4modes de jeux.

#!/bin/sh
#Script Firewall pour Serveur PROXY qui contient 3 serveurs de jeu
iptables -F #remove all existing rules
iptables -X #remove all existing chains
iptables -N bungee # create a new chain for bungee
 
# Which IPs do you want to allow
iptables -A bungee --src xxx.33.140.49 -j ACCEPT #IP de mon Proxy
iptables -A bungee --src 127.0.0.1 -j ACCEPT
 
# block anything not from the those IPs
iptables -A bungee -j DROP
 
# which ports will the above IPs be allowed to work on.
# all other ports not here will not be limited
iptables -I INPUT -m tcp -p tcp --dport 25566 -j
iptables -I INPUT -m tcp -p tcp --dport 25567 -j
iptables -I INPUT -m tcp -p tcp --dport 25568 -j
iptables -I INPUT -m tcp -p tcp --dport 25567 -j



Donc sur ce script j'ai mis les 4ports qui correspondent aux 4ports des 4serveurs qui tournent sur la même machine

Voici mon dernier script qui lui est pour ma 4ème machine ou ce trouve uniquement 1 serveur de jeu:

#!/bin/sh
#Script Firewall pour Serveur PROXY qui contient 3 serveurs de jeu
iptables -F #remove all existing rules
iptables -X #remove all existing chains
iptables -N bungee # create a new chain for bungee
 
# Which IPs do you want to allow
iptables -A bungee --src xxx.33.140.49 -j ACCEPT #IP de mon Proxy
iptables -A bungee --src 127.0.0.1 -j ACCEPT
 
# block anything not from the those IPs
iptables -A bungee -j DROP
 
# which ports will the above IPs be allowed to work on.
# all other ports not here will not be limited
iptables -I INPUT -m tcp -p tcp --dport 25565 -j
 



Le dernier port ici correspond au port sur lequel tourne l'unique serveur situé sur ma 4ème machine.

Donc dans chacun des script j'ai mis dans la catégorie "# Which IPs do you want to allow?" L'ip de mon Proxy.
Je possède également une base MySQL gérée avec PhPMyAdmin sur un serveur apache2 tout cela est situé sur ma 1ère machine, là où il ya mon Proxy et 3serveurs de jeux, est-il nécessaire d'ajouter une régle?

Merci pour votre aide

Hors ligne

#16 12-08-2016 22:51:26

raleur
Membre
Inscription : 03-10-2014

Re : [Demande d'aide] Configuration IPtables

Ah, ça ressemble enfin à quelque chose !

Ces règles n'affecteront pas l'accès aux services qui écoutent sur d'autres ports.
Je suppose que le serveur web Apache doit être accessible à tous, donc pas de restriction.
Si la base MySQL n'est utilisée que par les services hébergés sur le même serveur (et pas par les autres serveurs), il faut le configurer pour n'écouter que sur localhost/127.0.0.1 ainsi il sera impossible de s'y connecter directement depuis l'extérieur.
Concernant PHPMyAdmin, je supppose que son accès est déjà protégé par du HTTPS et un mot de passe en béton ? S'il écoute sur un port différent des sites normaux d'Apache et si les adresses IP depuis lesquelles on doit pouvoir s'y connecter sont fixes et connues, tu peux utiliser le même système de règles iptables pour ce port et ces adresses dans le script, mais avec une chaîne distincte de "bungee".

Et bien sûr, il faut tester tout ça une fois en place, vérifier l'accès et le non accès.

Hors ligne

#17 12-08-2016 22:56:17

Rainbow
Membre
Inscription : 10-08-2016

Re : [Demande d'aide] Configuration IPtables

Ah! Sa fait plaisir d'entendre sa ! Je vais essayer tout sa dès que je serais de retour chez moi. Pour ce qui est de la base MySQL, il ya les serveurs en local qui l'utilise mais également les 3 autres machines donc je garde ma configuration de base pour ce qui en est de ma base MySQL

Hors ligne

#18 13-08-2016 01:23:19

raleur
Membre
Inscription : 03-10-2014

Re : [Demande d'aide] Configuration IPtables

Alors même remarque pour MySQL que pour PHPMyAdmin, création d'une chaîne spéciale avec son port.

Hors ligne

#19 15-08-2016 11:32:06

Rainbow
Membre
Inscription : 10-08-2016

Re : [Demande d'aide] Configuration IPtables

J'ai appliqué mes règles et cela fonctionne parfaitement à un détail près sad sur notre machine n°4 (Notre Lobby), nous avons un lieu qui permet au joueur de rejoindre des "MiniJeux", c'est un plugin qui et sur cette machine qui permet de rejoindre les minijeux mais le problème c'est qu'il m'affiche les serveur hors-ligne, car je pense que le plugin doit créer une liaison entre lui et la machine n°3 (c'est sur celle-ci que sont situé les minijeux), j'ai donc ajouté dans les régles de la machine n°3 l'ip de la machine n°4 mais cela ne fonctionne toujours pas.

Hors ligne

#20 15-08-2016 18:10:19

raleur
Membre
Inscription : 03-10-2014

Re : [Demande d'aide] Configuration IPtables

Pour ne pas chercher pendant des jours ce qui bloque, tu peux insérer une règle de log avant la règle DROP dans le script de chaque serveur :

# log and block anything not from the those IPs
iptables -A bungee -j LOG
iptables -A bungee -j DROP


Ensuite tu essaies de joindre un mini jeu via le lobby et tu regardes dans les logs du noyau /var/log/kern.log l'adresse source des paquets bloqués.

Dernière modification par raleur (16-08-2016 19:40:31)

Hors ligne

#21 16-08-2016 19:20:04

Rainbow
Membre
Inscription : 10-08-2016

Re : [Demande d'aide] Configuration IPtables

Je vais faire sa merci wink

Hors ligne

#22 16-08-2016 19:28:01

Rainbow
Membre
Inscription : 10-08-2016

Re : [Demande d'aide] Configuration IPtables

Ya juste que je n'ai pas de fichier kern

Hors ligne

#23 16-08-2016 19:40:14

raleur
Membre
Inscription : 03-10-2014

Re : [Demande d'aide] Configuration IPtables

Ma faute. C'est kern,log.
Ou sinon via la commande dmesg.

Dernière modification par raleur (16-08-2016 19:41:05)

Hors ligne

#24 16-08-2016 20:36:58

Rainbow
Membre
Inscription : 10-08-2016

Re : [Demande d'aide] Configuration IPtables

Je n'ai pas non plus de fichier kern.log dans mon /var/log et la commande dmesg est assez difficile à comprendre ou soit elle m'affiche rien dutout

Hors ligne

#25 16-08-2016 20:59:25

raleur
Membre
Inscription : 03-10-2014

Re : [Demande d'aide] Configuration IPtables

Pas de /var/log/kern.log* et dmesg qui n'affiche rien, je n'ai jamais vu ça sur une une Debian normale.
Les logs d'iptables sont les lignes qui contiennent IN=, OUT=, SRC=, DST=...

Hors ligne

Pied de page des forums