OpenDPIは、ディープパケット分析(DPI-ディープパケットインスペクション)の技術に基づいてトラフィックを分類するためのライブラリです。
IPP2Pプロジェクト
はサポートされなくなりました。代わりに、OpenDPIを具体的に使用することをお勧めします。 主な目的が正確にp2pトラフィックを決定することであるIPP2Pとは異なり、OpenDPIはさまざまなプロトコルを幅広くサポートしています。 OpenDPIはもともと非常に低い誤検知率のために設計されました。
L7フィルターとは異なり、iptablesとカーネルのパッチは必要ありません。 カーネルモジュールおよびxtablesライブラリとして機能します。 また、プロトコル定義は正規表現のリストではなく、Cモジュールであり、パフォーマンスが向上します。 最近、このライブラリに対してiptablesサポートが実装されました。
それでは、実際にOpenDPIを使用してみましょう。
プロジェクトWebサイトの
ダウンロードセクションに移動します。
opendpi-1.2.0.tar.gzおよび
opendpi-netfilter-wrapper-1.1.tar.gzファイルをダウンロードし
ます (これらのバージョンは執筆時点で関連しています)。 試してみたい場合は、
opendpi-1.2.0.tar.gzの内容を
確認し、通常の方法(
./configure && make && make install
)でコンパイルし、さまざまなpcapファイルをOpenDPI_demoデモアプリケーションにフィードしてみてください。
iptablesモジュールの構築を始めましょう。 カーネルヘッダーとiptablesが必要になります。 カーネルに特定のオプションを設定することも必要です。
- 接続追跡イベントオプションを有効にする必要があります。
接続追跡イベント
シンボル:NF_CONNTRACK_EVENTS
場所:
->ネットワーキングのサポート
->ネットワークオプション
->ネットワークパケットフィルタリングフレームワーク(Netfilter)
->コアNetfilter設定
-> Netfilter接続追跡サポート
- 接続追跡ネットリンクインターフェイスオプションを無効にする必要があります。
接続追跡ネットリンクインターフェイス
シンボル:NF_CT_NETLINK
場所:
->ネットワーキングのサポート
->ネットワークオプション
->ネットワークパケットフィルタリングフレームワーク(Netfilter)
->コアNetfilter設定
-> Netfilter接続追跡サポート
opendpi-netfilter-wrapper-1.1.tar.gzを
解凍し、
opendpi-netfilter-wrapper-1.1ディレクトリに移動します。
ここでopendpi-1.2.0.tar.gzを解凍します 。 つまり ディレクトリ
opendpi-netfilter-wrapper-1.1には、
README 、
ipq _ *。diffファイル、
ラッパーディレクトリ、および
opendpi-1.2.0ディレクトリが含まれている必要があります。 それぞれ
opendpi-1.2.0ディレクトリに、OpenDPIソースがあります。 以下に、コマンドの形式で説明されているすべてのアクションを示します。
$ ls
opendpi-1.2.0.tar.gz opendpi-netfilter-wrapper-1.1.tar.gz
$ tar -xzf opendpi-netfilter-wrapper-1.1.tar.gz
$ cd opendpi-netfilter-wrapper-1.1
$ tar -xzf ../opendpi-1.2.0.tar.gz
次に、opendpi-1.2.0ディレクトリに移動します。
$ cd opendpi-1.2.0
パッチを適用します。
$ patch -p0 <../ ipq_main.h.diff
$ patch -p0 <../ ipq_protocols.h.diff
その後、環境変数を設定する必要があります。
$ export OPENDPI_PATH = $(pwd)
ラッパーディレクトリに移動します。
$ cd ../wrapper
カーネルサポート2.6.35にパッチを適用します(古いカーネルのサポートは壊れません)。 このパッチは、2.6.34と2.6.35のnetfilterのソースを比較して作成されました。 パッチはすでに開発者に送信されています。
このディスカッション
スレッドでオフサイトにダウンロードできます。
opendpi-netfilter-wrapper-1.1ディレクトリのあるレベルにパッチを置き、コマンドで使用します:
patch -p3 <../../ opendpi-netfilter-wrapper-1.1_2.6.35_v2.patch
次に、あなたがする必要があります:
$ make
#modules_installを作成
#cp ipt / libxt_opendpi.so / lib / xtables
これで、モジュールを使用できます。
#modprobe xt_opendpi
利用可能なオプションを確認します。
#iptables -m opendpi --help
実際に試してください:
#iptables -A出力-m opendpi --http -j DROP
#wget http://ya.ru/
--2010-11-12 20:57:41-- http://ya.ru/
213.180.204.3:80への接続...接続されました。
HTTP要求が送信され、応答を待っています... ^ C
考えられるアセンブリエラー:
- コンパイラが生成された/ *。Hファイルを見つけることができないと不平を言う場合、カーネルヘッダーがありません。 また、カーネルソースのあるディレクトリを
make clean
した可能性もあります。 - modprobeでエラーが発生した場合
致命的:xt_opendpi(/lib/modules/2.6.34-gentoo-r12/extra/xt_opendpi.ko)の挿入エラー:デバイスまたはリソースがビジーです
カーネルで正しいオプションを設定しなかったことを意味します(上記を参照)
/opendpi/opendpi-netfilter-wrapper-1.1/wrapper/src/main.c:466:エラー:不完全型へのポインターの逆参照
次に、カーネル2.6.35以降を使用している可能性があります。 上記の記事で指定されたパッチを適用する必要があります。
GentooのEbuildは
こちらに投稿され
ました 。
UPD:サポートされているプロトコルの宣言リスト:
opendpi match options:
--ftp Match for FTP protocol packets.
--pop Match for Mail_POP protocol packets.
--smtp Match for Mail_SMTP protocol packets.
--imap Match for Mail_IMAP protocol packets.
--dns Match for DNS protocol packets.
--ipp Match for IPP protocol packets.
--http Match for HTTP protocol packets.
--mdns Match for MDNS protocol packets.
--ntp Match for NTP protocol packets.
--netbios Match for NETBIOS protocol packets.
--nfs Match for NFS protocol packets.
--ssdp Match for SSDP protocol packets.
--bgp Match for BGP protocol packets.
--snmp Match for SNMP protocol packets.
--xdmcp Match for XDMCP protocol packets.
--smb Match for SMB protocol packets.
--syslog Match for SYSLOG protocol packets.
--dhcp Match for DHCP protocol packets.
--postgres Match for PostgreSQL protocol packets.
--mysql Match for MySQL protocol packets.
--tds Match for TDS protocol packets.
--ddl Match for DirectDownloadLink protocol packets.
--i23v5 Match for I23V5 protocol packets.
--apple Match for AppleJuice protocol packets.
--directconnect Match for DirectConnect protocol packets.
--socrates Match for Socrates protocol packets.
--winmx Match for WinMX protocol packets.
--manolito Match for MANOLITO protocol packets.
--pando Match for PANDO protocol packets.
--filetopia Match for Filetopia protocol packets.
--iMESH Match for iMESH protocol packets.
--kontiki Match for Kontiki protocol packets.
--openft Match for OpenFT protocol packets.
--fasttrack Match for Kazaa/Fasttrack protocol packets.
--gnutella Match for Gnutella protocol packets.
--edonkey Match for eDonkey protocol packets.
--bittorrent Match for Bittorrent protocol packets.
--off Match for OFF protocol packets.
--avi Match for AVI protocol packets.
--flash Match for Flash protocol packets.
--ogg Match for OGG protocol packets.
--mpeg Match for MPEG protocol packets.
--quicktime Match for QuickTime protocol packets.
--realmedia Match for RealMedia protocol packets.
--windowsmedia Match for Windowsmedia protocol packets.
--mms Match for MMS protocol packets.
--xbox Match for XBOX protocol packets.
--qq Match for QQ protocol packets.
--move Match for MOVE protocol packets.
--rtsp Match for RTSP protocol packets.
--feidian Match for Feidian protocol packets.
--icecast Match for Icecast protocol packets.
--pplive Match for PPLive protocol packets.
--ppstream Match for PPStream protocol packets.
--zattoo Match for Zattoo protocol packets.
--shoutcast Match for SHOUTCast protocol packets.
--sopcast Match for SopCast protocol packets.
--tvants Match for TVAnts protocol packets.
--tvuplayer Match for TVUplayer protocol packets.
--veohtv Match for VeohTV protocol packets.
--qqlive Match for QQLive protocol packets.
--thunder Match for Thunder/Webthunder protocol packets.
--soulseek Match for Soulseek protocol packets.
--gadugadu Match for GaduGadu protocol packets.
--irc Match for IRC protocol packets.
--popo Match for Popo protocol packets.
--jabber Match for Jabber protocol packets.
--msn Match for MSN protocol packets.
--oscar Match for Oscar protocol packets.
--yahoo Match for Yahoo protocol packets.
--battlefield Match for Battlefield protocol packets.
--quake Match for Quake protocol packets.
--secondlife Match for Second Life protocol packets.
--steam Match for Steam protocol packets.
--hl2 Match for Halflife2 protocol packets.
--worldofwarcraft Match for World of Warcraft protocol packets.
--telnet Match for Telnet protocol packets.
--stun Match for STUN protocol packets.
--ipsec Match for IPSEC protocol packets.
--gre Match for GRE protocol packets.
--icmp Match for ICMP protocol packets.
--igmp Match for IGMP protocol packets.
--egp Match for EGP protocol packets.
--sctp Match for SCTP protocol packets.
--ospf Match for OSPF protocol packets.
--ipip Match for IP in IP protocol packets.
--rtp Match for RTP protocol packets.
--rdp Match for RDP protocol packets.
--vnc Match for VNC protocol packets.
--pcanywhere Match for PCAnywhere protocol packets.
--ssl Match for SSL protocol packets.
--ssh Match for SSH protocol packets.
--usenet Match for USENET protocol packets.
--mgcp Match for MGCP protocol packets.
--iax Match for IAX protocol packets.
--tftp Match for TFTP protocol packets.
--afp Match for AFP protocol packets.
--stealthnet Match for StealthNet protocol packets.
--aimini Match for Aimini protocol packets.
--sip Match for SIP protocol packets.
--truphone Match for Truphone protocol packets.