Filtrer certains protocoles Debian

Résolu/Fermé
Lordanonymous Messages postés 198 Date d'inscription jeudi 2 août 2012 Statut Membre Dernière intervention 21 mars 2019 - Modifié par Lordanonymous le 23/11/2013 à 22:16
Lordanonymous Messages postés 198 Date d'inscription jeudi 2 août 2012 Statut Membre Dernière intervention 21 mars 2019 - 27 nov. 2013 à 23:52
Bonjour,
(Je précise que je suis propriétaire de l'ensemble du réseau, machines comprises).
Mise en situation : Un utilisateur souhaite faire une partie de jeux en ligne, seulement voila, une personne sur le réseau local effectue des téléchargements via bittorent. C'est embêtant car ce protocole a tendance à saturer la bande passante et à provoquer un ping désastreux. Le but est de bloquer le seul protocole bittorent et ceux, d'une seul manière, faire passer l'ensemble des paquets du pollueur sur le PC du joueur et filtrer le protocole bittorent pour qu'il ne pollue pas le réseau.
Le réseau est composé de 2 PC linux (192.168.1.25 [le pollueur] et 192.168.1.26 [l'attaquant/joueur]) et 1 passerelle (192.168.1.15).

Je fait appel aux connaisseurs afin de m'éclairer sur la manière de réaliser cette opération. Pour le moment, je parvient à effectuer une attaque man in the middle via arp spoofing par cette commande :
arpspoof -i eth0 -t 192.168.1.25 192.168.1.15
(j'ai l'ensemble de son trafic réseau qui transite par ma machine).
À ce stade, deux choix s'offrent à moi :

-Forwarder les paquets (echo 1 > /proc/sys/net/ipv4/ip_forward). Ce qui revient à ne rien danger puisque le pollueur peut toujours télécharger (et c'est la que vous intervenez pour m'expliquer comment on bloque juste le protocole en question)

-Ne pas forwarder les paquets (echo 0 > /proc/sys/net/ipv4/ip_forward). Ce qui règle mon problème mais en pose un autre : le pollueur n'a plus du tout accès au réseau (ce que je ne veux pas).

Recherches personnelles : j'ai effectué des recherches avant de solliciter votre aide et je me suis dit qu'une règle iptables devrai répondre à mes attentes mais tout ce que j'ai tenté c'est soldé par un échec. Le parefeux UFW ne m'a pas plus satisfait également. Il y a probablement quelque chose de tout bête à faire mais je n'arrive pas à mettre la main dessus.

Voici les règles iptables qui me semblais les plus pertinentes (il en avais d'autres mais je ne les aient pas notées) :
iptables -A INPUT -p udp --sport 53 -j ACCEPT
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT

iptables -A INPUT -p udp -j DROP
iptables -A OUTPUT -p udp -j DROP

Merci de votre aide. Cordialement.

2 réponses

Lordanonymous Messages postés 198 Date d'inscription jeudi 2 août 2012 Statut Membre Dernière intervention 21 mars 2019 142
27 nov. 2013 à 23:52
C'est bon ! Après un temps passé à comprendre le fonctionnement d'iptables et à chercher une solution à mon problème, j'ai enfin le plaisir de passer se sujet en résolut (même si la réponse diverge un peut du sujet).

Je poste la solution pour ceux que ça intéresse (On en est à l'étape du forwarding à 1) :

1) Changer le comportement par défaut d'iptables sur la chaine FORWARD pour qu'il n'accepte aucun paquet (on ouvrira les ports au compte goute) :
iptables -P FORWARD DROP

2) Autoriser les ports voulus (séparés par des virgules et sans espace pour un enchainement de port et séparé par deux point (":") pour une plage de port :
iptables -A FORWARD -p tcp -m multiport --dport 80,443,20,21 -j ACCEPT

3) Autoriser le port udp DNS (sans ça, les ports tcp ne servent pas à grand chose) :
iptables -A FORWARD -p udp --dport 53 -j ACCEPT

4) Autoriser l'ICMP (pour les ping) :
iptables -A FORWARD -p icmp -j ACCEPT

PS1 : Pour visualiser les règles iptables : iptables -L (ajouter l'option --line-numbers pour avoir les numéros de ligne)

PS2 : Pour supprimer une règle iptables : iptables -D FORWARD Numéro_Ligne_Règle. Pour vider toute les règles : iptables -F

Voila :) Merci.
3
cocoche95 Messages postés 1134 Date d'inscription jeudi 29 juillet 2004 Statut Contributeur Dernière intervention 27 novembre 2019 543
23 nov. 2013 à 22:35
Hello,

Les deux premières manips sont les bonnes (arpspoof et activer le forward).

Cependant, avec ces règles iptables, ça ne marchera jamais. Pour comprendre, il faut analyser le fonctionnement d'iptables. Quand un paquet arrive, il passe par plusieurs "tables" mais le chemin diffère selon le couple source/destination (schéma simplifié) :
- source ou destination = ton PC : PREROUTING -> INPUT -> OUTPUT -> POSTROUTING
- source ou destination = un autre PC : PREROUTING -> FORWARD -> POSTROUTING

Dans ton cas, il ne faut pas non plus couper tous les flux UDP, c'est violent et brutal -> le pollueur va tout de suite le voir.

Enfin, iptables n'est pas la solution car tu pourras autoriser/bloquer un flux et éventuellement limiter le nombre d'établissement de nouvelles connexions autorisées en un temps donné.

Pour limiter le débit, regardes plutôt du côté de TC.

Bonne recherche (je ne peux pas t'en dire plus, je suis déjà limite au niveau charte) ...
0
Lordanonymous Messages postés 198 Date d'inscription jeudi 2 août 2012 Statut Membre Dernière intervention 21 mars 2019 142
23 nov. 2013 à 22:38
Merci énormément de votre réponse. Je vais poursuivre mes recherches. Bonne soirée à vous.
0