LINUX.ORG.RU

Избранные сообщения SUN5H1N3

nDPI как замена l7filter [продолжение2]

Форум — Admin

Продолжение предыдущей темы

Оригинальный рецепт для тех кто умеет самостоятельно прикладывать патчи и собирать ядра/софт.

Отдельно и более подробно для Ubuntu и CentOS от as_lan

В понятиях netfilter оно умеет проверять пакеты на принадлежность к протоколам (match) и ставить на пакеты метки/классы (target) по аналогии с MARK & CLASSIFY. Есть поддержка NET_NS и IPv6.

Исходники теперь только на Github!

Ветка netfilter основана на nDPI-1.7.

От основной ветки на github/ntop/nDPI/1.7-stable отличается меньшим потреблением памяти и «улучшением» определения bittorrent.

Ветка netfilter2 основана на nDPI-2.0

Ветка netfilter-2.2 основана на nDPI-2.3(dev)

Ветка netfilter-2.6 основана на nDPI-2.6

Ветка flow основана на nDPI-2.6 nDPI-2.8

Продолжается тестирование ветки.

информации о соединении:

  • время создания коннекта и время последнего обновления.
  • протокол L3 и L4
  • адрес источника ipv4/6
  • порт источника (если есть)
  • адрес назначение ipv4/6
  • порт назначения (если есть)
  • счетчики пакетов и байтов в обе стороны
  • интерфейсы
  • обнаруженный протокол (nDPI)
  • имя сертификата SSL
  • имя хоста (для http,dns)
  • информация о nat ipv4 (если применялся)

В некоторых случаях можно будет отказаться от ipt_NETFLOW.

 , ,

vel
()

Soft switch/router VPP

Новости — Open Source
Группа Open Source

Цель открытого проекта VPP — создание свича/маршрутизатора L2/L3+ с множеством функций, включая полноценный NAT, с высокой производительностью обрабатывающего сетевые пакеты при использовании обычного процессора за счёт векторной обработки данных (эта технология уже используется в новых промышленных сетевых устройствах). Проект ведётся Cisco, Pantheon Technologies и другими.

Продукт работает на Intel DPDK. Этот фрэймворк позволяет использовать сетевую карту Intel в обход ядра операционной системы.

Продукт не является стабильным; все отчёты об ошибках и запросы функциональности принимаются кураторами. Разработчики будут благодарны за тестирование.

>>> Страница VPP

>>> Страница DPDK

>>> Список рассылки

>>> Подробности

 , , , ,

init_
()

Установка и настройка nfq_filter

Форум — Admin

Сейчас я вам расскажу, что как-то на nag.ru пользователь под ником max1976 продолжил разработку nfq_filter. Я хочу заметить, что данная версия nfq_filter на много улучшена. Если сравнивать с оригинальным nfq_filter, то:

У данной версии повышенна производительность Не крошится speedtest Появилась блокировка сайтов ssl по CNAME Но, у данной программы есть несколько недостатков:

Сайт, на который идёт переадресация, должен быть в формате: http://blackhole.ne.vlezay80.lan/ Не блокирует сайты по ssl в старых браузерах и операционных системах (баг NDPI) Не блокирует сайты внутри прокси Нет поддержки IPv6 Кстати, если нужно блокировать запрещённые сайты из реестра, то этой программы будет вполне достаточно, так-как наше законодательство пока не предусматривает блокировку сайтов через открытые прокси сервера. Блокировка внутри прокси, это уже дурость провайдеров. Кстати, блокировку открытых прокси всегда можно реализовать, например через Suricat'у.
На счёт блокировки в IPv6: если очень надо, то это можно всегда в исходниках дописать.
Инструкция по установки

Нам понадобятся библиотеки:

libnetfilter_queue libnfnetlink Poco >= 1.6 nDPI = 1.7 Скачиваем и устанавливает первые две. (эти библиотеки есть в кажном современном репозитарии) Скачиваем ПОСЛЕДНЮЮ версию libpoco Скачиваем NDPI версии 1.7 Устанавливаем ndpi:

cd ./nDPI-1.7
./autogen.sh
make
make install
Устанавливаем libpoco:
cd ./poco-1.6.1
./configure
make
make install
Ставим сам nfqfilter:
cd ./nfq_filter
./configure
make
make install

Решение проблем
Если при установки возникает ошибка:
ndpi/ndpi_api.h: No sourch file fo directory
то в исходниках пропишите руками путь к библиотеке.
Использование Конфиг у данной программы имеет очень лёгкий сентекс:
; номер очереди
queue = 0
; файл с доменами для блокировки
domainlist = /etc/nfq/domains
; файл с url для блокировки
urllist = /etc/nfq/urls
; файл с ssl доменами для блокировки
ssllist = /etc/nfq/ssl_host
; файл с ip:port для блокировки
hostlist = /etc/nfq/hosts

; куда редиректить в случае наличия в списках
redirect_url = http://serv.mg/cgi/bl.cgi/?
; дополнительные порты для протоколов (nDPI)
protocols = /etc/nfq/protos
; время вывода статистики по использованию памяти, минут
statistic_interval = 10
; каким значением метить пакеты для iptables в случае наличия в списках ssl и hosts
mark_value = 10
; количество обрабатываемых пакетов (default: 1024)
 max_pending_packets = 100000

[logging]
loggers.root.level = information
;loggers.root.level = debug
loggers.root.channel = fileChannel
channels.fileChannel.class = FileChannel
channels.fileChannel.path = /var/log/nfqfilter.log
channels.fileChannel.rotation = 1 M
channels.fileChannel.archive = timestamp
channels.fileChannel.formatter.class = PatternFormatter
channels.fileChannel.formatter.pattern = %Y-%m-%d %H:%M:%S.%i [%P] %p %s - %t
channels.fileChannel.formatter.times = local
как видим, здесь всё понятно.
Запускаем данную программу так:
LD_LIBRARY_PATH=/usr/local/lib/ nfqfilter -c /etc/nfqfilter.ini
Далее в iptables создаём:
iptables -t mangle -N ZAPRET_GOV
iptables -t mangle -A ZAPRET_GOV -m connbytes --connbytes-mode bytes --connbytes-dir both --connbytes 100000 -j RETURN
iptables -t mangle -A ZAPRET_GOV -p tcp --dport 80 -j NFQUEUE --queue-num 0
iptables -t mangle -A ZAPRET_GOV -p tcp --dport 443 -j NFQUEUE --queue-num 0
В FORWARD:
iptables -A FORWARD -m mark --mark 10 =p tcp -j REJECT --reject-with tcp-rst
iptables -A FORWARD -m set --match-set zapret_gov_ssl_ip dst -p tcp -j REJECT --reject-with tcp-rst
iptables -t mangle -A PREROUTING -j ZAPRET_GOV

К самой программе можно прикрутить любой парсер реестра запрещённых сайтов.

Сама программа: https://github.com/max197616/nfqfilter

В комплекте также есть выгрузка реестра запрещённых сайтов (правда не первой свежести).

 , , , ,

ne-vlezay
()

nDPI как замена l7filter

Форум — General

Если кому интересно, то вот рецепт

На большом потоке ( >300мбит/с ) c большим числом протоколов (>20) используется примерно 40% одного ядра Intel(R) Xeon(R) CPU E31230@3.20GHz. Если поток больше или процессор слабее, то включаем RPS или используем сетевые карты с multi-queue и irq-affinity :)

Требуется много памяти. На каждое соединение расходуется примерно 800+264*0.7 байт.

Исходники теперь есть на https://github.com/vel21ripn/nDPI/tree/netfilter

 ,

vel
()