SquidGuard - фильтрация контента
Фильтрацию рекламы и прочей гадости интернета можно осуществить через Proxy сервер. Для этого делаем следующее:
1. Через пакетный менеджер Synaptic установите пакет squidGuard. С помощью squidGuard можно отфильтровывать и переадресовывать запросы по адресам, именам и регулярным выражениям, определять пользователей по адресам и логинам, которые можно распределять по группам с заданием собственных настроек и указанием временного промежутка (например, разрешить группе посещать только ресурсы из белого списка).
2. Отконфигурируйте через Midnight Commander файл /etc/squid/squidGuard.conf:
# расположение базы данных запрещенных адресов
dbhome /usr/share/squidGuard/db
# файл, в котором вести журнал
logdir /var/log/squidGuard
# создаем правила для блокировки рекламы
dest adv {
domainlist adv/domains
urllist adv/urls
}
# создаем правила для блокировки порнографии
dest porn {
domainlist porn/domains
urllist porn/urls
}
# создаем правила для блокировки пиратских программ
dest warez {
domainlist warez/domains
urllist warez/urls }
# И теперь создаем контроля доступа ACL
acl {
default {
# запрет рекламы, порнографии, пиратских программ
pass !adv !porn !warez all
# перенаправление на страницу с сообщением о запрете доступа
redirect http://www.mypclinuxos.local/block.html
}
}
3. Создайте html-файл с сообщением о запрете доступа в каталоге /var/www/html/block.html
4. Установите/создайте сами (и затем регулярно обновляйте) базы данных запрещенных адресов. Базу можно скачать отсюда. Затем ее нужно распаковать и полученные папки с файлами положить в папку db.
Внутри найдете целую структуру каталогов с названиями вроде ads, warez и т.д. Внутри каждого каталога могут находиться следующие файлы: - domains – список доменных имен и адресов сайтов (ad.count.com); - urls – список конкретных ссылок на ресурс (site.com/banners); - expressions - список регулярных выражений, ожидаемых в URL (adult|girls|avi|mp3 и т.д.). Списков expressions в большинстве blacklist мало, и злоупотреблять ими не стоит, так как их использование сильно нагружает систему.
5. Для установки данной базы выполнить следующие команды:
- cd/usr/share/squidGuard/ - переход в каталог squidGuard
- rm -rf db - удаление старой базы
- tar xf/путь до/shallalist.tar.gz - разархивирование
- mv BL db - переименование
И еще один момент, связанный с обновлением списка. Например, может возникнуть ситуация, когда нужно добавить или убрать ресурс из blacklist, если это сделать в одном из указанных выше файлов, то при обновлении все изменения будут потеряны. Чтобы избежать этого, сохраняйте изменения в нужном подкаталоге в файлах с расширением diff. Например, рядом с оригинальным domains пишем domains.diff. Формат его прост:
- +ads.domain.com
- -domain.com
Первый ресурс будет добавлен в базу, второй убран. При обновлении списка ситуация не изменится.
6. Когда правила записаны, базы созданы, устанавливаем права (от rootа):
- squidGuard -d -C all
- chown -R squid /var/lib/squidguard/db/*
Хотя делать это необязательно, при первой загрузке базы будут созданы автоматически, но так можно убедиться в отсутствии ошибок. Для обновления конкретного списка вместо all указываем на конкретный файл. Если обновление производится из diff файла, то используем параметр –u:
- squidGuard -u /var/lib/squidguard/db/ads/domains.diff
7. Раскомментируйте строки в файле squid.conf, относящиеся к squidGuard и перезапустите proxy-сервер командой:
- service squid restart
Примечание
* Чтобы блокировать не все подряд, а выборочно для отдельные группы клиентов (детей, коллег, начальников и т.п.) применяется 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
}
Теперь полное правило в 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
}
}
** Хорошая статья на подобную тему здесь.