OpenDPI(トラフィックタイプ検出)+ iptables

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には、 READMEipq _ *。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 




考えられるアセンブリエラー:



 致命的: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.







All Articles