Меню Рубрики

Deep packet inspection linux

OpenDPI (определение типов трафика) + iptables

OpenDPI — библиотека для классификации трафика на основе технологии глубокого анализа пакетов (DPI — Deep Packet Inspection). Проект IPP2P более не поддерживается, и, в качестве замены, предлагает использовать именно OpenDPI. В отличие от IPP2P, основной целью которого является определение именно p2p трафика, OpenDPI поддерживает широкий набор различных протоколов. OpenDPI изначально спроектирован для очень низкого уровня ложных положительных срабатываний. В отличие от L7-filter не требует наложения патчей на iptables и ядро; работает в виде модуля ядра и библиотеки xtables. Также определения протоколов представляют собой не список регэкспов, а модули на C, что повышает быстродействие. Недавно для этой библиотеки была реализована поддержка iptables.
А теперь давайте попробуем использовать OpenDPI на практике.

Идем в раздел Downloads сайта проекта. Скачиваем файлы 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. Также необходимо, чтобы в ядре были выставлены определенные опции:

  • Опция Connection tracking events должна быть включена:
  • Опция Connection tracking netlink interface должна быть отключена:

Распакуйте 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, каталог wrapper и каталог opendpi-1.2.0. В каталоге opendpi-1.2.0 соответственно исходники OpenDPI. Ниже все описанные действия в виде команд:

Теперь переходите в каталог opendpi-1.2.0:

и применяйте патчи:

После этого необходимо установить переменную среды:

и перейти в каталог wrapper:

Теперь наложите патч для поддержки ядра 2.6.35 (поддержка старых ядер сломана не будет). Патч написал, посравнивав исходники netfilter в 2.6.34 и 2.6.35. Разработчикам патч уже отправлен, скачать его можно в этой ветке обсуждения на офсайте. Кладите патч на один уровень с каталогом opendpi-netfilter-wrapper-1.1 и применяйте его командой:

Затем нужно выполнить:

Теперь можно использовать модуль:

Изучите доступные опции:

Попробуйте в действии:

Возможные ошибки при сборке:

  • Если компилятор жалуется, что не может найти файлы generated/*.h, значит у вас нет заголовков ядра. Возможно также, что вы сделали make clean в каталоге с исходниками ядра.
  • Если при modprobe вы получаете ошибку

значит вы не выставили верные опции в ядре (см. выше)

  • Если вы получаете ошибку

значит вы скорее всего используете ядро 2.6.35 или выше. Необходимо наложить патч, указанный в статье выше.

Ебилд для Gentoo выложил тут.

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.

Источник

Deep packet inspection linux

If nothing happens, download GitHub Desktop and try again.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching Xcode

If nothing happens, download Xcode and try again.

Launching Visual Studio

Latest commit

Git stats

Files

Failed to load latest commit information.

README.md

nDPI® is an open source LGPLv3 library for deep-packet inspection. Based on OpenDPI it includes ntop extensions. We have tried to push them into the OpenDPI source tree but nobody answered emails so we have decided to create our own source tree

How To Compile nDPI

In order to compile this library do

To run tests do additionally:

Please note that the pre-requisites for compilation include:

  • GNU tools (autogen, automake, autoconf, libtool)
  • GNU C compiler (gcc)

How To Add A New Protocol Dissector

The entire procedure of adding new protocols in detail:

  1. Add new protocol together with its unique ID to: src/include/ndpi_protocol_ids.h
  2. Create a new protocol in: src/lib/protocols/
  3. Variables to be kept for the duration of the entire flow (as state variables) need to be placed in: src/include/ndpi_typedefs.h in ndpi_flow_tcp_struct (for TCP only), ndpi_flow_udp_struct (for UDP only), or ndpi_flow_struct (for both).
  4. Add a new entry for the search function for the new protocol in: src/include/ndpi_protocols.h
  5. Choose (do not change anything) a selection bitmask from: src/include/ndpi_define.h
  6. Add a new entry in ndpi_set_protocol_detection_bitmask2 in: src/lib/ndpi_main.c
  7. Set protocol default ports in ndpi_init_protocol_defaults in: src/lib/ndpi_main.c
  8. ./autogen.sh
  9. make
  10. make check

How to use nDPI to Block Selected Traffic

You can use nDPI to selectively block selected Internet traffic by embedding it onto an application (remember that nDPI is just a library). Both ntopng and nProbe cento can do this.

While we do our best to detect network protocols, we cannot guarantee that our software is error free and 100% accurate in protocol detection. Please make sure that you respect the privacy of users and you have proper authorization to listen, capture and inspect network traffic.

nDPI is a registered trademark in the US and EU.

About

Open Source Deep Packet Inspection Software Toolkit

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

  • Hp scanjet 4370 драйвер mac os
  • Hp scan for mac os
  • Hp laserjet p2035 драйвер mac os
  • Hp laserjet p1005 драйвер mac os
  • Hp laserjet m1120 mfp драйвер mac os