Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
abills:docs:modules:rkn:ru [2017/05/13 11:21]
asmodeus [Настройка]
abills:docs:modules:rkn:ru [2017/07/21 12:37] (текущий)
diger
Строка 1: Строка 1:
 =====Rkn===== =====Rkn=====
  
-Данный модуль предназначен для настройки блокировок [[https://​eais.rkn.gov.ru|реестра запрещенных сайтов]].+Модуль переименован в [[abills:​docs:​modules:​netblock:ru|Netblock]]
  
-====Возможности==== 
- 
-  * Получение реестра запрещенных сайтов по расписанию (cron) 
-  * Формирование списков блокировки по типам ( ip, domain, domain-mask,​ url ) 
-  * Блокировка в "​реальном времени"​ 
-  * Оповещение,​ при неудачной выгрузке 
-  * Предупреждение о необходимости обновления сертификата с ЭП 
-  * "​Гибкая"​ работа с реестром(возможность определять политики блокировки доступа) 
- 
- 
-====Настройка==== 
- 
-  # mysql -D abills < db/Rkn.sql 
- 
-Подключение модуля abills/​libexec/​config.pl 
- 
-  @MODULES = ( 
-   '​Rkn'​ 
-  );  
- 
-^ $conf{RKN_OSSL_BIN} | **Полный путь к исполняемому файлу openssl** \\ Пример : $conf{RKN_OSSL_BIN} ='/​usr/​local/​bin/​openssl';​ | 
-^ $conf{RKN_DNS_TPL} | **Шаблон для формирования файла с блокировками типа "​domain"​** \\ Пример для unbound: $conf{RKN_DNS_TPL} = '​local-data:​ "%NAME A 10.0.0.7"';​ | 
-^ $conf{RKN_DNS_ADD_CMD} | **Шаблон команды для блокировки типа "​domain"​**\\ Пример для unbound: $conf{RKN_DNS_ADD_CMD} = '/​usr/​local/​sbin/​unbound-control -s 10.0.0.4 local_data %NAME A 10.0.0.7';​ | 
-^$conf{RKN_DNS_DEL_CMD} | **Шаблон команды для разблокировки типа "​domain"​**\\ Пример для unbound: $conf{RKN_DNS_DEL_CMD} = '/​usr/​local/​sbin/​unbound-control -s 10.0.0.4 local_data_remove %NAME';​ | 
-^ $conf{RKN_FW_ADD_CMD} | **Шаблон команды для блокировки типа "​ip"​**\\ Пример для ipfw: $conf{RKN_FW_ADD_CMD} = '/​sbin/​ipfw table 13 add %IP'; | 
-^ $conf{RKN_FW_DEL_CMD} | **Шаблон команды для разблокировки типа "​ip"​**\\ Пример для ipfw: $conf{RKN_FW_DEL_CMD} = '/​sbin/​ipfw table 13 delete %IP'; | 
-^ $conf{RKN_SKIP_NAME} ​ | **Список доменов,​ которым при обработке реестра будет автоматически присваиваться параметр [[abills:​docs:​modules:​rkn:​ru#​vozmozhnosti|SKIP]]**\\ Пример $conf{RKN_SKIP_NAME} = '​www.youtube.com,​youtube.com,​ru.wikipedia.org';​ | 
-^ $conf{RKN_SKIP_IP} | **Список IP адресов,​ которым при обработке реестра будет автоматически присваиваться параметр [[abills:​docs:​modules:​rkn:​ru#​vozmozhnosti|SKIP]]**\\ Пример $conf{RKN_SKIP_IP} = '​64.233.161.198,​64.233.162.198,​64.233.163.198,​64.233.164.198'​ | 
-^ $conf{RKN_FW_SKIP_CMD} | **Шаблон команды для [[abills:​docs:​modules:​rkn:​ru#​vozmozhnosti|SKIP]] блокировки**\\ Пример $conf{RKN_FW_SKIP_CMD} = '/​sbin/​ipfw table 14 add %IP'; | 
- 
-====Начало работы==== 
-Предполагается,​ что у Вас уже имеется [[https://​commonworkspace.ru/​article.php?​id=35|выгруженный сертификат в формате PCKS#12]]. \\ 
-Сертификат (как правило файл p12.pfx) копируем на сервер,​ где вы планируете осуществлять выгрузку,​ в свою домашнюю папку.\\ 
-Проверяем установленный в системе OpenSSL на наличие поддержки GOST и сам сертификат:​ 
-<​code>​ 
-# cd ~  
-# /​usr/​local/​bin/​openssl ciphers | tr ":"​ "​\n"​ | grep GOST 
-GOST2001-GOST89-GOST89 
-GOST94-GOST89-GOST89 
-# /​usr/​local/​bin/​openssl pkcs12 -in p12.pfx -nodes 
-Enter Import Password: 
-</​code>​ 
-Если все в порядке,​ конвертируем pkcs#12 в PEM формат:​ 
-<​code>​ 
-# /​usr/​local/​bin/​openssl pkcs12 -in p12.pfx -out certificate.pem -nodes -clcerts 
-Enter Import Password: 
-</​code>​ 
-Полученный в результате файл certificate.pem помещаем в папку /​usr/​abills/​var/​db/​rkn/​cfg 
- 
- 
- 
-Рекомендуется первый запуск системы произвести вручную,​ так как список очень большой и наполнении его "​вживую"​ займёт очень много времени. Для этого нужно запустить скрипт в режиме отладки:​ 
-<​code>​ 
-/​usr/​abills/​libexec/​billd rkn DEBUG=4 
-</​code>​ 
-При этом будут сформированы списки для блокировки,​ а команды выполнятся не будут. После этого перезапускаем используемые службы и переходим в автоматический режим.,​ добавляем задание в cron:\\ 
-**/​etc/​crontab**\\ 
-<​code>​ 
-* 1,9,17 * * * root /​usr/​abills/​libexec/​billd rkn 
-</​code>​ 
-Если что-то пошло некорректно,​ можно произвести переинициализацию системы,​ выполнив последовательно 2 команды:​ 
-<​code>​ 
-/​usr/​abills/​libexec/​billd rkn INIT=1 
-/​usr/​abills/​libexec/​billd rkn DEBUG=4 
-</​code>​ 
- 
- 
- 
-====Примеры использования==== 
-=== Блокировка по имени домена с использованием unbound=== 
-В связке с DNS резолвером [[https://​www.unbound.net|unbound]] возможна как статичное,​ так и динамическое обновление записей в кеше DNS сервера. После [[http://​muff.kiev.ua/​content/​unbound-nastroika-keshiruyushchego-dns-servera|установки и настройки]] остается только добавить в файл //​unbound.conf//​ в секции ''​server:''​ следующую строку:​\\ 
-<​code>​include:​ "/​usr/​abills/​var/​db/​rkn/​domain_list"</​code>​ 
-Блокировки начнут работать после перезапуска сервера. Шаблон для формирования файла domain_list приведен в примерах настройки. 
-Для того чтобы в дальнейшем не перезагружать сервер,​ а только вносить изменения в его кеш, нужно в config.pl указать команды для блокировки и разблокировки в параметрах **$conf{RKN_DNS_ADD_CMD}** и **$conf{RKN_DNS_ADD_CMD}**. 
- 
-=== Блокировка по IP с использованием ipfw=== 
-Для блокировки по IP адресу удобно использовать таблицы в ipfw, например так: 
-<​code>​ 
-fwcmd="/​sbin/​ipfw"​ 
-nat_interface="​igb0"​ 
-... 
-... 
-${fwcmd} add deny all from any to "​table(13)"​ via ${nat_interface} 
-cat /​usr/​abills/​var/​db/​rkn/​ip_list | 
-{ 
-while read ip 
-do 
-${fwcmd} table 13 add $ip 
-done 
-} 
-... 
-... 
-</​code>​ 
-В дальнейшем записи в таблицу будут добавляться и удаляться автоматически,​ без перечитывания правил. 
- 
-===="​Мягкая"​ блокировка==== 
-Данный модуль может быть использован,​ как для формирования списков для аппаратных решений (DPI), 
-так и для "​софтовой"​ блокировки. Естественно,​ что владельцы аппаратных решений получают конкурентное преимущество,​ так как имеют возможность блокировать ресурсы на более высоком уровне(url),​ а не весь ресурс или IP адрес, на котором может находится кроме заблокированного ещё куча сайтов. Как же быть тем, для кого бюджет установки DPI неоправданно высок. \\ 
-Попытаемся исправить ситуацию. Итак, что мы имеем в записи реестра:​ 
-  * Тип блокировки(ip,​domain etc) 
-  * IP адрес 
-  * URL 
-Теперь смотрим,​ по какому алгоритму нас будут проверять:​ 
-^ **Тип информации,​ занесенной в реестр ЕАИС** ^ **Действия АС «Ревизор»** ^ 
-| Запись содержит только IP-адрес | Проверяется доступность сайта по IP-адресу. При отсутствии доступа по протоколу HTTP происходит запись информации в аварийный журнал о запрете доступа по протоколу http. | 
-| Запись содержит только URL ресурса | Происходит резолвинг (resolve) IP-адреса с помощью DNS серверов. Далее происходит отправка HTTP GET запроса на полученные IP-адреса. | 
-| Запись содержит Домен, IP-адрес,​ URL | Происходит резолвинг (resolve) IP-адреса с помощью DNS серверов. Далее происходит отправка HTTP GET запроса на полученные и внесенные в реестр ЕАИС IP-адреса. |