Настройка фильтрации сайтов через прокси¶
Для настройки фильтрации сайтов в Calculate Directory Server можно использовать пакет SquidGuard.
SquidGuard — это программа для переадресации("редиректор"), с которой взаимодействует прокси-сервер squid. Прокси сервер передает запрос на SquidGuard, тот в соответствии со своими фильтрами принимает решение требуется перенаправление или нет и затем возвращает результат прокси-серверу.
Настройка прокси-сервера Squid¶
Настройка производится следующим образом. Для начала нам необходим работающий прокси-сервер squid, базовый рабочий конфигурационный файл /etc/squid/squid.conf выглядит следующим образом:
acl manager proto cache_object acl localhost src 127.0.0.1/32 ::1 acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1 acl localnet src 192.168.5.0/8 # RFC1918 internal network acl SSL_ports port 443 acl Safe_ports port 80 # http acl Safe_ports port 21 # ftp acl Safe_ports port 443 # https acl Safe_ports port 70 # gopher acl Safe_ports port 210 # wais acl Safe_ports port 1025-65535 # unregistered ports acl Safe_ports port 280 # http-mgmt acl Safe_ports port 488 # gss-http acl Safe_ports port 591 # filemaker acl Safe_ports port 777 # multiling http acl Safe_ports port 901 # SWAT acl purge method PURGE acl CONNECT method CONNECT http_access allow manager localhost http_access deny manager http_access allow purge localhost http_access deny purge http_access deny !Safe_ports http_access deny CONNECT !SSL_ports http_access allow localnet http_access allow localhost http_access deny all http_port 8080 hierarchy_stoplist cgi-bin ? access_log /var/log/squid/access.log squid coredump_dir /var/cache/squid refresh_pattern ^ftp: 1440 20% 10080 refresh_pattern ^gopher: 1440 0% 1440 refresh_pattern -i (/cgi-bin/|\?) 0 0% 0 refresh_pattern . 0 20% 4320
Установка необходимых пакетов¶
Теперь нам необходим пакет net-proxy/squidguard — именно он будет выполнять фильтрацию сайтов по черным спискам и редирект. Для того чтобы поставить его выполним следующую команду:
emerge -a net-proxy/squidguard
Команда выведет, что мы собираемся ставить — если нас все устраивает, то соглашаемся и ждем завершения.
Также нам нужны черные списки для фильтров. Для этого поставим следующие пакеты: net-proxy/squidguard-shallalist и net-proxy/squidguard-digincore.
В первом содержится большое количество списков по категориям, во втором список для фильтрации ресурсов 18+.
Описание категорий списков shallalist можно найти на следующей
Подключение SquidGuard к Squid и настройка фильтрации¶
Приступим к настройке.
Для использования редиректора нам надо добавить в /etc/squid/squid.conf следующие параметры:
url_rewrite_program /usr/bin/squidGuard url_rewrite_children 10
Первый параметр указывает путь к программе-редиректору.
Второй — количество одновременных потоков редиректора.
Теперь нам следует настроить SquidGuard.
Приблизительное содержание файла /etc/squidGuard/squidGuard.conf:
dbhome /var/lib/squidguard logdir /var/log/squidGuard src it { ip 192.168.5.40-192.168.5.70 } dest adv{ domainlist BL/adv/domains urllist BL/adv/urls redirect http://localhost.localdomain/block.gif } dest scnet{ domainlist BL/socialnet/domains urllist BL/socialnet/urls } dest wmail{ domainlist BL/webmail/domains urllist BL/webmail/urls } dest downl{ domainlist BL/downloads/domains urllist BL/downloads/urls } dest digincore{ domainlist digincore-general/domains } acl { it { pass !adv !porn all redirect 302:http://localhost.localdomain/block.html } default { pass !adv !scnet !wmail !downl !porn !digincore all redirect 302:http://localhost.localdomain/block.html } }
Параметр dbhome указывает на директорию с черными списками.
logdir — папка сохранения логов.
Далее идут описания клиентов и фильтров.
src it { ip 192.168.5.40-192.168.5.70 }
Данная секция описывает группу компьютеров отдела it, с диапазоном ip-адресов 192.168.5.40-192.168.5.70
Секции фильтров выглядят, например, следующим образом:
dest scnet{ domainlist BL/socialnet/domains urllist BL/socialnet/urls }
Данный фильтр scnet фильтрует ресурсы социальных сетей.
Параметр domainlist указывает на список фильтруемых доменов.
urllist — список конкретных веб-страниц для фильтрации.
Также возможен параметр expressionlist для указания списка фильтрации по регулярным выражениям.
Теперь имея одну привилегированную группу компьютеров и несколько фильтров мы можем настроить ограничения доступа.
Например:
acl { it { pass !adv !digincore all redirect 302:http://localhost.localdomain/block.html } default { pass !adv !scnet !wmail !downl !digincore all redirect 302:http://localhost.localdomain/block.html } }
Группе компьютеров it мы показываем все кроме ресурсов из списков adv (реклама, баннеры) и digincore (черный список ресурсов 18+), при попытке доступа к запрещенному ресурсу мы перенаправляем на страницу
Для все остальных мы показываем все кроме ресурсов входящих в фильтры adv (реклама), scnet (соц. сети), wmail (почта), downl (файлообменники), digincore (18+) и при запросе к запрещенному также перенаправляем на страницу