Установка внешнего редиректора для Squid
Разобравшись с форматом базы приступим к конфигурированию squidGuard. Cоздаем файл /usr/local/squidGuard/squidGuard.conf. И вносим в него вот это:
logdir /usr/local/squidGuard/log |
# тут у нас логи лежат |
dbhome /usr/local/squidGuard/db |
# здесь базы |
src it-department { |
# описываем адреса отдела ИТ |
ip 192.168.10.222-192.168.10.223 |
|
} |
|
# отдел доставки | |
src dostavka { |
|
ip 192.168.10.101, 192.168.10.104 |
|
} |
|
src snab { |
# отдел снабжения |
ip 192.168.10.105 |
|
} |
|
# говорим что, все обращения к файлам *.mp3 нужно перенаправить на http://192.168.10.9/replace/my.mp3 # и запротоколировать это событие в файле /usr/local/squidGuard/log/rewr_mp3 |
|
rewrite mp3 { |
|
s@.*\.mp3$@http://192.168.10.9/replace/my.mp3@r |
|
log rewr_mp3 |
|
} |
|
dest porn { |
# описываем базу порносайтов # записать протокол в файл /usr/local/squidGuard/log/porn |
domainlist porn/domains |
|
urllist porn/urls |
|
log porn |
|
} |
|
dest ads { |
# описываем базу рекламы # записать протокол в файл /usr/local/squidGuard/log/ads # подменяем все баннеры прозрачным изоражением размером 1x1 пиксель |
domainlist ads/domains |
|
urllist ads/urls |
|
log ads |
|
redirect http://192.168.10.9/replace/1x1.gif |
|
} |
|
dest banners { |
# описываем свою собственную базу баннерных систем # в этом файле записаны выражения типа baner, banner, ads, show_ads # перенаправляем все запросы на прозрачный gif размером 1x1 пиксель |
domainlist banners/domains |
|
expressionlist banners/expressions |
|
urllist banners/urls |
|
redirect http://192.168.10.9/replace/1x1.gif |
|
log banners |
|
} |
|
dest local-ok { |
# описываем домены которые не должны блокироваться никогда # вне зависимости от списка скачиваемого из сети |
domainlist local-ok/domains |
|
urllist local-ok/urls |
|
} |
|
dest local-block { |
# описываем домены которые должны быть заблокированы всегда |
domainlist local-block/domains |
# вне зависимости от списка скачиваемого из сети |
urllist local-block/urls |
# и перенаправляем все запросы на block.cgi |
redirect http://192.168.10.9/cgi-bin/block.cgi?clientaddr=%a&clientname=%n&clientident=%i&clientgroup=%s&targetgroup=%t&url=%u |
|
} |
|
acl { |
# начинаем раздавать права |
it-department { |
|
pass local-ok !banners !ads all |
# отделу ИТ можно все кроме рекламы |
} |
|
dostavka { |
|
pass local-ok !porn !banners !ads !local-block all |
|
redirect http://192.168.10.9/cgi-bin/block.cgi?clientaddr=%a&clientname=%n&clientident=%i&clientgroup=%s&targetgroup=%t&url=%u |
|
rewrite mp3 |
|
} |
|
snab { |
# отделу снабжения разрешаем только то что определено в local-ok |
pass local-ok none |
# так можно дать пользователю доступ только к избранным сайтам |
redirect http://192.168.10.9/cgi-bin/block.cgi?clientaddr=%a&clientname=%n&clientident=%i&clientgroup=%s&targetgroup=%t&url=%u |
|
rewrite mp3 |
|
} |
|
default { |
# действия выполняемые по умолчанию, если пользователь не описан ни в одном src |
pass none |
# блокируем все |
redirect http://192.168.10.9/cgi-bin/block.cgi?clientaddr=%a&clientname=%n&clientident=%i&clientgroup=%s&targetgroup=Not_Authorized&url=%u |
|
log default |
# пишем логи в файл /usr/local/squidGuard/log/default |
} |
|
} |
# закрываем список acl |
Кстати не забудьте скачать мою базу баннеров. Потом вы сможете вносить в нее свои собственные записи. Иначе при запуске squidGuard будет жаловаться на ее отсутствие, и становиться в режим холостой работы. В этом режиме он будет пропускать все запросы без обработки.
Покончив с файлом конфигурации, продолжим настройку squidGuard. Даем права пользователю, от имени которого будет работать squidGuard на директории log и db. Так же поступаем и с файлом squidGuard.conf.
# chown -R nobody /usr/local/squidGuard/log /usr/local/squidGuard/db # chown nobody /usr/local/squidGuard/squidGuard.conf
SquidGuard может работать с текстовыми базами данных, но в таком случае при каждом запуске ему приходится создавать в оперативной памяти бинарное дерева всех загружаемых баз в формате Berkeley DB. Этот процесс занимает довольно продолжительное время. Подобных задержек можно избежать, если заранее самому создать базы в нужном формате. На моей машине после создания баз время загрузки сократилось почти в 10 раз. Поэтому мы напишем скрипт для перестройки баз и перезапуска squidGuard с новыми базами.
# cat > /usr/local/squidGuard/bin/rebuid_base.sh #!/bin/sh /usr/local/squidGuard/bin/squidGuard -C all chown -R nobody /usr/local/squidGuard/db killall -HUP squid ^D
Устанавливаем нужные права доступа на файл
rebuid_base.sh. Так же необходимо
убедиться что этот скрипт имеет право запускать только пользовать
root.
# chmod 100 /usr/local/squidGuard/bin/rebuid_base.sh
# /usr/local/squidGuard/bin/rebuid_base.sh
Запустив rebuid_base.sh, необходимо дождаться нормального завершения задачи.
Теперь во всех директориях, упомянутых в разделах dest конфигурационного файла,
появились файлы баз данных domains.db и
urls.db.