web-dev-qa-db-fra.com

Utilisation de Linux Iptables, comment bloquer les torrents ou les protocoles P2P?

Dans notre institution, nous avions connecté 300 ordinateurs à différents LAN avec Internet. Inclus ici sont officies LAN et de laboratoire Internet pour les étudiants. Et nous voulons contrôler des torrents ou des protocoles P2P. La solution précédente à notre problème est KeriowinRoute 6.5.x, qui satisfait le plus.

Le problème est que nous avons migré vers Ubuntu 8.04 LTS à l'aide de la plate-forme WebMin.

17
Nathaniel Varona

La seule solution technique appropriée consiste à effectuer tout le trafic traversant un proxy qui déchiffrera le trafic SSL à la volée puis appliquer filtrage de couche 7 sur le trafic qui passe.

Ces produits sont assez chers car il existe généralement une grande équipe d'ingénieurs derrière eux à la mise à jour des règles nécessaires à la classification des paquets.

Vous pouvez vous aider quelque peu avec des modules iptables susceptibles de mentionner ipp2p ou l7-filter, mais ils ne vont pas attraper le trafic crypté.

En tout état de cause, la technologie est très rarement la solution pour les problèmes sociaux et les abus od Corporate/Public/Public/Public/Publics/Publics/Quels que P2P est un problème social. Essayez de parler à vos utilisateurs, demandez à votre organisation de créer Politiques appropriées et les appliquer avec des sanctions. Ceci dans mon expérience fonctionne beaucoup mieux qu'une course de bras technologiques constante avec vos utilisateurs.

11

C'est une bonne pratique pour bloquer les ports de suivi communs comme: 6881-6889 2710 6969

mais cela ne vous aidera pas contre les traqueurs liés à 80 ports (i.e tpb.tracker.thepiratebay.org). Donc, bloquer tout, mais 80 443,22 ne vous aideraient pas.

IPP2P est la meilleure solution que je connaisse. Voir la section documentation/utilisation

À propos de L7-filtre. Dans BitTorrent.Pat commentaire dit:

Ce modèle a été testé et on croit bien fonctionner. Cependant, cela ne fonctionnera pas sur des flux de BitTorrent cryptés, car il est impossible de correspondre à des données cryptées (bien).

Dans les systèmes BSD, PF peut appliquer des actions en fonction du nombre d'états ou de connexions par seconde, de sorte que vous pouvez étiqueter le trafic de type bitotent ", provoque une connexion rapide. Lire le manuel IPTABLES, peut-être que cela peut le faire aussi.

2
SaveTheRbtz

bitTorrent et la plupart des jours P2P maintenant sont assez évasifs. Au lieu de bloquer le trafic, utilisez des règles de QoS pour affamer les clients qui utilisent une grande quantité de bande passante, ou des gaz au trafic P2P de manière lente à zéro sur la quantité de temps. Il ne bloquera pas le protocole, mais cela dissuadera P2P'er que c'est si lent que cela ne vaut pas la peine de faire.

N'oubliez pas que tout le trafic torrent n'est pas mauvais, d'entre eux bien! :-)

1
The Unix Janitor

Utilisez ces règles de transfert d'IPTABLES pour supprimer les ensemencissements et la découverte des pairs du pit-Torrent. Ils ont travaillé pour moi.

#Block Torrent
iptables -A FORWARD -m string --algo bm --string "BitTorrent" -j DROP
iptables -A FORWARD -m string --algo bm --string "BitTorrent protocol" -j DROP
iptables -A FORWARD -m string --algo bm --string "peer_id=" -j DROP
iptables -A FORWARD -m string --algo bm --string ".torrent" -j DROP
iptables -A FORWARD -m string --algo bm --string "announce.php?passkey=" -j DROP
iptables -A FORWARD -m string --algo bm --string "torrent" -j DROP
iptables -A FORWARD -m string --algo bm --string "announce" -j DROP
iptables -A FORWARD -m string --algo bm --string "info_hash" -j DROP

Les règles en action, frappent le compteur incrémentant bien.

# iptables -vL -n

Chain FORWARD (policy ACCEPT 16403 packets, 6709K bytes)
 pkts bytes target     prot opt in     out     source               destination
    8   928 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0            STRING match  "BitTorrent" ALGO name bm TO 65535
    0     0 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0            STRING match  "BitTorrent protocol" ALGO name bm TO 65535
    0     0 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0            STRING match  "peer_id=" ALGO name bm TO 65535
    0     0 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0            STRING match  ".torrent" ALGO name bm TO 65535
    0     0 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0            STRING match  "announce.php?passkey=" ALGO name bm TO 65535
  582 52262 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0            STRING match  "torrent" ALGO name bm TO 65535
   10  1370 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0            STRING match  "announce" ALGO name bm TO 65535
   31  4150 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0            STRING match  "info_hash" ALGO name bm TO 65535
1
Giancarlo D

Il existe un module nommé IPP2P pouvant détecter et bloquer les protocoles P2P: http://www.ipp2p.org/

1
radius

La solution simple consiste à bloquer tous les ports sortants, à l'exception de ceux que vous souhaitez autoriser.

Vous pouvez également trouver une liste des ports susceptibles d'être utilisés pour des applications P2P communes et bloquez celles-ci. BitTorrent a tendance à autoriser une quantité très limitée de téléchargement si vous ne téléchargez pas également de téléchargement, vous devez également vous assurer que vous n'acceptez aucune connexion entrante.

Vous trouverez peut-être d'utiles à configurer une sorte de comptabilité IP sur votre routeur basé sur le TCP Port utilisé, puis recherchez le port le plus utilisé. Iptraf est un outil utile pour Vérification de cela.

Je devrais vous avertir que vous n'arrêterez jamais tout; Les gens sont ingénieux et trouveront une solution autour de toute restriction que vous avez mise en place. La plupart des pare-feu arrêteront l'utilisateur occasionnel, ce qui pourrait être suffisant.

1
David Pashley

Vous ne pouvez pas bloquer P2P complètement - sauf si vous ne laissez que le "bon" TCP ports 80, 443, 22 ... et même cela suffit généralement à Les types d'esprit d'esprit qui ont des VPN et des choses similaires.

1
user1686

Les programmes de tunneling SSL populaires tels que Ultrasurf peuvent permettre aux utilisateurs de contourner facilement vos pare-feu facilement. Pour bloquer le trafic de bittouthet crypté, vous auriez besoin d'un périphérique UTM spécialisé pouvant inspecter et bloquer les tunnels cryptés qui se passent sur http (s). Je ne connais que sur un qui est capable de le faire - Astaro, mais il devrait y avoir plus.

0
Taras Chuhay

Vous pouvez utiliser IP2P, comme mentionné précédemment. Cela ne va pas bloquer les choses complètement. Idéalement, vous devriez être incendié paroi de chaque port que vous n'utilisez pas spécifiquement et utilise IP2P. Pas une solution parfaite, mais le meilleur que vous êtes susceptible d'obtenir.

0
Cian

Vous ne pouvez pas utiliser le blocage de port droit. Il y a quelques alternatives. La couche7 filtre est lente, peu fiable et à ma connaissance n'est plus maintenue.

IPP2P est correct mais a été remplacé par Opendpi, qui a maintenant été interrompu par le sponsor Ipoque (qui vend un rythme, un équivalent commercial) NDPI semble être la conclusion logique de ce petit chemin: http: //www.ntop. org/produits/ndpi /

Le plus facile et assez efficace est une extension de la suggestion de David Pashley. Bloquez tous les ports et n'autorise que ce dont vous avez besoin - et d'étendre ceci en proxyant ces services dont vous avez besoin - par exemple avec un proxy Web, et peut-être un bourrage interne qui est autorisé Port25, mais les clients ne parlent que sur le serveur interne. De cette façon, vous pouvez avoir des clients qui n'ont pas besoin de ports ouverts sur le pare-feu. Cela devrait fonctionner mais peut commencer à tomber aux bits si vous devez utiliser des applications complexes et/ou mal écrites nécessitant un accès direct.

0
Tom Newton

Vous trouverez ci-dessous mes règles IPTables définies. Cela fonctionne comme un charme. J'ai créé un proxy d'interception de HTTPS transparent et envoyez tout le trafic via ce serveur proxy.

Utilisation de ces règles IPTABLES, je peux contrôler le réseau.

  • 2086, 2087, 2095 ports sont ouverts car nous utilisons WHM CPanel et CPanel web Mail.
  • 8080 pour un serveur Web supplémentaire.
  • 192.168.2.0 est le réseau local.

RÈGLE IPTABLE:

#Generated by iptables-save v1.4.8 on Tue Mar 10 15:03:01 2015
*nat
:PREROUTING ACCEPT [470:38063]
:POSTROUTING ACCEPT [9:651]
:OUTPUT ACCEPT [1456:91962]
-A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.2.1:3128
-A PREROUTING -i eth1 -p tcp -m tcp --dport 443 -j DNAT --to-destination 192.168.2.1:3127
-A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
-A PREROUTING -i eth1 -p tcp -m tcp --dport 443 -j REDIRECT --to-ports 3127
-A POSTROUTING -o eth0 -j MASQUERADE
-A POSTROUTING -s 192.168.2.0/24 -o eth0 -j MASQUERADE
COMMIT
# Completed on Tue Mar 10 15:03:01 2015
# Generated by iptables-save v1.4.8 on Tue Mar 10 15:03:01 2015
*filter
:INPUT ACCEPT [2106:729397]
:FORWARD ACCEPT [94:13475]
:OUTPUT ACCEPT [3252:998944]
-A INPUT -p tcp -m tcp --dport 3127 -j ACCEPT
-A FORWARD -m string --string "BitTorrent" --algo bm --to 65535 -j DROP
-A FORWARD -m string --string "BitTorrent protocol" --algo bm --to 65535 -j DROP
-A FORWARD -m string --string "peer_id=" --algo bm --to 65535 -j DROP
-A FORWARD -m string --string ".torrent" --algo bm --to 65535 -j DROP
-A FORWARD -m string --string "announce.php?passkey=" --algo bm --to 65535 -j DROP
-A FORWARD -m string --string "torrent" --algo bm --to 65535 -j DROP
-A FORWARD -m string --string "announce" --algo bm --to 65535 -j DROP
-A FORWARD -m string --string "info_hash" --algo bm --to 65535 -j DROP
-A FORWARD -m string --string "get_peers" --algo bm --to 65535 -j DROP
-A FORWARD -m string --string "announce_peer" --algo bm --to 65535 -j DROP
-A FORWARD -m string --string "find_node" --algo bm --to 65535 -j DROP
-A FORWARD -s 192.168.2.0/24 -p tcp -m tcp --sport 1024:65535 --dport 8080 -j ACCEPT
-A FORWARD -s 192.168.2.0/24 -p tcp -m tcp --sport 1024:65535 --dport 2086 -j ACCEPT
-A FORWARD -s 192.168.2.0/24 -p tcp -m tcp --sport 1024:65535 --dport 2087 -j ACCEPT
-A FORWARD -s 192.168.2.0/24 -p tcp -m tcp --sport 1024:65535 --dport 2095 -j ACCEPT
-A FORWARD -s 192.168.2.0/24 -p tcp -m tcp --sport 1024:65535 --dport 1024:65535 -j REJECT --reject-with icmp-port-unreachable
-A FORWARD -s 192.168.2.0/24 -p udp -m udp --sport 1024:65535 --dport 1024:65535 -j REJECT --reject-with icmp-port-unreachable
COMMIT
# Completed on Tue Mar 10 15:03:01 2015
0
Dinoosh