Выгрузка реестра запрещенных сайтов РосКомНадзора Howto

Большая часть взята отсюда
https://www.evernote.com/shard/s185/sh/ceb0b021-47e7-4c61-ab43-bc6db27fe919/c535b6e5047ec69d304519fe81c2c9ac?noteKey=c535b6e5047ec69d304519fe81c2c9ac&noteGuid=ceb0b021-47e7-4c61-ab43-bc6db27fe919

Установка:
iptables ipset

Блокировка выполняется с помощью iptables и утилиты ipset
в iptables установлено правило:

Которое берет ip адреса и списка «blacklist» ,созданного в ipset, и содержащего ip адреса для блокировки. ну и собственно дропает все пакеты проходящие через шлюз с этих ip

Работа с ipset:

Установка

В ipset нет таблиц, а есть set различных типов. Типы позволяют задавать ip адреса из определенной подсети (ipmap тип), связки ip адресов с MAC адресами (macipmap), порты из заданного диапазона (portmap), набор ip адресов или сетей (iphash, nethash), разные комбинации этих set-ов, или даже хранить ip адреса в set только определенное время (iptree). Более подробно советую посмотреть man ipset(8).

Для нашей задачи подходит тип iphash

Создаем (N -new) set с именем blacklist, и смотрим его содержимое:

Добавляем (A — add) ip адреса blacklist и смотрим (L — list) содержимое set:

Удаляем ip адреса из blacklist set (D — delete):

Проверяем, есть ли ip в blacklist set (T — test):

Удаляем все ip адреса из blacklist set (F — flush):

Удаляем сам set (X):

Правило в iptables имеет такой синтаксис:

модуль set (-m set), потом указали какое совпадение set использовать (—match-set blacklist). src — это флаг, который показывает какие ip сравнивать с set, src (source — источник) или dst (destination — назначение) . Если нужно проверить и src и dst, то флаг задается так src,dst.

openssl

На сервере создаем папку в корне: /gost-ssl
ставим openssl(1.0.1c) на этой версии точно работает:

Правим конфиг /gost-ssl/ssl/openssl.cnf

В самом верху, первой строкой пишем:

Далее добавляем в конец:

Далее проверяем работоспособность и наличие GOST (полный путь до openssl обязателен)

если используем руТокен (флешку с эцп), то необходимо средствами КриптоПро скопировать ключевой контейнер в реестр с возможность экспорта. Чудные товарищи из КриптоПро, ссылаясь на требования ФСБ, не поддерживают экспорт в формате PKCS#12 (сертификат + закрытый ключ), но экспорт осуществить можно при помощи: P12FromGostCSP.zip

Подключаем USB flash устанавливаем триал крипто-про -> запускаем -> владка сервис -> кнопка Просмотреть сертификаты в контейнере -> выбираем флешку -> ОК -> Установить

Пользуясь вышеуказанной утилитой выгружаем сертификат в формате PCKS#12 и кидаем его в /gost-ssl/rzs/

P12FromGostCSP -> Выбираем сертификат из списка (должен содержать название нашей организации) -> ОК -> сохраняем в нужную директорию

проверяем, что у нас нормальный (содержит сертификат и закрытый ключ) PKCS#12 командой:

конвертируем полученный на Windows PKCS#12 в PEM:

создаем XML файл запроса, согласно памятке оператора

и конфертируем его при помощи icov в СP1251:

подписываем xml файл нашим сертификатом:

скидываем в Windows и проверяем валидность на http://www.gosuslugi.ru/pgu/eds/

если все впоряде, то идем дальше…

Автоматизация:

Есть уже несколько наработок бравых парней сообщества.
Во всех случаях в системе не хватает необходимых компонентов

4. Ну и собственно SOAP, Syslog…у кого чего ) у меня лично их небыло

Берем скрипты из темы и кидаем их в /gost-ssl/rzs
Даем права на выполнение и добавляем в крон

Как работает скрипт:

block.sh удаляет файлы созданные при предыдущей выгрузке (dump.xml,dump.xml.sig,file.zip)
после этого запускает скрипт download.pl который создает и пописывает файл запроса
далее запускает скрипт download1.pl который отправляет файл запроса роскомнадзору и через минуту забирает архив с дампом
block.sh распаковывает файл архива и выбирает из него IP адреса, сохраняя в файл IP.txt
построчно выбирая ip из списка блочит их с помощью IP set

Коды скриптов:
block.sh

download.pl

#!/usr/bin/perl -w

download1.pl

Скрипт отправки почты:

 

Большая часть взята отсюда
https://www.evernote.com/shard/s185/sh/ceb0b021-47e7-4c61-ab43-bc6db27fe919/c535b6e5047ec69d304519fe81c2c9ac?noteKey=c535b6e5047ec69d304519fe81c2c9ac&noteGuid=ceb0b021-47e7-4c61-ab43-bc6db27fe919

Установка:
iptables ipset

Блокировка выполняется с помощью iptables и утилиты ipset
в iptables установлено правило:

Которое берет ip адреса и списка «blacklist» ,созданного в ipset, и содержащего ip адреса для блокировки. ну и собственно дропает все пакеты проходящие через шлюз с этих ip

Работа с ipset:

Установка

В ipset нет таблиц, а есть set различных типов. Типы позволяют задавать ip адреса из определенной подсети (ipmap тип), связки ip адресов с MAC адресами (macipmap), порты из заданного диапазона (portmap), набор ip адресов или сетей (iphash, nethash), разные комбинации этих set-ов, или даже хранить ip адреса в set только определенное время (iptree). Более подробно советую посмотреть man ipset(8).

Для нашей задачи подходит тип iphash

Создаем (N -new) set с именем blacklist, и смотрим его содержимое:

Добавляем (A — add) ip адреса blacklist и смотрим (L — list) содержимое set:

Удаляем ip адреса из blacklist set (D — delete):

Проверяем, есть ли ip в blacklist set (T — test):

Удаляем все ip адреса из blacklist set (F — flush):

Удаляем сам set (X):

Правило в iptables имеет такой синтаксис:

модуль set (-m set), потом указали какое совпадение set использовать (—match-set blacklist). src — это флаг, который показывает какие ip сравнивать с set, src (source — источник) или dst (destination — назначение) . Если нужно проверить и src и dst, то флаг задается так src,dst.

openssl

На сервере создаем папку в корне: /gost-ssl
ставим openssl(1.0.1c) на этой версии точно работает:

Правим конфиг /gost-ssl/ssl/openssl.cnf

В самом верху, первой строкой пишем:

Далее добавляем в конец:

Далее проверяем работоспособность и наличие GOST (полный путь до openssl обязателен)

если используем руТокен (флешку с эцп), то необходимо средствами КриптоПро скопировать ключевой контейнер в реестр с возможность экспорта. Чудные товарищи из КриптоПро, ссылаясь на требования ФСБ, не поддерживают экспорт в формате PKCS#12 (сертификат + закрытый ключ), но экспорт осуществить можно при помощи: P12FromGostCSP.zip

Подключаем USB flash устанавливаем триал крипто-про -> запускаем -> владка сервис -> кнопка Просмотреть сертификаты в контейнере -> выбираем флешку -> ОК -> Установить

Пользуясь вышеуказанной утилитой выгружаем сертификат в формате PCKS#12 и кидаем его в /gost-ssl/rzs/

P12FromGostCSP -> Выбираем сертификат из списка (должен содержать название нашей организации) -> ОК -> сохраняем в нужную директорию

проверяем, что у нас нормальный (содержит сертификат и закрытый ключ) PKCS#12 командой:

конвертируем полученный на Windows PKCS#12 в PEM:

создаем XML файл запроса, согласно памятке оператора

и конфертируем его при помощи icov в СP1251:

подписываем xml файл нашим сертификатом:

скидываем в Windows и проверяем валидность на http://www.gosuslugi.ru/pgu/eds/

если все впоряде, то идем дальше…

Автоматизация:

Есть уже несколько наработок бравых парней сообщества.
Во всех случаях в системе не хватает необходимых компонентов

4. Ну и собственно SOAP, Syslog…у кого чего ) у меня лично их небыло

Берем скрипты из темы и кидаем их в /gost-ssl/rzs
Даем права на выполнение и добавляем в крон

Как работает скрипт:

block.sh удаляет файлы созданные при предыдущей выгрузке (dump.xml,dump.xml.sig,file.zip)
после этого запускает скрипт download.pl который создает и пописывает файл запроса
далее запускает скрипт download1.pl который отправляет файл запроса роскомнадзору и через минуту забирает архив с дампом
block.sh распаковывает файл архива и выбирает из него IP адреса, сохраняя в файл IP.txt
построчно выбирая ip из списка блочит их с помощью IP set

Коды скриптов:
block.sh

download.pl

#!/usr/bin/perl -w

download1.pl

Скрипт отправки почты:

Ссылки на файлы:

openssl-1-0-1c-tar
block.sh
download.pl
download1.pl
p12fromgostcsp
rzs