• Narrow screen resolution
  • Wide screen resolution
  • Wide screen resolution
OOPS. Your Flash player is missing or outdated.Click here to update your player so you can see this content.
Главная Статьи unix Связка Apache, Squid, Rejik
Связка Apache, Squid, Rejik Печать E-mail
Рейтинг пользователей: / 1
ХудшийЛучший 
Автор: kvasik   

Связка Apache, Squid, Rejik
Протестировано на FreeBSD 8.0 i386

#########################################################################
#########################################################################
Установка сервера Apache
#########################################################################
Устанавливать софт можно из пакетов и портов, более надежным способом
является установка из портов. Дерево портов следует предварительно
обновить утилитой cvsup.

Ставим из пакетов:
# pkg_add -r -K apache
ключ -r загружает пакет с удаленного сервера.
ключ -K сохраняет копию пакета в текущей директории.

# rehash
# hash -r (в случае если shell у вас bash)
#------------------------------------------------------------------------
Изменяем настройки конф. файла apache: /usr/local/etc/apache/httpd.conf

Listen 80
ServerAdmin you@hostname.local
ServerName you.hostname.local
#------------------------------------------------------------------------
Добавим строку в /etc/rc.conf для автозапуска:
apache_enable="YES"
#------------------------------------------------------------------------
Запускаем apache:
# /usr/local/etc/rc.d/apache start
#------------------------------------------------------------------------
Проверяем открывается ли страница:
http://you-apache-server/

#########################################################################
#########################################################################
Установка и настройка прокси-сервера SQUID
#########################################################################
Ставим из пакетов:
# pkg_add -r -K squid

#------------------------------------------------------------------------
Далее, необходимо сконфигурировать прокси-сервер:

#########################################################################
#Начало файла конфигурации /usr/local/etc/squid/squid.conf
#########################################################################

#WELCOME TO SQUID 2.7.STABLE7
#========================================================================
#Имя листа доступа all, обозначающий все внутренние адреса:
acl all src all

#Имя листа доступа manager, отмечает протокол cache_object:
acl manager proto cache_object

#Имя листа доступа localhost, отмечает IP-клиента (127.0.0.1)
acl localhost src 127.0.0.1/32

#Имя листа доступа to_localhost, отмечает подсеть ресурсов:
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32

#========================================================================
#Отмечаем подсети клиентов, которые могут обращаться к SQUID:
acl localnet src 172.16.0.0/24
acl localnet src 172.16.1.0/24

#------------------------------------------------------------------------
#Имена листов доступа, с указанием ресурсов:
acl ip-block dst "/usr/local/etc/squid/block/ip-block"
acl sites-block1 dstdomain "/usr/local/etc/squid/block/sites-block1"
acl sites-block2 dstdomain .odnoklassniki.ru .vkontakte.ru

#------------------------------------------------------------------------
#Имена листов доступа, отмечающие порты и медот соединения:
acl SSL_ports port 443
acl ports-std port 21 80 443 5190 9080 9443
acl CONNECT method CONNECT

#------------------------------------------------------------------------
#Правило разрешает обращаться к КЭШу локальному ХОСТу.
http_access allow manager localhost

#Правило запрещает обращаться к КЭШу всему остальному.
http_access deny manager

#------------------------------------------------------------------------
#Правило запрещает все порты, кроме указ. в листе доступа "ports-std"
http_access deny !ports-std

#Правило запрещает соединения по методу "CONNECT" кроме порта 443:
http_access deny CONNECT !SSL_ports

#------------------------------------------------------------------------
#INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
#========================================================================
#Здесь указываем листы доступа отдельных клиентов, которым требуется
#гибко настроить уровень доступа:
#------------------------------------------------------------------------
acl user1 src 172.16.0.100
http_access allow user1
#------------------------------------------------------------------------
acl user2 src 172.16.0.101
http_access deny user2 ip-block
http_access deny user2 sites-block1
http_access allow user2
#------------------------------------------------------------------------
#------------------------------------------------------------------------
#Здесь указываем запреты для остальных клиентов нашего прокси:

http_access deny localnet ip-block
http_access deny localnet sites-block1
http_access deny localnet sites-block2
http_access allow localnet
http_access deny all

#========================================================================
#========================================================================
#========================================================================
#Блокируем доступ к КЭШу нашего сервера:
icp_access deny all

#------------------------------------------------------------------------
#Откл. ICP-порт, если др. сервера не обращаются к КЭШу нашего сервера:
icp_port 0

#Указываем порт нашего прокси:
#Если фаерволом используется редирект на прокси,
#необходимо добавить опцию "transparent":

#http_port 3128
http_port 3128 transparent

#------------------------------------------------------------------------
#Параметр указывает, какая программа использыется для редиректа. Если
#утилита не установлена в системе, то требуется закомментировать опцию.
#url_rewrite_program /usr/local/rejik/redirector /usr/local/rejik/redirector.conf

#------------------------------------------------------------------------
#Default:
#Язык страницы-блокировки, отображается при блокировании ресурсов.
#error_directory /usr/local/etc/squid/errors/English
error_directory /usr/local/etc/squid/errors/Russian-koi8-r

#------------------------------------------------------------------------
#TAG: cache_peer
#Default:
#none
#Если у вас есть родительский кеш, укажите его здесь. Администраторы
#родительского кеша обычно дают вам необходимые инструкции. Но вы всегда
#должы спрашивать разрешения перед тем, как добавить родительский кеш.

#------------------------------------------------------------------------
#Default:
#Кол-во памяти (ОЗУ) выделенной под кеширование.
#Предупреждение: реально SQUID использует больше, чем указанное здесь
#значение. Золотое правило: если вы имеете N мегабайт свободной памяти,
#которую можете отдать под squid, укажите здесь значение N/3.
#cache_mem 8 MB
cache_mem 256 MB

#------------------------------------------------------------------------
#Первое число 100 -это количество дискового пространства, отведенного
#под кеш (в мегабайтах). Второе и третье число -каталоги первого
#и второго уровня соответственно.
#Default:
#cache_dir ufs /usr/local/squid/cache 100 16 256
cache_dir ufs /usr/local/squid/cache 2048 16 256

#------------------------------------------------------------------------
#TAG: cache_mgr
#Адрес эл. почты администратора прокси-сервера, который отображается
#только на английской версии страницы, при блокировке ресурсов.
#Default:
#cache_mgr webmaster
cache_mgr you@hostname.local

#------------------------------------------------------------------------
#Default:
#Имя пользователя, от имени которого работает SQUID в системе:
#cache_effective_user squid

#------------------------------------------------------------------------
#TAG: visible_hostname
#В некоторых случаях, для работы демона SQUID, требуется указать имя
#хоста, на котором он работает.
#Default:
#none
visible_hostname you.hostname.local

#------------------------------------------------------------------------
#Default:
#Имя файла, для записи идентификатора процесса:
#pid_filename /usr/local/squid/logs/squid.pid

#------------------------------------------------------------------------
#Default:
#Показывает, какие объекты выбрасываются из кэша, и какие объекты
#сохраняются и на какой срок. Если нет утилиты для анализа этих данных,
#можно смело отключать.
#cache_log /usr/local/squid/logs/cache.log
cache_log none

#------------------------------------------------------------------------
#Default:
#Показывает, какие объекты выбрасываются из кэша, и какие объекты
#сохраняются и на какой срок. Если нет утилиты для анализа этих данных,
#можно смело отключать.
#cache_store_log /usr/local/squid/logs/store.log
cache_store_log none

#------------------------------------------------------------------------
#TAG: hierarchy_stoplist
#Список строк - через пробел, - при встрече в URL которых, запрос будет
#направлен сразу напрямую, а не "по соседям"; по-умолчанию -"cgi-bin ?":
hierarchy_stoplist cgi-bin ?

#------------------------------------------------------------------------
#TAG: access_log
#Файл журнала деятельности запросу клиента. С каждой линии HTTP или
#ICP запросу. Если статистика не нужна, указать: access_log none
access_log /usr/local/squid/logs/access.log squid

#------------------------------------------------------------------------
#TAG: refresh_pattern
#Используется, чтоб определить не устарел ли объект в КЭШе:
#usage: refresh_pattern [-i] regex min percent max [options]
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern . 0 20% 4320

#------------------------------------------------------------------------
#TAG: upgrade_http0.9
#Лист доступа shoutcast, обозн. имя заголовка по заданному выражению:
acl shoutcast rep_header X-HTTP09-First-Line ^ICY.[0-9]

#Опция upgrade_http0.9, позволяющая отключить обновл. откликов HTTP/0.9:
upgrade_http0.9 deny shoutcast

#------------------------------------------------------------------------
#TAG: broken_vary_encoding
#Лист доступа "apache", обозн. имя заголовка по заданному выражению:
acl apache rep_header Server ^Apache

#Правило разрешает принимать битые заголовки от ACL apache:
broken_vary_encoding allow apache

#------------------------------------------------------------------------
#TAG: coredump_dir
#Директория, где хранится КЭШ SQUID:
coredump_dir /usr/local/squid/cache

#########################################################################
#Конец файла конфигурации /usr/local/etc/squid/squid.conf
#########################################################################

Далее создаем директорию, в которой будут хранится файлы для блокирования
ресурсов, используемые SQUID`ом:
# mkdir /usr/local/etc/squid/block
#------------------------------------------------------------------------
Создаем сами файлы:
Список блокируемых ip-адресов:
# cat > /usr/local/etc/squid/block/ip-block
169.254.0.1
169.254.0.2
169.254.0.3

^C
#------------------------------------------------------------------------
Список блокируемых доменов:
# cat > /usr/local/etc/squid/block/sites-block1
afisha.ru
mail.ru

^C
#------------------------------------------------------------------------
Назначаем владельца, на директорию
# chown -R squid /usr/local/etc/squid/block/

#------------------------------------------------------------------------
Далее делаем первый Запуск SQUID:
# squid -z
2010/06/07 15:58:46| Creating Swap Directories

Параметр -z нужен для создания (обнуления) каталога, содержащего кэш.
Параметр -z нужен только при первом запуске.

#------------------------------------------------------------------------
После, будет создан файл squid.pid, которому необходимо задать владельца:
# chown -R squid /usr/local/squid/logs/squid.pid

После этого заработает рестарт SQUID:
# /usr/local/etc/rc.d/squid [start/stop/restart]
и реконфигурирование SQUID:
# squid -k reconfigure

#------------------------------------------------------------------------
Добавим строку в /etc/rc.conf для автозапуска squid:
squid_enable="YES"

#------------------------------------------------------------------------
Увидеть что SQUID корректно запустился, можно посмотрев:
# ee /var/log/messages
Jun 7 16:30:19 hostname squid[1014]: Squid Parent: child process 1018 started
Или внести изменения в настроки браузера :)

#========================================================================
#Возможные ошибки:
#========================================================================
Если после запуска в логах "/usr/local/squid/logs/cache.log" видно:
Could not determine fully qualified hostname.Please set 'visible_hostname
В "/usr/local/etc/squid/squid.conf" нужно указать:
visible_hostname you.hostname.local

#------------------------------------------------------------------------
Если store.log бешено растет, то поправить можно пересозданием директории
с кЭшем SQUID.

#########################################################################
#########################################################################
Установка и настройка Rejik
#########################################################################
Ставим из пакетов:
# pkg_add -r rejik

#------------------------------------------------------------------------
Копируем банлисты в рабочий каталог Режика:
В случае установки из портов:
# cp -R /usr/ports/www/rejik/work/banlists /usr/local/rejik

В случае установки из пакетов, с официального сайта http://www.rejik.ru/
Качаем файл "banlists-2.x.x.tgz" и "www.tgz", для Веб-страниц

Распаковываем банлисты:
# tar vxzf ./banlists-2.x.x.tgz
Копируем в директорию, где установлен Rejik:
# cp -R ./banlists /usr/local/rejik/

Распаковываем странички:
# tar vxzf ./www.tgz
Копируем в директорию, где лежат файлы Apache-сервера:
# cp -R ./www /usr/local/www/data
Даем права пользователю, от которого работает Apache
# chown -R www:www /usr/local/www/data/www/

Даем права пользователю на директорию Rejik, от которого работает SQUID:
# chown -R squid:squid /usr/local/rejik/
Чтобы избежать ошибок в /usr/local/squid/logs/cache.log
Can't write to file /usr/local/rejik/redirector.err: Permission denied

#------------------------------------------------------------------------
Проверяем, правильно ли прописаны пути в /usr/local/rejik/redirector.conf

#########################################################################
#Начало файла конфигурации
#########################################################################
error_log /usr/local/rejik/redirector.err
change_log /usr/local/rejik/redirector.log
make-cache /usr/local/rejik/make-cache
#allow_urls /usr/local/rejik/banlists/allow_urls


ban_dir /usr/local/rejik/banlists/banners
url http://127.0.0.1/www/1x1.gif
#log off


ban_dir /usr/local/rejik/banlists/porno
url http://127.0.0.1/www/porno.html


ban_dir /usr/local/rejik/banlists/mp3
url http://127.0.0.1/www/mp3.html


ban_dir /usr/local/rejik/banlists/js
url http://127.0.0.1/www/js.js
#log off
#########################################################################
#Конец файла конфигурации
#########################################################################

Далее, в /usr/local/etc/squid/squid.conf включаем опцию редиректа,
сняв комментарий со строки:

#url_rewrite_program /usr/local/rejik/redirector /usr/local/rejik/redirector.conf
url_rewrite_program /usr/local/rejik/redirector /usr/local/rejik/redirector.conf

#------------------------------------------------------------------------
Вносим изменения в файлы режика в соответствии по желаниям блокировки:
/usr/local/rejik/banlists/banners/urls
/usr/local/rejik/banlists/porno/urls
/usr/local/rejik/banlists/js/urls

Например, чтобы заблокировать баннеры (на момент 08.06.2010г.) на сайте
www.3dnews.ru, достаточно добавить эти строчки:

# cat > /usr/local/rejik/banlists/banners/urls
ad.3dnews.ru
bannerhost.ru
doubleclick.net
pagead2.googlesyndication.com

^C
#------------------------------------------------------------------------
После выполнения команды:
# squid -k reconfigure
будут приняты изменения конфигурации, в том числе и нашего редиректа.

#########################################################################
#########################################################################

 

Добавить комментарий


Защитный код
Обновить


Авторизация

Перевод


Новости с OpenNet


Яндекс.Метрика
Карта сайтаПартнеры