Наши партнеры








Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

Система фильтрации интернет траффика на основе squidGuard + Apache + Squid + Berkeley DB (Стр.3)

Бешков Андрей


Разобравшись с форматом базы приступим к конфигурированию 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
}
 
   
acl {
# начинаем раздавать права
   
it-department {
 
pass local-ok !banners !ads all
# отделу ИТ можно все кроме рекламы
}
 
   
dostavka {
 
pass local-ok !porn !banners !ads !local-block all 
    
 
rewrite mp3
 
}
 
   
snab {
# отделу снабжения разрешаем только то что определено в local-ok
pass local-ok none
# так можно дать пользователю доступ только к избранным сайтам
rewrite mp3
 
}
 
   
default {
# действия выполняемые по умолчанию, если пользователь не описан ни в одном src
pass none
# блокируем все
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.


страницы: 1, 2, 3, 4