Настройка фильтрации сайтов через прокси¶
Для настройки фильтрации сайтов в 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+) и при запросе к запрещенному также перенаправляем на страницу