SquidGuard – это очень полезное дополнение к Squid. Возможностей у него предостаточно, часто админы не используют и половину из них. С помощью squidGuard можно отфильтровывать и переадресовывать запросы по адресам, именам и регулярным выражениям. Определяет пользователей по адресам и логинам, которые можно распределять по группам с заданием собственных настроек и указанием временного промежутка.
Например, разрешить группе посещать только ресурсы из белого списка. Для ускорения обработки больших списков они хранятся в BerkeleyDB. Установка в Ubuntu сложностей не вызывает:
$ sudo apt-get install squidguard
Подключается squidGuard к Squid так же, как и остальные редиректоры, просто добавляем в squid.conf строку для запуска:
redirect_program /usr/bin/squidGuard
# Если конфигурационный файл находится в другом месте, указываем его так:
# redirect_program /usr/bin/squidGuard -c /usr/local/etc/squid/squidGuard.conf
redirect_children 5
redirector_bypass on
Все настройки squidGuard производятся в конфигурационном файле /etc/squid/squidguard.conf. Но вначале нужно пояснить структуру БД. Переменная dbhome указывает на каталог, в котором хранятся описания ресурсов. В Ubuntu и некоторых других дистрибутивах – это /var/lib/squidguard/db. При установке с помощью пакетов этот каталог пуст, поэтому придется самому позаботиться о его наполнении. Список blacklist можно взять как из архива исходных текстов программы, так и выбрать любой по ссылке Blacklists на
$ wget –c http://www.shallalist.de/Downloads/shallalist.tar.gz
$ sudo tar xzvf shallalist.tar.gz –C /var/lib/squidguard/db
В результате внутри обнаружишь целую структуру каталогов с названиями вроде ads, warez и прочее. Порядок следования очень важен, ведь в правилах указывается путь относительно dbhome. Внутри каждого каталога могут находиться следующие файлы:
- domains – список доменных имен и адресов сайтов (ad.count.com);
- urls – список конкретных ссылок на ресурс (site.com/banners);
- expressions – список регулярных выражений, ожидаемых в URL (adult|girls|avi|mp3 и т.д.).
Списков expressions в большинстве blacklist мало, и злоупотреблять ими не стоит, так как их использование сильно нагружает систему.
Еще один момент, связанный с обновлением списка. Например, может возникнуть ситуация, когда нужно добавить или убрать ресурс из balcklist, если это сделать в одном из указанных выше файлов, то при обновлении все изменения будут потеряны. Чтобы избежать этого, сохраняй изменения в нужном подкаталоге в файлах с расширением diff. Например, рядом с оригинальным domains пишем domains.diff. Формат его прост:
+ads.domain.com
-domain.com
Первый ресурс будет добавлен в базу, второй убран. При обновлении списка ситуация не изменится.
Создаем правила
Если в Squid ресурсы блокируются при помощи связки acl+http_access, то в squidGuard таких параметров намного больше. Например, чтобы описать и затем блокировать ресурсы, содержащие рекламу, добавляем следующее правило:
$ sudo mcedit /etc/squid/squidguard.conf
dest adv {
domainlist adv/domains
urllist adv/urls
expressionslist adv/expression
redirect http://localhost/block.html
}
dest warez {
domainlist warez/domains
urllist warez/urls
}
# И теперь создаем ACL
acl {
default {
pass !adv !warez all
}
}
В примере была создана категория adv, в которой при помощи трех параметров domainlist, urllist и expressionslist были подключены файлы, находящиеся в каталоге /var/lib/squidguard/db/adv. Описания для остальных ресурсов создаются также. Названия можно брать любые, обычно их выбирают по названию каталога или по назначению, чтобы потом легче было ориентироваться. В документации приведен список зарезервированных слов, советую с ним познакомиться. Список ACL с действием default является правилом по умолчанию.
Параметр dest аналогичен acl в squid.conf, то есть описывает внешний ресурс. Чтобы указать клиентские подключения, применяется src, в качестве значения ему можно передать: отдельный IP-адрес, адрес сети, домен или список пользователей.
src clients {
ip 192.168.1.2-192.168.1.50
}
src admins {
ip 192.168.1.55, 192.168.1.150
}
Временной диапазон задается просто:
time workhours {
weekly mtwhf 09:00-18:00
date *.04.01
}
Под описание work-time попадают дни от понедельника по пятницу (используются первые буквы английских слов) и время с 9 до 18. Плюс сюда же входит первое апреля каждого года.
Время можно использовать прямо в описании клиентов:
src managers {
ip 192.168.0.0/24
within workhours
}
Или непосредственно в acl. Теперь все описания собираем в конфиге:
$ sudo mcedit /etc/squid/squidguard.conf
acl {
# Этой группе режем все, и пускать менеджеров будем только в workhours
managers {
pass !warez !chat !porno !agressive !drugs !ads all
}
# В рабочее время режем все
clients within workhours {
pass !warez !chat !porno !agressive !drugs !ads all
} else {
pass !ads all # после работы только рекламу
}
# На то мы и админы
admins {
pass !adv all
}
default {
pass !adv all
}
}
Для упрощения я не добавлял описания ресурсов chat, porno и других. Когда правила записаны, создаем базу и устанавливаем права:
$ sudo squidGuard -d -C all
$ sudo chown -R squid /var/lib/squidguard/db/*
Хотя делать это необязательно, при первой загрузке базы будут созданы автоматически, но так можно убедиться в отсутствии ошибок. Для обновления конкретного списка вместо all указываем на конкретный файл. Если обновление производится из diff файла, то используем параметр ‘–u‘:
$ sudo squidGuard -u /var/lib/squidguard/db/ads/domains.diff
После чего перезапускаем Squid и проверяем работу.
Постовой
Компания Терра Партнер предлагает бумагосверлильные машины ведущих производителей по доступным ценам.
Несколько дней назад я искал хороший и простой способ сортировки данных в таблице простым нажатием на заголовки таблицы. Я нашел интересный Javascript сортировки таблицы от Стюарта Лангриджа (Stuart Langridge) sorttable.js.
2 комментов оставлено (Add 1 more)