Документация по модулю Netblock и принадлежащим к нему страницам перенесена в Confluence
http://abills.net.ua:8090/display/AB/Netblock

Netblock

Abills NET BLOCK Модуль блокировки Web ресурсов (Цена)

Возможности

  • Блокировка по IP
  • Блокировка по DNS
  • DPI (в стадии тестирования)
  • Proxy
  • Автоматическая синхронизация списка ресурсов для блокировки с удалённым списком
  • Поддерживает
    • Mikrotik
    • Linux
    • FreeBSD
  • Автоматическа загрузка Роскомнадзор
  • Автоматическа загрузка UABlock

Настройка

# mysql -D abills < db/Netblock.sql

Подключение модуля abills/libexec/config.pl

@MODULES = (
 'Netblock'
); 

Работа с модулем

Система загружает лист блокировки и применяет его на локальном сервере.

# /usr/abills/libexec/billd netblock

Дополнительные параметры:

INIT=1 Полная загрузка листа блокировки
BLOCK_TYPE=IP Тип блокировки: IP(по умолчанию),DNS,DPI,Proxy
TYPE=xx Тип листа блокировки (По умолчанию: rkn). Листы загрузки:
rkn - Роскомнадзор
uablock - блокировка UA
ACTIVE_BLOCK=1 Включение блокировки
NAS_TYPE=mikrotik Загрузка листов блокировки на все сервера доступа с типом mikrotik и miroktik_dhcp
NAS_ID=12 Загрузка листов блокировки на все сервера доступа с номером 12
DEBUG=1..5 Режим отладки
DOMAIN_REDIRECT=domain Редирект на определенный домен.

По умолчанию используются параметры

INIT=1 BLOCK_TYPE=IP ACTIVE_BLOCK=1

Для автоматической синхронизации, добавьте запись в /etc/crontab

* 1,9,17 * * * root /usr/abills/libexec/billd netblock

Интерфейс управления

Закачка

UA list

/usr/abills/libexec/billd netblock TYPE=uablock FETCH=1

BY list

Список ограниченного доступа https://belgie.by/ru/lists_access

/usr/abills/libexec/billd netblock TYPE=byblock FETCH=1

Добавить в conf.pl

$conf{NETBLOCK_BY_NAME}            = 'логин';

Для блокировки интернет-ресурсов, доступ к которым ограничен

$conf{NETBLOCK_BY_URL_LIMITATION}  = 'ссылка на XML список';
$conf{NETBLOCK_BY_PASS_LIMITATION} = 'пароль к  XML списку';

Для блокировки средств обеспечения анонимности (прокси-серверы, анонимные сети типа Tor и другие)

$conf{NETBLOCK_BY_URL_ANONYMOUS}   = 'ссылка на XML список';
$conf{NETBLOCK_BY_PASS_ANONYMOUS}  = 'пароль к  XML списку';

Росскомнадзор

/usr/abills/libexec/billd netblock TYPE=rnk FETCH=1

Включение блокировок

Включение на локальном сервере. Система автоматически определяет ОС локального сервера и поднимает на нем блокировку

/usr/abills/libexec/billd netblock

Mikrotik

/usr/abills/libexec/billd netblock ACTIVE_BLOCK=1 NAS_TYPE=mikrotik

Примеры использования

Блокировка по имени домена с использованием unbound

В связке с DNS резолвером unbound возможна как статичное, так и динамическое обновление записей в кеше DNS сервера. После установки и настройки остается только добавить в файл unbound.conf в секции server: следующую строку:

include: "/usr/abills/var/db/netblock/domain_list"

Блокировки начнут работать после перезапуска сервера. Шаблон для формирования файла domain_list приведен в примерах настройки. Для того чтобы в дальнейшем не перезагружать сервер, а только вносить изменения в его кеш, нужно в config.pl указать команды для блокировки и разблокировки в параметрах $conf{NETBLOCK_DNS_ADD_CMD} и $conf{NETBLOCK_DNS_ADD_CMD}.

Рестарт unbound $conf{UNBOUND_RESTART}='команда рестарта';

# /usr/abills/libexec/billd netblock ACTIVE_BLOCK=1 TYPE=uablock UNBOUND=1 DOMAIN_REDIRECT=10.0.1.1

Проверка

drill @127.0.0.1 calendar.yandex.ru
;; ->>HEADER<<- opcode: QUERY, rcode: NOERROR, id: 64180
;; flags: qr aa rd ra ; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;; calendar.yandex.ru.  IN      A

;; ANSWER SECTION:
calendar.yandex.ru.     3600    IN      A       10.0.0.1

;; AUTHORITY SECTION:

;; ADDITIONAL SECTION:

;; Query time: 0 msec
;; SERVER: 127.0.0.1
;; WHEN: Tue May 30 17:40:53 2017
;; MSG SIZE  rcvd: 52

Блокировка по IP с использованием ipfw

Linux

Для блокировки по IP адресу удобно использовать ipset, например так:

В дальнейшем записи в таблицу будут добавляться и удаляться автоматически, без перечитывания правил.

$conf{NETBLOCK_FW_ADD_CMD} Шаблон команды для блокировки типа «ip»
Пример для ipfw: $conf{NETBLOCK_FW_ADD_CMD} = '/sbin/ipset add netblock %IP';
$conf{NETBLOCK_FW_DEL_CMD} Шаблон команды для разблокировки типа «ip»
Пример для ipfw: $conf{NETBLOCK_FW_DEL_CMD} = '/sbin/ipset del netblock %IP';

Запуск обновления

/usr/abills/libexec/billd netblock TYPE=uablock ACTIVE_BLOCK=1  IPFW_BLOCK=1

Включение автоподнятие правил шейпера и блокировки

/etc/rc.conf

${abills_netblock}="YES" #Включение блокировки
${abills_netblock_redirect_ip}="127.0.0.1"; # Включение редиректа на страницу

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

/etc/init.d/shaper_start.sh start

FreeBSD

Для блокировки по IP адресу удобно использовать таблицы в ipfw, например так:

fwcmd="/sbin/ipfw"
nat_interface="igb0"
...
...
${fwcmd} add deny all from any to "table(13)" via ${nat_interface}
cat /usr/abills/var/db/netblock/ip_list |
{
while read ip
do
${fwcmd} table 13 add $ip
done
}
...
...

В дальнейшем записи в таблицу будут добавляться и удаляться автоматически, без перечитывания правил.

$conf{NETBLOCK_FW_ADD_CMD} Шаблон команды для блокировки типа «ip»
Пример для ipfw: $conf{NETBLOCK_FW_ADD_CMD} = '/sbin/ipfw table 13 add %IP';
$conf{NETBLOCK_FW_DEL_CMD} Шаблон команды для разблокировки типа «ip»
Пример для ipfw: $conf{NETBLOCK_FW_DEL_CMD} = '/sbin/ipfw table 13 delete %IP';

Запуск обновления

/usr/abills/libexec/billd netblock TYPE=uablock ACTIVE_BLOCK=1  IPFW_BLOCK=1

Включение автоподнятие правил шейпера и блокировки

/etc/rc.conf

${abills_netblock}="YES" #Включение блокировки
${abills_netblock_redirect_ip}="127.0.0.1"; # Включение редиректа на страницу

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

/usr/local/etc/rc.d/shaper_start.sh start

"Мягкая" блокировка

Данный модуль может быть использован, как для формирования списков для аппаратных решений (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-адреса.

в разработке …