Документация по ОС FreeBSD
Суббота, 29.11.2025, 06:33
Главная
Регистрация
Вход
Приветствую Вас
Гость
|
RSS
Меню сайта
Главная страница
Новости в мире Unix
NEW
Каталог файлов
NEW
Установка и настройка
Ports & Packages
cvs
Безопасность
Работа с железом
X Window
Multimedia
Man pages
Net
Apache
DNS
FTP
Mail
Samba
Squid
SSH
VPN
РРР
Shell
IPFW
Tips'n'tricks
RFC
Книги по FreeBSD
Темы экзамена BSDA
Гостевая книга
Форум на bsdportal.ru
Каталог сайтов
Самый свежий софт
Каталог ссылок
Категории каталога
Apache
[58]
DNS
[25]
FTP
[27]
Mail
[74]
Samba
[24]
Squid
[46]
SSH
[23]
VPN
[35]
РРР
[20]
Net
[173]
Главная
»
Статьи
»
Сеть
»
Squid
Настройка Squid в связке с Rejik [2010]
Введение
В статье хочу поделиться своим вариантом установки и конфигурирования
прокси сервера SQUID в связке с Rejik для фильтрации баннеров.
В заметке довольно наглядно описан конфигурационный файл SQUID, где можно гибко
разграничить доступ по отдельным IP-адресам и на локальною подсеть.
Рабочий пример, тест на FreeBSD 8.0-RELEASE i386
Установка и настройка прокси-сервера SQUID
Ставим из пакетов:
# pkg_add -r -K squid
ключ -r загружает пакет с удаленного сервера.
ключ -K сохраняет копию пакета в текущей директории.
Конфигурируем:
vi /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
Далее создаем директорию, в которой будут хранится файлы для блокирования
ресурсов, используемые 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 корректно запустился, можно посмотрев:
vi /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
Конфигурируем
vi /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
<BANNER>
ban_dir /usr/local/rejik/banlists/banners
url http://127.0.0.1/www/1x1.gif
#log off
<PORNO>
ban_dir /usr/local/rejik/banlists/porno
url http://127.0.0.1/www/porno.html
<MP3>
ban_dir /usr/local/rejik/banlists/mp3
url http://127.0.0.1/www/mp3.html
<JS>
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
Например, чтобы заблокировать баннеры на сайте
www.test.ru, достаточно добавить эти строчки:
# cat > /usr/local/rejik/banlists/banners/urls
ad.test.ru
bannerhost.ru
doubleclick.net
pagead2.googlesyndication.com
^C
После выполнения команды:
# squid -k reconfigure
будут приняты изменения конфигурации, в том числе и нашего редиректа.
Используемая литература
/usr/local/etc/squid/squid.conf.default
Отдельное спасибо:
Моему коллеге Dok`у, за скрипт убирающий комментарии.
Сайту lissyra.su, некоторые материалы взяты оттуда.
Сайту opennet.ru, и отсюда :)
Источник:
http://www.opennet.ru/tips/2403_squid_proxy_banner_block_rejik.shtml
Категория:
Squid
| Добавил:
oleg
(11.07.2010) | Автор:
kvasik
Просмотров:
1282
| Комментарии:
2
| Рейтинг:
0.0
/
0
|
- Оценить -
Отлично
Хорошо
Неплохо
Плохо
Ужасно
Всего комментариев:
0
Добавлять комментарии могут только зарегистрированные пользователи.
[
Регистрация
|
Вход
]
Форма входа
Друзья сайта
Google+
Copyright MyCorp © 2025