私たちの施設では、300台以上のコンピューターをインターネットで異なるLANに接続していました。ここには、学生向けのOfficies LANとInternet Laboratoryが含まれています。そして、トレントやあらゆるP2Pプロトコルを制御したいのです。この問題に対する以前の解決策は、KerioWinRoute 6.5.xで、ほとんどの要件を満たします。
問題は、Webmin Platformを使用してUbuntu 8.04 LTSに移行したことです。
私たちの施設では、300台以上のコンピューターをインターネットで異なるLANに接続していました。ここには、学生向けのOfficies LANとInternet Laboratoryが含まれています。そして、トレントやあらゆるP2Pプロトコルを制御したいのです。この問題に対する以前の解決策は、KerioWinRoute 6.5.xで、ほとんどの要件を満たします。
問題は、Webmin Platformを使用してUbuntu 8.04 LTSに移行したことです。
回答:
ポートベースのP2Pブロッキングは、100%のソリューションとは言えません。考慮したいのは、L7フィルタリング(レイヤー7フィルタリング)と呼ばれるものです。基本的に、Linuxには、すべてのパケットで正規表現に基づいたマッチングを行って、良いものと悪いものを決定する実装があります。
http://l7-filter.sourceforge.net/
これは、スカイプを含むあらゆる種類のものをブロックするのに役立ちます。
http://l7-filter.sourceforge.net/protocols
注:パケットを検査およびフィルタリングするための正規表現のマッチングは、リソースを集中的に使用するため、すべてのシステムがDDOS攻撃に対してより脆弱になります。好ましい方法は、iptables内のプロトコルをターゲットにすることです。
唯一の適切な技術的解決策は、SSLトラフィックを即座に復号化するプロキシをすべてのトラフィックに通過させ、通過するトラフィックにレイヤー7フィルタリングを適用することです。
通常、パケットの分類に必要なルールを更新するエンジニアの大きなチームが背後にいるため、このような製品はかなり高価です。
前述のipp2pまたはl7-filterのようにiptablesモジュールsushを使用することで多少助けられますが、暗号化されたトラフィックをキャッチしません。
いずれにせよ、技術が社会問題の解決策となることは非常にまれであり、企業/公共/ p2pのネットワークの誤用は社会問題です。ユーザーと話をして、組織に適切なポリシーを作成してもらい、制裁措置を強制してください。私の経験では、これはユーザーとの絶え間ない技術の軍拡競争よりもはるかにうまく機能します。
次のような一般的なトラッカーポートをブロックすることをお勧めします:6881-6889 2710 6969
しかし、これは80ポート(つまりtpb.tracker.thepiratebay.org)にバインドされたトラッカーには役立ちません。したがって、80,443,22を除くすべてをブロックしても効果はありません。
ipp2pは私が知っている最良の解決策です。ドキュメント/使用法セクションを参照してください
l7-filterについて。bittorrent.patのコメントには次のように書かれています:
このパターンはテストされており、うまく機能すると考えられています。ただし、暗号化されたデータを一致させることは不可能であるため、暗号化されたbittorrentストリームでは機能しません。
BSDシステムでは、pfは1秒あたりの状態または接続の数に応じてアクションを適用できるため、bittotentのようなトラフィックにタグを付けることができます。iptablesマニュアルを読んでください。
簡単な解決策は、許可するポート以外のすべての発信ポートをブロックすることです。
または、一般的なP2Pアプリケーションに使用される可能性が高いポートのリストを見つけて、それらをブロックすることもできます。Bittorrentは、アップロードもしていない場合、非常に限られた量のダウンロードしか許可しない傾向があるため、着信接続を許可しないことも確認する必要があります。
使用するTCPポートに基づいて、ルーターに何らかのIPアカウンティングを設定し、最も使用頻度の高いポートを見つけると便利な場合があります。IPTrafは、これを確認するための便利なツールです。
私はあなたがすべてを決して止めないことを警告する必要があります。人々は独創的で、あなたが設定した制限を回避する方法を見つけます。ただし、ほとんどのファイアウォールはカジュアルユーザーを停止しますが、これで十分です。
「適切な」TCPポート80、443、22のみを許可しない限り、P2Pを完全にブロックすることはできません。そして、VPNなどを持っているコンピューター志向のタイプにとっては、通常それで十分です。
これらの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で見つかった場合、削除されますか?これは、最初のトレントファイルのダウンロードを防ぐためだけのものですが、トレントファイルが既にダウンロードされると、ビットトレントトラフィックはブロックされません。
ストレートポートブロッキングは使用できません。いくつかの選択肢があります。Layer7フィルターは遅く、信頼性が低く、私の知る限り、もはや維持されていません。
IPP2Pは問題ありませんが、OpenDPIに取って代わられました。OpenDPIは、スポンサーのipoque(PACEを販売しています)によって廃止されました。nDPIは、この小さな道の論理的な結論であるようです:http ://www.ntop.org/products/ ndpi /
最も簡単でかなり効果的なのは、David Pashleyの提案の延長です。すべてのポートをブロックし、必要なものだけを許可し、必要なサービスをプロキシすることでこれを拡張します。たとえば、Webプロキシ、およびおそらくport25が許可される内部メールサーバーで、クライアントは内部サーバーのみと通信します。このようにして、ファイアウォール上でポートを開く必要のないクライアントを作成できます。これは機能するはずですが、直接アクセスを必要とする複雑なアプリや不適切に作成されたアプリを使用する必要がある場合、少しずつ落ち始める可能性があります。
以下は、iptablesルールセットです。これは魅力のように機能します。https透過インターセプトプロキシを作成し、そのプロキシサーバーを介してすべてのトラフィックを送信します。
このiptablesルールを使用して、ネットワークを制御できます。
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