The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Раздел полезных советов: Настройка Squid в связке с &nb..."
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Раздел полезных советов: Настройка Squid в связке с &nb..."  +/
Сообщение от auto_tips (ok) on 05-Июл-10, 23:09 
Введение:

В статье хочу поделиться своим вариантом установки и конфигурирования
прокси сервера 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:         &n...
   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, и отсюда :)


URL:
Обсуждается: http://www.opennet.dev/tips/info/2403.shtml

Высказать мнение | Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по ответам | RSS]

1. "Настройка Squid в связке с  Rejik"  +/
Сообщение от mef (ok) on 05-Июл-10, 23:09 
Почему ставится из пакетов, а не из портов?
Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

2. "Настройка Squid в связке с  Rejik"  +/
Сообщение от Vitaly_loki (ok) on 06-Июл-10, 10:13 
ИМХО к теме статьи это не имеет никакого отношения )))
Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

3. "Настройка Squid в связке с  Rejik"  +/
Сообщение от mitiok (??) on 06-Июл-10, 23:37 
сходу coredump_dir и cache_store_log вовсе не то что написано. и второй лучше не выключать, оченьполезные вещи говорит.

редирект на http://127.0.0.1/ оригинальная вещь...

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

4. "Настройка Squid в связке с  Rejik"  +/
Сообщение от AlexeyZonov (ok) on 07-Июл-10, 09:20 
Убило наповал:
==
Увидеть что SQUID корректно запустился, можно посмотрев:

vi /var/log/messages
==

Уже изобрели (сюрприз!-сюрприз!) less и tail, а лучше "grep squid /var/log/messages | less".

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

5. "Настройка Squid в связке с  Rejik"  +/
Сообщение от kvasik (ok) on 07-Июл-10, 10:01 
2 mef

Конечно, более правильным способом является установка из портов, предварительно обновив дерево портов. Но установка занимает заметно больше времени, для сервисов внутренней сети считаю это не принципиальным.  

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

6. "Настройка Squid в связке с  Rejik"  +/
Сообщение от Filosof email(ok) on 07-Июл-10, 14:27 
ну что ж вы так бурно реагируете? вот есть у человека привычки. как надо так и работает.
кста, с точки срения набора лишних символов его вариант оптимальней -:)
Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

7. "Настройка Squid в связке с  Rejik"  +/
Сообщение от AlexeyZonov (ok) on 07-Июл-10, 14:52 
А протестируйте, плиз, ситуацию:

vi /var/log/messages
(демончики пинают и пинают syslogd)
:wq

":wq" тут ведь тоже смотрится логично, раз есть "привычки"? ;-) Опасная привычка перебегать 6-полосное шоссе (даже в ярко-полосатых трусах) - может и не повезти...

Упростим, пусть он всегда выходит ":q!". Тогда, например, этот файл имеет огрооомный размер. Что там с местом в /tmp/[?]/vi.recovery/ ? ;-)  За messages не скажу, а вот мейллог к обеду уже:
[az@wcgate ~]$ ls -l /var/log/maillog
-rw-r-----  1 root  wheel  45804764 Jul  7 14:44 /var/log/maillog

Мой вариант, кстати, лечит не ту проблему. Проблему лечит нечто вроде "ps ax|grep squid", а то может сквид написал в лог "я тут запустился" и тихо умер. 8-)  А если в памяти его нет, то тогда и логи в грепы.

Не воспримите, как обвинение в полном неумении автора, но когда делаешь фак - надо быть уверенным в своих базовых знаниях. Шурупы отвёрткой, гвозди молотком, взболтать, но не смешивать. ;-)

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

8. "Настройка Squid в связке с  Rejik"  +/
Сообщение от mitiok (??) on 07-Июл-10, 14:53 
>сходу coredump_dir и cache_store_log вовсе не то что написано. и второй лучше
>не выключать, оченьполезные вещи говорит.

попутал. cache_log лучше не выключать. cache_store_log можно

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

9. "Настройка Squid в связке с  Rejik"  +/
Сообщение от mitiok (??) on 07-Июл-10, 14:58 
>[az@wcgate ~]$ ls -l /var/log/maillog

ну он мессаги смотрел, а не мейллог. чую ньюсислог не правил, а значит он у него 100кил максимум.

но конечно ужасужас в любом случае

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

10. "Настройка Squid в связке с  Rejik"  +/
Сообщение от AlexeyZonov (ok) on 07-Июл-10, 15:11 
"Сегодня ты играешь джаз, а завтра..." (с)

Он же и мейллоги смотрит так же? Научится ещё пару нужных штук прикручивать, вырастет (в плане unix-админа), устроится на работу в толстую контору, зайдёт на нагруженную систему, глянет на мейлог таким способом и место в /tmp что? Правильно, дадут по рукам больно.

А теперь и ему не дадут и другие, почитав моё нудение ;-), узнают про less, tail/head и grep. less, кстати, совместим с vi по командам. Этот, как его, забываю всё... а! юникс-вей, во! ;-)

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

11. "Настройка Squid в связке с  Rejik"  +/
Сообщение от mitiok (??) on 07-Июл-10, 20:26 
кстати, автор, скрипт для удаления коментариев обычно не нужен - можно поюзать чёнить типа
grep -v ^\ \*# squid.conf | grep .
ну или простое совсем
grep -v ^# squid.conf | grep .
Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

12. "Настройка Squid в связке с  Rejik"  +/
Сообщение от Filosof email(ok) on 08-Июл-10, 00:39 
>[оверквотинг удален]
>/var/log/maillog
>
>Мой вариант, кстати, лечит не ту проблему. Проблему лечит нечто вроде "ps
>ax|grep squid", а то может сквид написал в лог "я тут
>запустился" и тихо умер. 8-)  А если в памяти его
>нет, то тогда и логи в грепы.
>
>Не воспримите, как обвинение в полном неумении автора, но когда делаешь фак
>- надо быть уверенным в своих базовых знаниях. Шурупы отвёрткой, гвозди
>молотком, взболтать, но не смешивать. ;-)

Звучало как обвинение, а в качестве мини-мастер-класса пойдёт -:)
Это как "хороший стиль программирования" Если идея подана херово - ничо, додебагится, хоть я себя и заставляю сразу логи тейлом читать.

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

13. "Настройка Squid в связке с  Rejik"  +/
Сообщение от tonys (ok) on 08-Июл-10, 16:01 
Автор скромно умолчал, что бан-листы banlists-2.x.x.tgz для режика датированы 2003-м годом. Актуальные листы доступны только через DBL.

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

14. "Настройка Squid в связке с  Rejik"  +/
Сообщение от kvasik (ok) on 08-Июл-10, 20:15 
>Не воспримите, как обвинение в полном неумении автора, но когда делаешь фак
>- надо быть уверенным в своих базовых знаниях. Шурупы отвёрткой, гвозди
>молотком, взболтать, но не смешивать. ;-)

2 AlexeyZonov
Да нет, информация лишней не бывает.
В интернет довольно много информации, где описано как правильно посмотреть запущен ли демон. В данном случае, хотел внести нотку разнообразия, с мыслью о том где можно посмотреть о возможных ошибках.  
А вот к столь критическим замечаниям, к теме особо не относящейся к статье, могу думать о отсутствии альтернативных способов самоутверждения критикана :)
Впрочем, разве что не в спорах рождается истина? :)


Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

15. "Настройка Squid в связке с  Rejik"  +/
Сообщение от ононим on 08-Июл-10, 22:04 
имеет смысл использовать фильтры от адблока-фаерфокс для сквида. режик уже не актуален.
Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

16. "Настройка Squid в связке с  Rejik"  +/
Сообщение от vovans (ok) on 13-Июл-10, 18:28 
Зачем возиться с портами, когда есть готовые пакеты?
Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

17. "Настройка Squid в связке с  Rejik"  +/
Сообщение от vovans (ok) on 15-Июл-10, 12:31 
да уж.. толку от режика без свежих чёрных списков? :(
Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

18. "Настройка Squid в связке с  Rejik"  +/
Сообщение от slepnoga (??) on 28-Июл-10, 17:14 
выкинул его из оверлея - толку не ощутил.проект почти мертвый
Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

19. "Настройка Squid в связке с  Rejik"  +/
Сообщение от vovans (ok) on 13-Авг-10, 21:57 
>выкинул его из оверлея - толку не ощутил.проект почти мертвый

да и верно. Понимаю. Вот только что использовать в качестве альтернативы? Сильно вопросом не интересовался, так как пока режик работает, но вообще хорошо бы с него того... слазать бы уже...

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору


Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру