воскресенье, 19 октября 2008 г.

Настройка squidGuard

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
}
}

squid.png

В примере была создана категория 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 и проверяем работу.

Комментариев нет:

Неактивный атрибут "скрытый" или как снять атрибут скрытый после вируса

Некоторые пользователи компьютеров часто сталкиваются с проблемой, когда папки и файлы вдруг становятся скрытыми. Или, проще говоря, исчез...