Linux IPTablesを使用して、トレントまたはP2Pプロトコルをブロックする方法は?


17

私たちの施設では、300台以上のコンピューターをインターネットで異なるLANに接続していました。ここには、学生向けのOfficies LANとInternet Laboratoryが含まれています。そして、トレントやあらゆるP2Pプロトコルを制御したいのです。この問題に対する以前の解決策は、KerioWinRoute 6.5.xで、ほとんどの要件を満たします。

問題は、Webmin Platformを使用してUbuntu 8.04 LTSに移行したことです。

回答:


14

ポートベースのP2Pブロッキングは、100%のソリューションとは言えません。考慮したいのは、L7フィルタリング(レイヤー7フィルタリング)と呼ばれるものです。基本的に、Linuxには、すべてのパケットで正規表現に基づいたマッチングを行って、良いものと悪いものを決定する実装があります。

http://l7-filter.sourceforge.net/

これは、スカイプを含むあらゆる種類のものをブロックするのに役立ちます。

http://l7-filter.sourceforge.net/protocols

注:パケットを検査およびフィルタリングするための正規表現のマッチングは、リソースを集中的に使用するため、すべてのシステムがDDOS攻撃に対してより脆弱になります。好ましい方法は、iptables内のプロトコルをターゲットにすることです。


11

唯一の適切な技術的解決策は、SSLトラフィックを即座に復号化するプロキシをすべてのトラフィックに通過させ、通過するトラフィックにレイヤー7フィルタリングを適用することです。

通常、パケットの分類に必要なルールを更新するエンジニアの大きなチームが背後にいるため、このような製品はかなり高価です。

前述のipp2pまたはl7-filterのようにiptablesモジュールsushを使用することで多少助けられますが、暗号化されたトラフィックをキャッチしません。

いずれにせよ、技術が社会問題の解決策となることは非常にまれであり、企業/公共/ p2pのネットワークの誤用は社会問題です。ユーザーと話をして、組織に適切なポリシーを作成してもらい、制裁措置を強制してください。私の経験では、これはユーザーとの絶え間ない技術の軍拡競争よりもはるかにうまく機能します。


プロキシサーバーはSSLをその場でどのように解読しますか?
デビッドパシュリー

一部の地域ではSSLプロキシの使用が禁止されていることに注意してください
radius

デビッド・パシュリー、彼らはサイトの代わりに証明書を送った。彼らがプライベートになったので、リクエストを真のサイトに転送します。
半径

1
これに関連するもう1つの手順は、グループポリシーを使用してSSLプロキシの信頼されたルート証明書をプッシュし、信頼された証明書を偽造できるようにすることです。
ザンリンクス

1
それは...本当に醜いソリューション...話してユーザーにだ
アントワーヌBenkemoun

2

次のような一般的なトラッカーポートをブロックすることをお勧めします:6881-6889 2710 6969

しかし、これは80ポート(つまりtpb.tracker.thepiratebay.org)にバインドされたトラッカーには役立ちません。したがって、80,443,22を除くすべてをブロックしても効果はありません。

ipp2pは私が知っている最良の解決策です。ドキュメント/使用法セクションを参照してください

l7-filterについて。bittorrent.patのコメントには次のように書かれています:

このパターンはテストされており、うまく機能すると考えられています。ただし、暗号化されたデータを一致させることは不可能であるため、暗号化されたbittorrentストリームでは機能しません。

BSDシステムでは、pfは1秒あたりの状態または接続の数に応じてアクションを適用できるため、bittotentのようなトラフィックにタグを付けることができます。iptablesマニュアルを読んでください。


1

P2Pプロトコルを検出およびブロックできるIPP2Pというモジュールがあります:http ://www.ipp2p.org/


1
このウェブサイトはもう存在しません。
アキレス

1

簡単な解決策は、許可するポート以外のすべての発信ポートをブロックすることです。

または、一般的なP2Pアプリケーションに使用される可能性が高いポートのリストを見つけて、それらをブロックすることもできます。Bittorrentは、アップロードもしていない場合、非常に限られた量のダウンロードしか許可しない傾向があるため、着信接続を許可しないことも確認する必要があります。

使用するTCPポートに基づいて、ルーターに何らかのIPアカウンティングを設定し、最も使用頻度の高いポートを見つけると便利な場合があります。IPTrafは、これを確認するための便利なツールです。

私はあなたがすべてを決して止めないことを警告する必要があります。人々は独創的で、あなたが設定した制限を回避する方法を見つけます。ただし、ほとんどのファイアウォールはカジュアルユーザーを停止しますが、これで十分です。


1

「適切な」TCPポート80、443、22のみを許可しない限り、P2Pを完全にブロックすることはできません。そして、VPNなどを持っているコンピューター志向のタイプにとっては、通常それで十分です。


P2Pが問題と多くの設定なしでHTTPとHTTPSポートを使用して動作します
Kazimieras Aliulis

softly.ltはそれを真正面から呼んだ。過去数年にわたって、ますます多くのp2pアプリがポート80(多くの場合暗号化)に移行するか、ポートをスキャンして開いているポートを探します。アプリケーション層のスヌーピング(特定の形式のディープパケットインスペクション)は直接使用をキャッチしますが、トラフィックがトンネリングされている場合は必ずしもそうではありません。
スコットパック

1
@packs:ますます多くのBitTorrentクライアントが完全な暗号化を提供し、ISPがパケット検査を行っているため、他のプロトコルとしてカモフラージュさえ提供します。
ザンリンクス

@grawity-確かに、しかし彼らはVPN + proxyを知っているかなり上級のユーザーである必要があり、そのようなタイプの人々はおそらく職場でTorrentするほど賢くないでしょう。
djangofan

@pack-はい 彼らが知っているすべてのために、あなたはディアブロ3をプレイしている可能性があります。
djangofan12年

1

現在、BitTorrentとほとんどのP2Pはかなり回避的です。トラフィックをブロックする代わりに、QOSルールを使用して、大量の帯域幅を使用しているクライアントを飢えさせるか、時間の経過とともにゆっくりとp2pトラフィックをゼロに絞ります。プロトコルをブロックすることはありませんが、p2p'ersを阻止するので、非常に遅いため実行する価値はありません。

すべてのトレントトラフィックが悪いわけではないことを思い出してください。:-)


1

これらのiptables転送ルールを使用して、ビットトレントシードおよびピア検出をドロップします。彼らは私のために働いた。

#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

動作中のルール、カウンターのインクリメントをうまくヒットします。

# 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

共有してくれてありがとう。フィルタリングはどのように機能しますか?文字列BitTorrentがURLで見つかった場合、削除されますか?これは、最初のトレントファイルのダウンロードを防ぐためだけのものですが、トレントファイルが既にダウンロードされると、ビットトレントトラフィックはブロックされません。
ハウマン

0

Ultrasurfのような一般的なSSLトンネリングプログラムを使用すると、ユーザーはファイアウォールを簡単にバイパスできます。暗号化されたbittornetトラフィックをブロックするには、http(s)を通過する暗号化されたトンネルを検査およびブロックできる特殊なUTMデバイスが必要です。それができるのはAstaroだけですが、もっとあるはずです。


0

前述のように、ip2pを使用できます。ただし、物事を完全にブロックするわけではありません。理想的には、特に使用しないすべてのポートをファイアウォールで囲い、ip2pを使用する必要があります。完璧な解決策ではありませんが、あなたが得そうな最高のものです。


0

ストレートポートブロッキングは使用できません。いくつかの選択肢があります。Layer7フィルターは遅く、信頼性が低く、私の知る限り、もはや維持されていません。

IPP2Pは問題ありませんが、OpenDPIに取って代わられました。OpenDPIは、スポンサーのipoque(PACEを販売しています)によって廃止されました。nDPIは、この小さな道の論理的な結論であるようです:http ://www.ntop.org/products/ ndpi /

最も簡単でかなり効果的なのは、David Pashleyの提案の延長です。すべてのポートをブロックし、必要なものだけを許可し、必要なサービスをプロキシすることでこれを拡張します。たとえば、Webプロキシ、およびおそらくport25が許可される内部メールサーバーで、クライアントは内部サーバーのみと通信します。このようにして、ファイアウォール上でポートを開く必要のないクライアントを作成できます。これは機能するはずですが、直接アクセスを必要とする複雑なアプリや不適切に作成されたアプリを使用する必要がある場合、少しずつ落ち始める可能性があります。


0

以下は、iptablesルールセットです。これは魅力のように機能します。https透過インターセプトプロキシを作成し、そのプロキシサーバーを介してすべてのトラフィックを送信します。

このiptablesルールを使用して、ネットワークを制御できます。

  • WHM cpanelおよびcpanel Webメールを使用しているため、2086、2087、2095ポートが開いています。
  • 追加のWebサーバーの場合は8080。
  • 192.168.2.0はローカルネットワークです。

IPTablesルール:

#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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.