FreeBSD+Apache+Squid+SquidGuard

Разобравшись с форматом базы приступим к конфигурированию squidGuard. Cоздаем файл /usr/local/squidGuard/squidGuard.conf. И вносим в него вот это:

logdir /usr/local/squidGuard/log # тут у нас логи лежат
logdir /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 на директории 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. Этот процесс занимает довольно продолжительное время. Подобных задержек можно избежать, если заранее самому создать базы в формате Berkeley DB. Поэтому мы напишем скрипт для перестройки баз и перезапуска 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 # chmod 100 /usr/local/squidGuard/bin/rebuid_base.sh # /usr/local/squidGuard/bin/rebuid_base.sh

Запустив rebuid_base.sh, необходимо дождаться нормального завершения задачи. Теперь во всех директориях, упомянутых в разделах dest конфигурационного файла, появятся файлы баз данных domains.db и urls.db.


страницы: 1, 2, 3, 4
следующая