The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Использование L7-filter в Linux
Проект l7-filter (http://l7-filter.sf.net) дает возможность Netfilter
идентифицировать пакет на прикладном уровне данных, основываясь на его
содержимом, и классифицировать пакеты по их назначению, без привязки к номеру
порта. В настоящее время поддерживаются протоколы HTTP и FTP; P2P сети (Kazaa,
BitTorrent, eDonkey2000, FastTrack); IM-системы (AIM/Jabber/IRC/MSN);
VoIP/Skype; VPN; игры (Battlefield, CS, Doom3, WoW); файлы (exe, mp3) и даже
сетевые черви - Code Red и Nimda.

Проект предлагает две версии L7-filter:

* Kernel version - развивается уже давно и хорошо протестирована, немного
сложна в установке, не очень дружит с SMP-процессорами и позволяет использовать
только самые простые регулярные выражения;

* Userspace version - находится в ранней стадии развития, и, возможно, в
будущем будет поддерживаться только эта версия, обладает большими возможностями
по фильтрации, так как поддерживает весь спектр команд GNU grep. Несмотря на
то, что userspace стабилен в работе, этот вариант не рекомендуют использовать
на критических системах и для блокировки трафика.

В дальнейшем рассмотрим установку kernel варианта l7-filter, который затем
дополним IPP2P. Данный способ потребует пересборки ядра.
Для успешного проведения сборки в твоей системе должны быть установлены пакеты
build-essential, iptables, iptables-dev и linux-source. Берем настройки
текущего ядра, которые будем использовать как базовые, и копируем текущую
конфигурацию в /usr/src/linux:

   sudo cp /boot/config-`uname -r` /usr/src/linux/.config

Получаем архив с патчами для ядра с сайта L7-filter, распаковываем его и
переходим в каталог с сырцами ядра:

   tar xzvf netfilter-layer7-v2.21.tar.gz
   $ cd /usr/src/linux

В архиве несколько патчей для разных версий ядер и iptables, нужно выбрать вариант для своего ядра:

   $ sudo patch -p1 < ../netfilter-layer7-v2.21/for_older_kernels/kernel-2.6.22-2.6.24-layer7-2.18.patch

Теперь аналогично патчим iptables, выбрав также свою версию:

   $ cd ../iptables
   $ iptables -v
   iptables v1.3.8
   $ sudo patch -p1 < ../netfilter-layer7-v2.21/iptables-1.3-for-kernel-2.6.20forward-layer7-2.21.patch
   $ sudo chmod +x extensions/.layer7-test

Собираем iptables:

   $ make KERNEL_DIR=/usr/src/linux
   $ sudo make install

Конфигурируем и компилируем ядро:

   $ sudo make menuconfig

Переходим в "Networking - Networking option - Network packet filtering
framework(Netfilter) - Core Netfilter Configuration", где активируем
"Connection tracking flow accounting" и "Layer 7 match support".

Cтавим фильтры протоколов, фактически они просто копируются в каталог /etc/l7-protocols:

   $ tar xzvf l7-protocols-2009-05-28.tar.gz
   $ cd l7-protocols-2009-05-28/
   $ sudo make install

После перезагрузки можно проверить работу фильтра. Команда "iptables -m layer7
--help" выдаст список параметров. Например, чтобы заблокировать BitTorrent, AIM
и Skype, пишем:

   iptables -A FORWARD -m layer7 --l7proto bittorrent -j DROP
   iptables -A FORWARD -m layer7 --l7proto aim -j DROP
   iptables -A FORWARD -m layer7 --l7proto skypetoskype -j DROP
   iptables -A FORWARD -m layer7 --l7proto skypeout -j DROP

То есть ищем в списке название протокола и производим нужное действие.
 
01.12.2009 , Автор: Сергей Яремчук , Источник: http://www.tux.in.ua/articles/1712...
Ключи: l7, netfilter, linux
Раздел:    Корень / Администратору / Сетевая подсистема, маршрутизация / Пакетные фильтры и фаерволы / Пакетные фильтры в Linux: iptables, ipchains

Обсуждение [ Линейный режим | Показать все | RSS ]
  • 1.1, Salvator (?), 12:47, 01/12/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    шифрованный bittorrent как я понимаю, не умеет?
     
     
  • 2.2, User294 (ok), 19:13, 01/12/2009 [^] [^^] [^^^] [ответить]  
  • +/
    Дык шифрование специально от таких умников и сделали. Некоторые особо хитрожопые научились его детектить иными методами, но, знаете, как говорится - "а будет мало - добавим".
     
     
  • 3.4, СуперАноним (?), 00:05, 02/12/2009 [^] [^^] [^^^] [ответить]  
  • +/
    Для умников применяющих шифрование именно с этой целью. С помощью QoS можно, например, отправлять любой неиндентифицированный трафик в самую низкоприоритетную очередь, т.е. по остаточному принципу.
     
     
  • 4.8, User294 (ok), 14:14, 02/12/2009 [^] [^^] [^^^] [ответить]  
  • +/
    > т.е. по остаточному принципу.

    Можно. Только вот:
    1) Протоколов на свете много и все их вы классифицировать слегка заколебетесь. А когда у ваших клиентов начнут сосуче работать игры, чаты/IM и прочие скайпы и что там у них еще - клиенты начнут вас посылать на ... и в ... за дефективный интернет, если вы не расширите каналы :).А если расширите - так трах с резкой P2P становится излишним.Каналов или хватает или нет.
    2) А если такое обнагление продолжится в достаточном объеме - ну так закосить под VoIP,  IM протоколы, HTTP, да хоть черта лысого. Протоколам в конечном итоге глубоко похрену какие именно данные там внутрях передаются - сайт васи пупкина или же блок P2P раздачи на много гигз. Как вам например идея "распределенный HTTP"? Каждый клиент - небольшой HTTP сервер до кучи, файло как обычно режется на блоки, каждый клиент фигачит HTTP GET с RANGEом, ответ - 206 partial content с блоком(ами) файла. А то что оно где-то там добавочно проверится на хэш и прочая - откуда ж вам знать? :P. Вы как, резанете клиентам HTTP-даунлоады? Так у них тогда все писькомеры покажут что вы им интернета недодаете :)))

     
     
  • 5.9, Гриша (?), 02:37, 03/12/2009 [^] [^^] [^^^] [ответить]  
  • +/
    Неверных провайдеров надо публично и черенком от лопаты, это понятно.

    Но польза от этого инструмента тоже есть: блокирование активности червей. Это конечно, если он действительно будет эффективен, а то ведь и черви могут под HTTP маскироваться, от регэкспов шифрованием спасаться и т. д.

     
     
  • 6.10, User294 (ok), 19:43, 03/12/2009 [^] [^^] [^^^] [ответить]  
  • +/
    Могут. И маскируются. Знаете как вирье плюют на фаерволы и прочих супер-касперских? А они просто просят сам IE укачать им "вон ту длинную урлу". А в урле - пароли лоха скажем закодированы на самом деле как параметры. А так - легитимный HTTP запрос, комар носа не подточит. А уж если абузивно использовать хороший инструмент во вред, ALL озаботится противодействием. Например, если я у *себя* в сети которой я владею придавлю на своих системах приоритет моего торент трафика так чтобы остальное было приоритетнее, я в своем праве и никто не будет возражать (жаловаться на самого себя как-то странно :D).А если кто будет наглеть с классификацией *чужого* траффа - так остальные озаботятся вопросом как сорвать оную. И в конечном итоге - данные можно кодировать зиллионами способов. Вон из 1 и 0 сколько всего делают. А всего-то 2 значения передается. В какомнить HTTP выбор на порядки больше и уж наверное в нем можно закодировать *любые* данные в результате :).В этом месте любителей файрволинга всего чего попало и классифежки ждет небольшое но досадное обломинго.
     

  • 1.3, Аноним (-), 20:51, 01/12/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А во фряхе есть аналоги?
     
     
  • 2.6, Александр (??), 10:34, 02/12/2009 [^] [^^] [^^^] [ответить]  
  • +/
    Недолгий поиск дает, напр.:
    http://www.opennet.me/openforum/vsluhforumID3/43131.html

    :)

    Первый же коммент к приведенной новости порадовал - тоже человек не напрягся погуглить :)

     

  • 1.5, FrBrGeorge (ok), 00:35, 02/12/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > не очень дружит с SMP-процессорами

    Что сие значит?

     
     
  • 2.7, Аноним (-), 10:55, 02/12/2009 [^] [^^] [^^^] [ответить]  
  • +/
    будет грузить один проц или ядро
     
     
  • 3.11, FrBrGeorge (ok), 00:19, 04/12/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >> не очень дружит с SMP-процессорами
    >будет грузить один проц или ядро

    Оба высказывания друг друга стоят :(

     
     
  • 4.13, XoRe (ok), 18:48, 05/12/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >>> не очень дружит с SMP-процессорами
    >>будет грузить один проц или ядро
    >
    >Оба высказывания друг друга стоят :(

    Не ну в принципе, выражение "не очень дружит" довольно многозначно.
    В том числе может означать и использование только 1 проца в 1 момент времени.

     
     
  • 5.14, FrBrGeorge (ok), 01:41, 06/12/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >>>> не очень дружит с SMP-процессорами
    >>>будет грузить один проц или ядро
    >>Оба высказывания друг друга стоят :(
    >Не ну в принципе, выражение "не очень дружит" довольно многозначно.
    >В том числе может означать и...

    Ага, а слово "ядро" тоже довольно многозначно :)
    А всего-то надо было -- это зайти на домашнюю страничку и прочитать там 3 вещи:

    - Kernel version. This version is old and well tested, but it is complicated to install and seems to cause SMP systems to crash. It can only use fairly simple regular expressions

    - By Dec 2006, we had realized that working anywhere in kernel space was not the brightest idea

    - l7-filter is currently not being actively maintained.

     


     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру