


| Связка Apache, Squid, Rejik |
|
|
| Автор: 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 будут приняты изменения конфигурации, в том числе и нашего редиректа. ######################################################################### ######################################################################### |
| Карта сайтаПартнеры |