Приложение для выгрузки реестров РосКомНадзора операторами связи.
Поддерживаются:
- Единый реестр доменных имён, указателей страниц сайтов в сети «Интернет» и сетевых адресов, позволяющих идентифицировать сайты в сети «Интернет», содержащие информацию, распространение которой в Российской Федерации запрещено - Приказ Роскомнадзора от 14.12.2017 № 249, Приказ Роскомнадзора от 21.02.2013 № 170
- Перечень отечественных социально значимых информационных ресурсов в информационно-телекоммуникационной сети «Интернет» — Приказ Минкомсвязи России от 31.03.2020г. № 148
- Уведомления в Telegram об ошибках выгрузки
Потребуется любой Linux (Centos, Ubuntu, etc) с установленным docker или Windows с Docker Desktop. Для Windows путь к каталогу с данными указывается через «\».
- Создать каталог для данных, например
/opt/rknd/data
- Поместить в этот каталог файлы запроса на выгрузку -
request.xml
и откреплённой цифровой подписиrequest.xml.p7s
. Цифровую подпись можно сделать в программах Крипто-Про или Крипто-АРМ. - Запустить docker-контейнер.
Приложение проверяет доступность нового файла реестра раз в 30 минут. Если доступна новая версия реестра - она скачивается и помещается в каталог data
.
В результате в каталоге data появятся файлы:
latest.zip
- Запрещённые сайтыlatest-soc.zip
- Социально значимые сайтыsocial-ips.txt
- Текстовый список IP-адресов сетей социально значимых сайтовmikrotik-social.rsc
- Скрипт для Mikrotik RouterOS, обновляющий address-list в фаерволеlastdumpdate
- Файл с информацией о пооследней успешной выгрузке реестраinfo.rrd
- Файл со статистической информацией (rrdtool)stat.png
- График, на котором отображается количество IP-адресов из реестра СЗР
Возможен запуск нескольких контейнеров, если у вас несколько организаций-операторов, просто запустите несколько экземпляров контейнера, указав разные каталоги data
в опции -v
Рекомендуется использовать именно этот способ. Он проще в обновлении.
- Копируем содержимое файла docker-compose-example.yml в файл docker-compose.yml
- Редактируем файл docker-compose.yml, изменяя необходимые значения
- Запускаем:
$ docker-compose pull $ docker-compose up -d
Для обновления версии приложения выполните команлы из шага 3 еще раз.
Приложение может присылать уведомления об ошибках загрузки, а также об приближающемся окончании срока действия цифровой подписи.
- Создаём нового бота в Telegram через бота @BotFather или используем ранее созданного. Нужно выяснить токен - секретный ключ, чтобы приложение могло отправлять уведомления через бота.
- Выясняем свой идентификатор чата. Это можно сделать через существующих ботов (например @getmyid_bot). Если хотите чтобы бот отправлял сообщения в канал или общий чат - используйте ID этого канала или чата.
- Для docker-compose - указываем эти параметры в переменных среды TELEGRAM_BOT_TOKEN и TELEGRAM_CHAT_ID в секции environment файла конфигурации docker-compose.yml.
- Для получения уведомлений не только об ошибках, но и об успешной выгрузке, установите значение переменной TELEGRAM_NOTIFY_ON_SUCCESS равным 1. Если вы хотите получать уведомления только об ошибках - установите значение равным 0.
На случай если вы не хотите использовать docker-compose.
$ docker run -d --restart=always -v /opt/rknd/data:/app/data tcsmr/rknd
$ docker run -d --restart=always -v D:\rknd\data:/app/data tcsmr/rknd
$ docker run -d \
-e TELEGRAM_BOT_TOKEN="секретный-токен" \
-e TELEGRAM_CHAT_ID="идентификатор-чата-telegram" \
--restart=always \
-v /opt/rknd/data:/app/data \
tcsmr/rknd
Для начала, выясняем container id запущенного контейнера, либо можем обратиться к нему по имени, если задали его при запуске с помощью опции --name
$ docker ps
CONTAINER ID IMAGE COMMAND
b3a85085d43e tcsmr/rknd "sh docker-entrypoin…"
Просмотр журнала:
$ docker logs b3a85085d43e
Пригодится, если вы хотите самостоятельно собрать Docker-образ из исходников.
Скачиваем исходники в виде ZIP-архива или git'ом:
$ git clone https://github.com/k0ldbl00d/rkndownloader.git
Переходим в каталог rkndownloader и собираем образ:
$ docker build -t tcsmr/rknd .
Формирование plain-text списка IP-адресов и подсетей для реестра социально значимых ресурсовФормирование скрипта для Mikrotik RouterOSУведомления в Telegram об ошибках обновленияУведомление об истечении срока действия цифровой подписи