Giter Site home page Giter Site logo

carbonsoft / reductor_satellite_installer Goto Github PK

View Code? Open in Web Editor NEW
11.0 14.0 3.0 94 KB

Установщик системы выгрузки единого реестра запрещённых сайтов и проверки фильтрации трафика проектом Carbon Reductor

Shell 63.89% Python 36.11%
rkn dpi carbonsoft isp russian bash carbon-reductor satellite dns http

reductor_satellite_installer's Introduction

Carbon Reductor Satellite (установщик)

! Внимание - ни в коем случае не устанавливайте на систему на которую уже установлен Carbon Reductor, это приведёт к его поломке.

Сценарии использования

  1. Система выгрузок единого реестра(обычно используется для перестраховки).

  2. Мониторинг фильтрации трафика Carbon Reductor, в случае если подключен в сеть как обычный абонент.

Использование в качестве системы выгрузок единого реестра

  1. Устанавливаем CentOS, например на отдельную виртуальную машину (много ресурсов не требуется)
  2. Клонируем репозиторий reductor_satellite_installer и запускаем установку
  3. Выполняем настройку Satellite, а именно заполняем конфигурационный файл и выбираем тип выгрузок(команда menu)
  4. Проверяем работу выгрузок
  5. Радуемся жизни

Использование в качестве мониторинга фильтрации трафика Carbon Reductor

  1. Устанавливаем CentOS, например на отдельную виртуальную машину (много ресурсов не требуется)
  2. Клонируем репозиторий reductor_satellite_installer и запускаем установку
  3. Выполняем настройку Satellite, а именно заполняем конфигурационный файл и выбираем тип выгрузок(команда menu)
  4. Проверяем работу выгрузок
  5. Прописываем запуск по cron-у скрипта filter_checker.sh
  6. Проверяем отчет о фильтрации Carbon Reductor и радуемся жизни

Более подробная документация по установке на нашем сайте

Фишки

  • Повторная выгрузка при неудаче;
  • Уведомления при повторной неудаче;
  • Уведомления при устаревании списков на 6+ часов;
  • GostSSL в комплекте;
  • Установка одной командой;
  • Поддерживает настройку из бэкапа с Carbon Reductor (подхват конфига и сертификата);
  • Не требует ручной установки дополнительных пакетов;
  • Позволяет производить проверку фильтрации трафика в автоматическом режиме с отчётами на почту;
  • Может работать не только на железе/KVM/XEN/VMWare, но и в контейнерах LXC/OpenVZ;
  • Достаточно 256мб оперативной памяти и 1 ядра процессора.
  • Позволяет проверять работу блокировок HTTP, HTTPS, DNS и IP ресурсов без отправки отчёта в РКН
  • Позволяет совершать быструю частичную проверку чтобы быстро оценить текущее состояние работы фильтрации

Установка

На сервере, на который будет установлен Carbon Reductor Satellite выполняем:

yum -y install git
git clone https://github.com/carbonsoft/reductor_satellite_installer.git /opt/reductor_satellite_installer/
/opt/reductor_satellite_installer/install.sh

Настройка

Запустите эту команду, включите обновление списков, укажите название компании, инн, огрн и почту для того чтобы выгрузки работали:

/opt/reductor_satellite/bin/setup_master.sh

затем подложите в /opt/reductor_satellite/userinfo/provider.pem экспортированный сертификат для работы выгрузок. Этого должно быть достаточно чтобы выгрузка работала.

Настройка проверки фильтрации трафика

Для проверки 4 раза в день, добавьте в /etc/crontab строчку:

0 0,6,12,18 * * * root /opt/reductor_satellite/bin/filter_checker.sh &>/dev/null

Или, если вам интересны логи (не забудьте проверить, что логи действительно пишутся):

0 0,6,12,18 * * * root /opt/reductor_satellite/bin/filter_checker.sh &>>/var/log/filter_checker.log

Подробнее о том, как настроить время запуска проверки можно прочитать здесь:

man 5 crontab

Специфика провайдера

Также можно и нужно указать специфичные для satellite опции в файле /etc/sysconfig/satellite (если файл отсутствует - его надо создать), это:

  • DNS_IP - IP адрес используемой страницы-заглушки. Обязательно.
  • MARKER - текст, по которому можно определить, что открылась именно страница заглушка. Необязательно.
  • http - файл со списком HTTP URL для проверки. Необязательно, нужно только для переопределения.
  • https - файл со списком HTTPS URL для проверки. Необязательно, нужно только для переопределения.
  • dns - файл со списком доменов, которые надо блокировать. Необязательно, нужно только для переопределения.
  • ip - файл со списком ip-адресов, которые надо блокировать. Необязательно, нужно только для переопределения.
  • admin['email'] - отдельный список email'ов для отправки отчётов о фильтрации (если не хотите чтобы они приходили на почту указанную для выгрузки)

Пример:

DNS_IP="1.2.3.4"
MARKER="<title>Доступ ограничен</title>"
#dns="/root/my.domains.txt"
#Пример заполнения, в случае использования раскомментировать
declare -A admin
admin['email']='[email protected] [email protected]'

Сохранять выгруженные реестры

Запускайте по cron'у /opt/reductor_satellite/bin/keep_dumps.sh

Если необходимо подстроить формат именования файла под себя, можете заглянуть в него, он довольно простой.

Проверка работоспособности

/opt/reductor_satellite/bin/update.sh

Цена

Абсолютно бесплатно, но поддержка оказывается только при наличии лицензии Carbon Reductor (любое SLA).

Поддерживаемые ОС

Только CentOS 6. В теории должны работать любые современные RHEL-based дистрибутивы, но их не тестировали. Можно легко крутить в виртуальных машинах и контейнерах (lxc, openvz)

FAQ:

Как забрать списки с satellite

Список подкладывается в файл:

/opt/reductor_satellite/reductor_container/gost-ssl/php/dump.xml

Вы можете установить и настроить на этом же сервере vsftpd, nginx или закинуть ключи ssh и забирать этот список с помощью SCP или забирать файл любым другим удобным способом - вы полностью свободны в выборе удобного для Вас средства, а satellite - инструмент, хорошо выполняющий свою задачу - выгрузку реестра.

Как обновить Carbon Reductor Satellite

Правильного способа пока нет. Временное решение:

/opt/reductor_satellite_installer/update.sh

Можно явно задать URL RPM-пакета

cd /opt/reductor_satellite_installer
RPM_URL=http://download5.carbonsoft.ru//reductor/master/reductor-711-107-master.el6.x86_64.rpm ./update.sh

или

cd  /opt/reductor_satellite_installer
RPM_URL=http://download5.carbonsoft.ru//reductor/devel/reductor.rpm ./update.sh

Для обновления скриптов проверки фильтрации можно обойтись:

cd /opt/reductor_satellite_installer/
git pull origin master
./install.sh copy_contrib

Как запустить быструю проверку по случайным доменам?

LIMIT=300 /opt/reductor_satellite/bin/filter_checker.sh

где LIMIT - число URL, доменов для каждого вида проверки.

Также можно указать конкретный вид проверяемой фильтрации:

LIMIT=100 /opt/reductor_satellite/bin/filter_checker.sh dns

Можно ограничить проверку конкретным файлом:

http=/root/unblocked_http_urls.txt /opt/reductor_satellite/bin/filter_checker.sh http

или несколькими файлами:

dns=/root/unblocked_domains.txt http=/root/unblocked_http_urls.txt ip=/root/unblocked_ip.txt /opt/reductor_satellite/bin/filter_checker.sh http dns ip

Какие известные минусы имеются у программы

  • Отсутствие веб-интерфейса;
  • Отсутствие автоматического обновления.

reductor_satellite_installer's People

Contributors

hordecore avatar meltthebase avatar nick-carbonsoft avatar strizhechenko avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

reductor_satellite_installer's Issues

Проблема с inodes

Добрый день !

Скрипты сателлита, работающие в системе, захламляют каталог TMPDIR=/tmp/filter_check/
создавая там кучу мелких файлов.

Основная проблема в том, что если система работает 5+ месяцев, то в этом каталоге будет миллионов 10-15 файлов, которые занимают и соответствующее количество inodes.

Мало того, что система будет тупить и сигнализировать, что inodes заканчиваются, так и еще когда проблема всплывёт наружу, то и удалить их будет проблематично.

Удаление 14,5 миллионов файлов заняло 23 часа.

Пожалуйста, обратите внимание на это !

Как указать параметр IP сателлита?

Устанавливаю по инструкции. Зашел на сервер с КарбонРедуктором, склоинировал репоиторий, н не понимаю как выполнить этот пункт:

  1. Запускаем скрипт установки с параметром - ip новой машины, где будет стоять satellite

Пробовал по-всякому, не работает:

[root@carbon-reductor reductor_satellite_installer]# ./install.sh 192.168.235.68 ./install.sh: line 128: 192.168.235.68: команда не найдена [root@carbon-reductor reductor_satellite_installer]# ./install.sh --ip 192.168.235.68 ./install.sh: line 128: --ip: команда не найдена [root@carbon-reductor reductor_satellite_installer]# ./install.sh -ip 192.168.235.68 ./install.sh: line 128: -ip: команда не найдена [root@carbon-reductor reductor_satellite_installer]#

Улучшить параллельную обработку

checker() {
        local func proto list
        func=$1
        proto=$2
        list="${3:-${lists[$proto]}}"
        echo "~]а~Gинаем п~@ове~@~O~B~L ~Dил~L~B~@а~Fи~N п~@о~Bокола $proto по ~Dайл~C $list"
        sleep 0.5
        sort -u "$list" > "$list.sorted"
        mv -f "$list.sorted" "$list"

        while true; do
                trap "kill 0" EXIT
                for thr_num in $(seq 1 $THREADS); do
                        (
                        i=0
                        while read -t 1 entry; do
                        i=$((i+1))
                        $func "$entry" "$proto"
                        if [ "$((i%100))" == "0" ]; then
                                echo "$thr_num"
                                show_report "$proto"
                        fi
                        done
                        )&
                done
                wait
                show_report "$proto"
                break
       done < "$list"
}

Необходимо отключить использование hsts wget-ом

В файле filter_checker.sh заменить 46-ю строчку с

WGET="/usr/local/bin/wget --content-on-error --no-check-certificate -t 1 -T 10 -q -O-"

на

WGET="/usr/local/bin/wget --content-on-error --no-check-certificate --no-hsts -t 1 -T 10 -q -O-"

Из отчета о незаблокированных пропадет ютуб.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.