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








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

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

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

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


Настало время создать директорию, в которой у нас будет храниться кэш squid.

# mkdir /usr/local/squid/cache

А тут у нас будут лежать логи.

# mkdir /usr/local/squid/logs 

Нужно позаботиться, чтобы директории /usr/local/squid/cache и /usr/local/squid/logs были доступны пользователю, от имени которого работает squid. Узнать имя этого пользователя можно так:

# cat /usr/local/squid/etc/squid.conf | grep cache_effectiv
cache_effective_user    nobody
сache_effective_group nogroup 

Получается, что пользователя зовут nobody, и группа у него nogroup.

# chown -R nobody /usr/local/squid/cache /usr/local/squid/logs
# /usr/local/squid/sbin/squid -z 

Внутри директории /usr/local/squid/cache создаем иерархию директорий для хранения кэш файлов. Заглянув в /usr/local/squid/cache, вы сразу поймете, что имелось в виду под словом иерархия.

Запускаем squid.

# /usr/local/squid/sbin/squid -D 

А на другой консоли смотрим, какие сообщения об ошибках появляются в файле протокола.

# tail -f /var/log/messages 

Если все сделали правильно, то ошибок мы так и не дождемся. Зато должны увидеть что-то подобное.

Oct 3 12:15:05 dns squid[139]: Squid Parent: child process 141 started

Это значит что, squid у нас заработал. Теперь примемся за установку Russian Apache. Я использовал весрсию 1.3.27 PL30.16. Ну а Вы как всегда берите новейший дистрибутив.

Распаковываем его и ставим в комплекте по умолчанию.

# tar zxvf apache_1.3.27rusPL30.16.tar.gz
# ./configure 
# gmake 
# gmake instal

Запускаем apache:

 /usr/local/apache/bin/apachectl start

Создаем директорию, где будут лежать пустой баннер и файл mp3 с каким-либо забавным звуком.

# mkdir /usr/local/apache/htdocs/replace

Кладем туда 1x1.gif и my.mp3. Берем модифицированный block.cgi и копируем его в /usr/local/apache/cgi-bin Выставляем ему нужные права:

# chown nobody:wheel /usr/local/apache/cgi-bin/block.cgi
# chmod 500 /usr/local/apache/cgi-bin/block.cgi

block.cgi это perl скрипт который будет вызываться каждый раз, когда пользователь попытается посетить запрещенную страницу. Взять его можно из архива с дистрибутивом squidGuard. В первоначальном варианте этот скрипт назывался squidGuard-1.2.0/samples/squidGuard.cgi.in. Можно использовать его, но все же лучше взять слегка модифицированный мною вариант. Мой, скрипт наверно, лучше, потому что руссифицированный. На его исправление ушло почти два часа.

Итак, все подготовительные работы окончены, и самое время взяться за установку squidGuard 1.2.0. Для его работы необходимо иметь Berkeley DB 3.2.9. В свою очередь, Berkeley DB не соберется без libtool. Довольно запутаная получается цепочка. Но бояться не стоит. Берем libtool из коллекции портированных приложений и как обычно, выполняем распаковку, копиляцию, а затем и установку.:

# tar zxvf libtool-1.3.4.tar.gz
# cd libtool-1.3.4

# ./configure
# gmake 
# gmake install

С выполнение этих действий не должно возникнуть никаких сложностей. Скачиваем Berkeley DB 3.2.9. Забираем два патча здесь или здесь. И снова:

# tar zxvf db-3.2.9.tar.gz 

Копируем патч файлы в получившуюся после распаковки дистрибутива директорию db-3.2.9. Затем применяем их для модификации исходного кода.

# cp patch.3.2.9.1 patch.3.2.9.2 ./db-3.2.9 
# cd /usr/local/src/db-3.2.9 
# patch -p0 < patch.3.2.9.1
# patch -p0 < patch.3.2.9.2

А теперь снова компиляция.

# cd build_unix
# ../dist/configure 
# gmake 
# gmake install 

Забираем squidGuard-1.2.0. Распаковываем и компилируем:

# tar zxvf squidGuard-1.2.0.tar.gz
# cd squidGuard-1.2.0 
# ./configure --prefix=/usr/local/squidGuard   --with-db=/usr/local/BerkeleyDB.3.2  \
--with-sg-config=/usr/local/squidGuard/squidGuard.conf \
--with-sg-logdir=/usr/local/squidGuard/log \
--with-sg-dbhome=/usr/local/squidGuard/db

Разберемся с ключами передаваемыми программе configure:

--prefix=/usr/local/squidGuard директория куда будет установлен squidGuard
--with-db=/usr/local/BerkeleyDB.3.2 тут находится используемая при линковке библиотека BerkeleyDB.3.2
--with-sg-config=/usr/local/squidGuard/squidGuard.conf местонахождение файла конфигурации squidGuard
--with-sg-logdir=/usr/local/squidGuard/log директория для файлов протоколов
--with-sg-dbhome=/usr/local/squidGuard/db тут будут находиться списки блокируемых сайтов
# gmake 
# gmake test 
# gmake install 

Cоздаем для хранения файлов протоколирования работы squidGuard директорию /usr/local/squidGuard/log.

# mkdir /usr/local/squidGuard/log

Официальный список блокируемых доменов можно взять на сайте squidGuard. Так же доступен список от MESD. И еще один хороший список от Dansguardian. Кратко сравним их между собой:

База squidGuard Mesd dansguardian Комментарии
ads       реклама
adult нет     сайты для взрослых
aggressive       агрессия
audio-video       музыка и видео
chat нет нет   чаты
forums нет     форумы
drugs       наркотики
gambling       азартные игры
hacking       хакерство
local-block нет   нет сайты заблокированные местным админом
local-ok нет   нет сайты разрешенные местным админом
mail       бесплатные почтовые сервера
porn       порнография
proxy       общедоступные прокси сервера
publicite нет     опять реклама
redirector нет     анонимные прокси сервера
violence       насилие
warez       пиратское програмное обеспечение

Итак, вполне очевидно, что лучше всего взять список MESD или Dansguardian. Какой из них выбрать - оставляю на Ваше личное усмотрение. И тот, и другой обновляются довольно часто. Но, во избежание перегрузки сервиса, не стоит качать списки чаще чем раз в неделю.

Скачав себе один из списком распакуем его в директорию /usr/local/squidGuard/db :

# tar zxvf blacklists.tgz -C /usr/local/squidGuard
# mv /usr/local/squidGuard/blacklists  /usr/local/squidGuard/db 

В директории /usr/local/squidGuard/db появилось несколько поддиректорий. В свою очередь, в каждой из них лежат файлы:

domains список доменов
urls список адресов, используемых что бы заблокировать одельную страницу, а не весь домен.
expression выражения используемые при поиске в url. Например sex, hot, teens, porno и.т.д

Если бы мы взяли официальный список squidGuard, то внутри каждой директории можно было бы увидеть файлы обновлений к базам с такими названиями:

domains.20020825.diff
domains.20020901.diff
domains.20020908.diff
domains.20020915.diff
domains.20020922.diff

Внутри каждого из этих файлов находятся записи вида:

+xratedpornsite.com
+209.51.157.43
-zena.cenhost.com
-scuzz.xtac.com  


Так же в директории находятся файлы:

urls.20020825.diff
urls.20020901.diff
urls.20020908.diff
urls.20020915.diff
urls.20020922.diff 

С записями вроде

-silva.org/look_at_me
+recom.it/fuck/beatrice

Записи, начинающиеся знаком "+", это запрос на добавление строчки в главную базу. Соответственно, строки с минусом имеют обратное назначение. К сожалению применить файлы обновления можно только к базе в формате Berkeley DB. Выполняется это действие командой squidGuard -u. Мне кажется, что такой способ обновления не очень удобен. Поэтому нам следует либо отказаться от списка доменов составленного squidGuard, либо написать конвертор обновлений в нормальный формат.


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