[LinuxFocus-icon]
Домой  |  Карта  |  Индекс  |  Поиск

Новости | Архивы | Ссылки | Про LF
[an error occurred while processing this directive]
[DSOberoi]
автор D.S.Oberoi
<ds_oberoi(at)yahoo.com>

Об авторе:
D.S. Oberoi живет в Jammu, Индия. В настоящее время у него, из-за текущей политической ситуации в Индии, проблемы с выходом в Интернет.

Перевод на Русский:
Igor "Devigor" Chubin <devigor(at)mail.ru>

Содержание:

 

Установка прокси-сервера Squid

[squid]

Резюме:

Linux стал синонимом Сети. Он используется дома, на работе; как файл-, принт-, почтовый сервер и все чаще и чаще используется как proxy.

Proxy-сервер при помощи разделения Интернет-соединения предоставляет одновременный доступ к Интернет сразу нескольким пользователям. Хороший proxy-сервер кроме того еще и кэширует запросы, т.е. помогает получать данные локально, вместо того чтобы вытягивать их из Интернета, уменьшая таким образом время доступа и поток данных. Squid это одна из таких программ, поддерживающая proxy, кэширование HTTP, ftp , gopher и других данных. Кроме того, он поддерживает SSL, управление доступом, кэширование DNS-запросов и может вести полную журнализацию всех запросов. Squid хорошо работает и под Windows NT (Logi Sense).
Эта статья рассказывает о том, как установить прокси-сервер и о том как обеспечить к нему контролируемый доступ пользователей.



 

Squid установлен ?

Squid в виде rpm-пакета входит в состав дистрибутива RedHat 7.1 и автоматически инсталлируется при выборе варианта инсталляции Network OS. Проверить, установлен squid или нет, можно при помощи следующей rpm-команды:
rpm -q squid
   
Последнюю версию Squid сожно всегда получить на домашнем майте Squid или его зеркалах. Squid можно проинсталлировать при помощи следующей rpm-команды:
rpm -ivh squid-2.3.STABLE4-10.i386.rpm
   
 

Конфигурирование Squid

Поведением Squid'a можно управлять конфигурационными параметрами, указанными в его конфигурационном файле squid.conf; этот файл как правило располагается в каталоге /etc/squid. Конфигурационный файл squid.conf огромен, он идет страница за страницей, но главное, и это очень хорошо, что все опции в этом файле ясно описаны и продукоментированы.

Первое, что надо изменить это http_port, который определяет адрес сокета, на котором Squid будет слушать клиентские запросы; по умолчанию это 3128, но может использоваться любое значение, указанное пользователем. Наряду со значением порта, можно задать IP-адрес машины, на которой работает Squid; его тоже можно изменить:

http_port 192.168.0.1:8080

Вышеприведенным объявлением Squid привызывается к IP-адресу 192.168.0.1 и порту 8080. Адрес порта может быть любым, но надо быть уверенным, что никакие другие приложения не используют этот порт. Похожими конфигурационными строками можно установить порты запросов для других сервисов.  

Управление доступом

Механизмы управления доступом в Squid позволяют гибко реализовывать политику доутспа к Интернет-ресурсам, основываясь на временных интервалах, информации о кэшировании, доступа к определенным сайтам и т.д. Управление доступом в Squid основывается на двух различных компонентах: ACL-элементах и списках доступа (access list). Список доступа фактически разрешает или запрещает доступ к сервису.

Некоторые наиболее важные типы ACL-элементов перечислены ниже
Чтобы применить , надо определить набор ACL и применить к ним правила. Формат ACL-выражений:

acl   acl_element_name   type_of_acl_element values_to_acl

Замечание:
  1. acl_element_name может быть любыи именем, назначенным пользователем ACL элементу.
  2. Два ACL не могут иметь одинаковоем имя;
  3. Любой ACL состоит из списка значений. При проверке на соотвествие нескольким значениям используется ИЛИ-логика. Другими словами, ACL элемент соответствует, когда найдено соответствие хотя бы для одного из значений.
  4. Не все ACL-эементы могут использоваться с списками доступа всех типов.
  5. Различные ACL элементы, расположенные на разных строках, группируются Squid'ом в единый список;
Доступно несколько различных типов списков доступа. Те которые мы собираемся использовать приведены ниже: Замечание:
  1. Правила проверяются в том порядке, в котором они записаны; проверка прерывается, как только найдено соответствие одному из правил;
  2. Список доступа может состоять из нескольких правил;
  3. Если не было найдено соответствие ни одному из правил, то выполняется действие по умолчанию, противоположное последнему правилу в списке. Действие по умолчанию лучше указывать явно.
  4. Над всеми элементами в списке доступа выполняется операция И (AND), а несколько выражений http_acess объединяются операцией ИЛИ (OR). Выполнение происходит следующим образом:
    http_access Action statement1 AND statement2 AND statement OR
    http_access Action statement3
    
  5. Запомните, что правила всегда читаются снизу вверх.
 

Опять конфигурирование

По умолчанию, Squid не дает никаких прав доступа клиентам, а для того чтобы права были, необходимо модифицировать настройки управления доступом. Нужно указать правила, разрешающие доступ. Прокрутите файл squid.conf и введите следующие строки прямо за строкой http_acess deny all.

acl mynetwork 192.168.0.1/255.255.255.0
http_access allow mynetwork

mynetwork это acl-имя, а следующая строка - это правило, применяемое к данному acl т.е. mynetwork. 192.168.0.1 описывает адрес сети маской котороя является 255.255.255.0. mynetwork дает имя группе машин в сети, а правило -- разрешает доступ клиентам. Этих изменений наряду с установкой http_port'а достаточно для того чтобы пустить Squid в дело. После внесения изменений Squid может быть запущен командой

service squid start

Замечание:
Squid может быть запущен автоматически в момент загрузки системы, путем включения его в ntsysv или setup (System Service Menu). После каждого изменения конфигурационного файла, текущий процесс Squid'a должен быть остановлен и для того чтобы изменения вступили в силу -- запущен снова. Эти шаги могут быть выполнены следующими командами:
  1. service squid restart или
  2. /etc/rc.d/init.d/squid restart
 

Конфигурация клиентской машины

Поскольку запросам клиента назначен определенный порт прокси-сервера, клиенты должны быть сконфигурированы соответствующим образом. Предположим, что машины уже подсоединены к сети (причем с правильными IP-адресами) и могут пинговать Linux-сервер.

Для Internet Explorer'а
  1. Зайти в Tools -> Internet Options
  2. Выбрать раздел Connection и в нем щелкнуть на LAN Setting
  3. Ввести IP-адрес прокси-сервера и порт, который обслуживает клиентские запросы (адрес http_port).

Для Netscape Navigator'a
  1. Зайти в Edit -> Preference -> Advanced -> Proxies;
  2. Выбрать Manual Proxy Configuration;
  3. Щелкнуть по кнопке View;
  4. Ввести IP-адрес прокси-сервера и адрес порта, на котором обслуживаются запросы клиентов (адрес http_port).
 

Управление доступом

Разнообразные механизмы и правила управления доступом предлагают очень хороший и гибкий путь контроля клиентского доступа к Интернет. Примеры наиболее часто используемых настроек приведены ниже; ни в коем случае нельзя ограничиваться только этими настройками.
  1. Разрешить доступ к Интернет выбранным машинам

    acl allowed_clients src 192.168.0.10 192.168.0.20 192.168.0.30
    http_access allow allowed_clients
    http_access deny !allowed_clients

    Здесь разрешен доступ к Интернет машинам с IP-адресами 192.168.0.10, 192.168.0.20 и 192.168.0.30, а всем остальным (в списке их нет) -- запрещен.
  2. Ограничить доступ определенным временем:

    acl allowed_clients src 192.168.0.1/255.255.255.0
    acl regular_days time MTWHF 10:00-16:00
    http_access allow allowed_clients regular_days
    http_access deny allowed_clients

    Здесь доступ предоставляется всем машинам сети 192.168.0.1 в течение времени с понедельника по пятницу с 10:00 утра до 4:00 дня.
  3. Доступ в разное время для разных клиентов

    acl host1 src192.168.0.10
    acl host2 src 192.168.0.20
    acl host3 src 192.168.0.30
    acl morning time 10:00-13:00
    acl lunch time 13:30-14:30
    acl evening time 15:00-18:00
    http_access allow host1 morning
    http_access allow host1 evening
    http_access allow host2 lunch
    http_access allow host3 evening
    http_access deny all

    Вышеприведенные правила разрешают доступ компьютеру host1 утром (с 10:00 до 13:00) и вечером (с 15:00 до 18:00), а компьютерам host2 и host3 после обеда (с 13:30 до 14:30) и вечером соответственно (с 15:00 до 18:00).
    Замечание:
    Все элементы записи доступа объединяются операцией И (AND) и выполняются следующим образом

    http_access Action statement1 AND statement2 AND statement OR.

    множественные объявления http_access объедяинются операцией ИЛИ (OR), а элементы доступа в них объединяются операцией И. В связи с этим строка

    http_access allow host1 morning evening

    никогда не сработает, поскольку выражений morning AND evening никогда не будет истинным (утро И вечер никогда не пересекуться), и, следовательно, никаких действий не будет.
  4. Блокирование сайтов
    Squid может предотвратить доступ к определенным сайтам или сайтам, адрес которых содержит определенное слово. Это может быть реализовано следующим образом:

    acl allowed_clients src 192.168.0.1/255.255.255.0
    acl banned_sites url_regex abc.com *()(*.com
    http_access deny banned_sites
    http_access allow allowed_clients

    Аналогичным образом можно запретить доступ к сайтам, адрес которых содержит определенное слов, например dummy и fake

    acl allowed_clients src 192.168.0.1/255.255.255.0
    acl banned_sites url_regex dummy fake
    http_access deny banned_sites
    http_access allow allowed_machines

    acl allowed_clients src 192.168.0.1/255.255.255.0
    acl banned_sites url_regex "/etc/banned.list"
    http_access deny banned_sites
    http_access allow allowed_clients

  5. Оптимизация
    Squid может ограничивать максимальное количество соединений при помощи элемента maxconn. Для использования этой возможности, должна быть включена поддержка client_db.

    acl mynetwork 192.168.0.1/255.255.255.0
    acl numconn maxconn 5
    http_access deny mynetwork numconn

    Замечание: ACL maxconn использует сравнение "меньше-чем". ACL срабатывает, если количество соединений больше заданного значения. Поэтому maxconn и не указывается в списке http_access.
  6. Кэширование
    Ответы на запросы кэшируются и это хорошо для статических страниц. Нет никакого смысла кэшировать cgi-страницы или сервлеты. Это можно предотвратить использованием ACL-элемента no_cache.

    acl cache_prevent1 url_regex cgi-bin /?
    acl cache_prevent2 url_regex Servlet
    no_cache deny cache_prevent1
    no_cache deny cache_prevent2

  7. Создание собственных сообщений об ошибках
    Вы можете создать свои собственные сообщения об ошибках доступа при помощи опции deny_info. Все сообщения об ошибках Squid по умолчанию хранятся в каталоге /etc/squid/errors. Каталог с файлами сообщений об ошибках может быть изменен при помощи error_directory. Можно даже изменить сами сообщения.

    acl allowed_clients src 192.168.0.1/255.255.255.0
    acl banned_sites url_regex abc.com *()(*.com
    http_access deny banned_sites
    deny_info ERR_BANNED_SITE banned_sites
    http_access allow allowed_clients

    В вышеприведенном примере специальное сообщение отображается как только пользователь пытается получить доступ к сайту, содержащему в названии запрещенное слово. Файл с именем ERR_BANNED_SITE должен находится в вышеприведенном каталоге ошибок. Сообщение об ошибке должно быть в HTML-формате.
    Все рассмотренные примеры, демонстрируют лишь небольшую часть реальных возможностей ACL. Объяснения назначения ACL-элементов и элементов доступа, необходимое для более серьезного их использования можно найти в FAQ на домашней странице Squid.
 

Файлы журналов

Все журнальные файлы (log files) Squid'а находятся в каталоге /var/log/squid; там хранится журнал кэширования(cache.log), журнал доступа (access.log) и менеджера хранения (store.log). Файл access.log содержит информацию о запросах клиентов, их активности и хранит запись для каждого HTTP и ICP запроса, полученного прокси-сервером: IP-адрес клиента, метод запроса, запрошенный URL и т.д. Данные этого файла могут быть использованы для анализа информации о доступе к Интернету. Существует множество программ таких как sarg, calamaris, Squid-Log-Analyzer , которые могут производить анализ данных и составлять соответствующие отчеты в HTML-формате. Отчет может строиться относительно пользователей, посещенных сайтов, IP-адресов и т.д.

Расположение журнальных файлов может быть изменено следующими опциями
cache_access_log      Для access.log
cache_log             Для cache.log
cache_store_log       Для store.log (Управление хранением)
pid_filename          Файл, хранящий PID Squid'a
 

Методы аутентификации

По умолчанию Squid позволяет любому пользователю получить доступ к Интернету без всякой проверки его личности. Для того чтобы предоставить доступ к Интернет, только пользователям имеющим на это право (с любой машины в сети), Squid предоставляет возможность аутентификации при помощи внешней программы, которая требует верного имени пользователя и пароля. Это достигается при помощи использования ACL proxy_auth и программы аутентификации authenticate_program, которая заставляет пользователя ввести имя и пароль, прежде чем предоставит доступ к Cети. Доступно несколько программ, которые Squid может использовать для проверки подлинности:
  1. LDAP : Использует Linux Lightweight Directory Access Protocol;
  2. NCSA : Использует файл пользователей и паролей в стиле NCSA;
  3. SMB : Использует SMB сервер, как SAMBA или Windows NT;
  4. MSNT : Использует аутентификационный домен Windows NT;
  5. PAM : Использует Linux Pluggable Authentication Modules;
  6. getpwam : Использует файл паролей Linux.
Необходимо указать программы аутентификации при помощи опции authenticate_program, предварительно убедившись, что соответсвующая программа установлена и правильно работает.

Изменения в файле squid.conf теперь также должны учитывать эту программу аутентификации.

acl pass proxy_auth REQUIRED
acl mynetwork src 192.168.0.1/255.255.255.0
http_access deny !mynetwork
http_access allow pass
http_access deny all

This uses the PAM authentication program and all users need to authenticate before accessing the Internet.

Для изменения процесса аутентификации могут использоваться опции подобные authenticate_ttl и authenticate_ip_ttl.  

Ссылки

Эта статья лишь затрагивает вершину айсберга Squid; для более глубокого изучения можно посетить следующие Web-сайты:  

Страница отзывов

У каждой заметки есть страница отзывов. На этой странице вы можете оставить свой комментарий или просмотреть комментарии других читателей.
 talkback page 

Webpages maintained by the LinuxFocus Editor team
© D.S.Oberoi, FDL
LinuxFocus.org

Click here to report a fault or send a comment to LinuxFocus
Translation information:
en --> -- : D.S.Oberoi <ds_oberoi(at)yahoo.com>
en --> ru: Igor "Devigor" Chubin <devigor(at)mail.ru>

2002-03-02, generated by lfparser version 2.19