Различия
Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия | |||
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-адреса. | |