Библиотека сайта 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 | нет | нет | сайты разрешенные местным админом | |
бесплатные почтовые сервера | ||||
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 |