Документация по ОС FreeBSD Воскресенье, 05.05.2024, 15:24
Приветствую Вас Гость | RSS
Меню сайта

Категории каталога
Apache [58]
DNS [25]
FTP [27]
Mail [74]
Samba [24]
Squid [46]
SSH [23]
VPN [35]
РРР [20]
Net [173]

Главная » Статьи » Сеть » Squid

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

Конфигурирование 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-элементов перечислены ниже
  • src: Источник, т.е. IP-адрес клиента
  • dst: Приемник, т.е. IP-адрес сервера
  • srcdomain: Источник, т.е. доменное имя клиента
  • dstdomain: Приемник, т.е. доменное имя сервера
  • time: Время дня и день недели
  • url_regex: Регулярное выражение для проверки соответсвия URL
  • urlpath_regex: Регулярное выражение для проверки соответвия URL-пути вместе с названием протокола и именем хоста
  • proxy_auth: Проверка подлинности пользователя при помощи внешнего процесса
  • maxconn: Максимальное количество соединений на один клиентский IP-адрес;
Чтобы применить , надо определить набор 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'ом в единый список;
Доступно несколько различных типов списков доступа. Те которые мы собираемся использовать приведены ниже:
  • http_access: Позволяет HTTP-клиентам осуществлять доступ на HTTP-порт. Это основной список управления доступом.
  • no_cache: Определяет кэширование ответов на запросы.
Замечание:
  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 | Добавил: oleg (19.10.2007)
Просмотров: 2173 | Комментарии: 1 | Рейтинг: 0.0/0 |
Всего комментариев: 1
1 Armen  
0
Здравствуйте!
У меня Fedora 8, и я решил применить Squid.
Squid заработал, однако в почты yahoo зайти невозможно.
Squid пишет The remote host or network may be down. Please try request again.
Все настройки порта 443 я вроде сдалал(
http_access allow SSL_ports
http_access deny !Safe_ports
http_access allow our_networks).
В чем дело.
Помогите пожалуйста.
armjer@mail.ru

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа

Beastie

Друзья сайта

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
links

Copyright MyCorp © 2024