Child pages
  • Netblock DPI

Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 11 Current »


Возможности

Реализация Netblock DPI базируется на использовании libnetfilter_queue + nDPI

Позволяет блокировку следующими методами :

  • блокировка по связке ip:port
  • блокировка по доменному имени (DNS)
  • блокировка по URL
  • блокировка HTTPS
  • блокировка дополнительных портов (nDPI)
  • производить перенаправление в случае блокировки


Установка Linux (на примере Debian 9)

  • Подгтотавливаем систему, устанавливаем необходимые библиотеки

    apt-get zip install autoconf libtool libpoconet46 g++ libnetfilter-acct-dev libnetfilter-conntrack-dev libnetfilter-cthelper0-dev libnetfilter-cttimeout-dev libnetfilter-log-dev libnetfilter-queue-dev
  • Скачиваем и устанавливаем nfq

    wget https://github.com/max197616/nfqfilter/archive/master.zip
    unzip master.zip
    cd nfqfilter-master
    ./autogen.sh
    ./configure
    make && make install
    cp src/nfqfilter /usr/local/sbin/
    touch /var/log/nfqfilter.log
  • Настраиваем конфиг  ( /etc/nfq/nfq.ini ), пример :

    ; номер очереди
    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 = https://127.0.0.1:9443/
    ; дополнительные порты для протоколов (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
  • В iptables создаём :

    iptables -t mangle -N NETBLOCK_DPI
    iptables -t mangle -A NETBLOCK_DPI -m connbytes --connbytes-mode bytes --connbytes-dir both --connbytes 100000 -j RETURN
    iptables -t mangle -A NETBLOCK_DPI -p tcp --dport 80 -j NFQUEUE --queue-num 0
    iptables -t mangle -A NETBLOCK_DPI -p tcp --dport 443 -j NFQUEUE --queue-num 0
    
    ipset -N NETBLOCK_DPI_SSL
    iptables -A FORWARD -m mark --mark 10 =p tcp -j REJECT --reject-with tcp-rst
    iptables -A FORWARD -m set --match-set NETBLOCK_DPI_SSL dst -p tcp -j REJECT --reject-with tcp-rst
    
    iptables -t mangle -A PREROUTING -j NETBLOCK_DPI
  • Запускаем следующим образом (daemonize, PID location, config location) :

    /usr/local/sbin/nfqfilter --daemon --pidfile=/var/run/nfqfilter.pid -c /etc/nfq/nfq.ini 

Использование в связке с Abills

  • Скачиваем и инициализируем блок-лист UABlock (например), или настраиваем нужные нам блокировки с помощью админки ( Интерфейс управления ресурсами блокировки )

    /usr/abills/libexec/billd netblock TYPE=uablock FETCH=1 INIT=1
  • В конфигурационном файле /usr/abills/libexec/config.pl указываем параметры для установленного nfq :

    # директория с конфигурационными файлами
    $conf{NETBLOCK_NFQ_ETC} = "/etc/nfq/"
    # restart command line
    $conf{NETBLOCK_NFQ_RESTART} = "/usr/local/sbin/nfqfilter --daemon --pidfile=/var/run/nfqfilter.pid -c /etc/nfq/nfq.ini";
    
  • Запускаем блокировку :

    /usr/abills/libexec/billd netblock TYPE=uablock ACTIVE_BLOCK=1  DPI_BLOCK=1


  • No labels