Главная Обратная связь

Дисциплины:

Архитектура (936)
Биология (6393)
География (744)
История (25)
Компьютеры (1497)
Кулинария (2184)
Культура (3938)
Литература (5778)
Математика (5918)
Медицина (9278)
Механика (2776)
Образование (13883)
Политика (26404)
Правоведение (321)
Психология (56518)
Религия (1833)
Социология (23400)
Спорт (2350)
Строительство (17942)
Технология (5741)
Транспорт (14634)
Физика (1043)
Философия (440)
Финансы (17336)
Химия (4931)
Экология (6055)
Экономика (9200)
Электроника (7621)






Proxy-сервер Squid и его установка



Общие сведения о Squid

Squid это высокопроизводительный кеширующий proxy для web клиентов, поддерживающий ftp, gopher, и http. В отличии от традиционных кеширующих программ, Squid все запросы выполняет как один, неблокируемый процесс ввода/вывода. Squid сохраняет часто запрашиваемые данные в ОЗУ, кеширует DNS запросы, не блокируется при выполнении DNS запросов, и не кеширует неудавшиеся запросы. Также поддерживает SSL, расширенный контроль доступа и полную регистрацию запросов. Используя Internet Cache Protocol (ICP), кеши Squid можно расположить иерархически для дополнительного выигрыша в пропускной способности канала.

Изначально Squid был разработан для операционной системы Linux, в последнее время появились версии Squid и для других ОС.

Squid состоит из основной программы squid, программы обработки DNS запросов dnsserver, программы скачивания FTP данных ftpget, а также некоторых инструментов управления. Когда squid запускается, он запускает заданное число dnsserver-ов, каждый из которых работает самостоятельно, блокируя только DNS запросы. Таким образом уменьшается общее время ожидания ответа DNS.

Установка Squid

Установка squid производится при помощи утилиты rpm:

rpm -ivh [имя файла пакета]

Пакет squid имеет ряд зависимостей от других пакетов, без которых он не может работать. Утилита rpm отслеживает зависимости и при необходимости выдает на консоль список требуемых пакетов.

После установки компоненты squid будут размещены приблизительно следующим образом:

- Бинарные файлы содержаться в /usr/sbin;

- В /etc располагается директория squid, в которой содержится squid.conf – файл конфигурации squid;

- В /etc/rc.d/init.d располагается файл squid – скрипт запуска, управляющий работой одноименного сервиса;

- В /var/spool/squid и /var/log/squid содержится соответственно кэш и log-фалы. Здесь же располагается файл (возможно, он появится после первого запуска) squid.out – основной лог, в котором содержатся сообщения об ошибках, если squid по каким-либо причинам не смог стартовать нормально.

Настройка Squid

Настройка squid осуществляется в файле /etc/squid/squid.conf. Указанный файл имеет огромное количество параметров, наиболее существенные из них приведены ниже.

 

Сетевые параметры и параметры кэш

Параметр: http_port <порт>

Задает порт для запроса клиентов (по умолчанию 3128).

Параметр: icp_port 3130

Порт для обмена данными с соседями по протоколу ICP, если соседей (peer) нет, следует установить icp_port 0.



Параметр: tcp_incoming_address 0.0.0.0

Указывает по какому адресу принимать входные пакеты, если хост имеет несколько интерфейсов.

Параметр: tcp_outgoing_address 0.0.0.0

При посылке указанный адрес ставится в качестве исходного.

Параметр: udp_outgoing_address 0.0.0.0

То же, но для ICP

Параметр: udp_incoming_address 0.0.0.0

То же, но для ICP при приеме.

Параметр: cache_peer <hostname> <type> <proxy-port> <icp_port>

Если имеется «соседский» кэш (прокси-сервер более высокого и одного с данным уровня), то его следует указать здесь. hostname – IP-адрес или DNS-имя соседа; type – тип parent (старший) или sibling (одного уровня) соседа; proxy-port и icp_port – порты HTTP и ICP порты соседа.

В случае parent – при отсутствии запроса в локальном кэш, он перенаправляется к parent, тот, если запроса не окажется в его кэш, пересылает его дальше и т.д. В результате возвращается готовый ответ или TCP_DENIED, в последнем случае proxy обращается к ресурсу напрямую.

В случае sibling – при отсутствии запроса в локальном кэш, запрос перенаправляется в sibling, при отсутствии запроса в нем, возвращает сообщение об этом, никаких дополнительных действий не предпринимается.

Параметр: cache_mem <объем памяти>

Здесь указывается количество памяти (ОЗУ) выделенной под кэширование. Реально Squid использует больше, чем указанное здесь значение, поэтому если имеется N мегабайт свободной памяти, которую можете отдать для Squid, здесь следует указать значение N/3.

Параметр: cache_dir <путь к каталогу> <Mbytes> <Lev-1> <Lev-2>

Определяет имя, размер и количество поддиректорий на первом и втором уровне кэша. Это связано с тем, что на диске – каждый кэшируемый объект помещается в отдельный файл, полученные файлы разносятся в двухуровневой иерархии директорий; можно иметь несколько директорий под кэш – особенно полезно иметь их на разных дисках; эксперимент показал, что при кэше в 700 МБ используется только 2 директории первого уровня; при стандартной структуре директорий кэша в него влезает миллион объектов (9 GB), если их больше, то надо увеличить число директорий верхнего уровня. Директорию самого верхнего уровня надо создавать в ручную, поддиректории создаются командой squid –z.



Пример: cache_dir /var/spool/squid 100 15 256

Параметр: cache_swap_high <число>

При достижение этого уровня заполнения кэш (в процентном соотношении) начинается ускоренный процесс удаления старых объектов.

Параметр: cache_swap_low <число>

Процесс удаления прекращается при достижении этого уровня (в процентах).

Параметр: maximum_object_size 4096 KB

Максимальный размер кэшируемого объекта.

Параметр: minimum_object_size 0 KB

Файлы меньшего размера не сохраняются.

 

Параметры внешних программ

Параметр: ftp_user email-адрес

Будет использоваться вместо пароля при анонимном доступе к ftp-серверам.

Параметр: dns_nameservers список-IP-адресов

Используется вместо того списка DNS-серверов, который определен в /etc/resolv.conf, по умолчанию этот параметр – none.

Параметр: authenticate_program none

Позволяет производить аутентификацию клиентов, делающих запросы. При этом должны быть определены списки доступа с именами пользователей.

 

Параметры доступа

Параметр: acl <имя> <тип> <строка>

Определение списка доступа. Здесь <тип> – это тип объекта, а строка – это регулярное выражение. В таблице приведены допустимые типы:

Тип Описание
src ip-address/netmask IP адрес клиентов
src addr1-addr2/netmask диапазон адресов
dst ip-address/netmask URL хостов
time [day-abbrevs] [h1:m1-h2:m2] Время, где день это одна буква из SMTWHFA
port список портов
port port1-port2 диапазон портов
proto протокол HTTP/FTP
method метод GET/POST
browser [-i] regexp сравнивается заголовок User-Agent (-i – игнорирует регистр букв)
url_regex <строка> строка содержащаяся в URL имене

 

Параметр: http_access allow|deny acl-name

Разрешает allow или запрещает deny доступ к proxy-серверу по протоколу HTTP для указанного списка доступа acl-name.

Параметр: icp_access allow|deny acl-name

Разрешает allow или запрещает deny доступ к proxy-серверу по протоколу ICP (Internet Cache Protocol) для указанного списка доступа acl-name.

Параметр: miss_access allow|deny acl-name

Разрешает allow или запрещает deny получать ответ MISS от proxy-сервера для указанного списка доступа acl-name.

Параметр: cache_peer_access cache-host allow|deny acl-name

Разрешает allow или запрещает deny запросы к указанному соседу cache-host (расширение для cache_peer_domain).

 

Пример использования списков доступа.

#################################################

#список доступа с именем localhost

acl localhost src 127.0.0.1/255.255.255.255

 

#список доступа с именем all включающий все ЭВМ

acl all src 0.0.0.0/0.0.0.0

 

#список доступа с именем allowed_hosts включающий ЭВМ подсети 192.168.10.0

acl allowed_hosts src 192.168.10.0/255.255.255.0

 

#разрешение ЭВМ из списка allowed_hosts доступ к proxy по HTTP

http_access allow allowed_hosts

 

#запрещение всем ЭВМ доступ к proxy по HTTP

http_access deny all

 

#разрешение ЭВМ из списка allowed_hosts доступ к proxy по ICP

icp_access allow allowed_hosts

 

#запрещение всем ЭВМ доступ к proxy по HTTP

icp_access deny all

 

#разрешение ЭВМ из списка allowed_hosts получение MISS

miss_access allow allowed_hosts

 

#запрещение всем ЭВМ получение MISS

miss_access deny all

#################################################

Пример использования списков доступа для запрета доступа к URL адресам по шаблону.

#################################################

#запрет доступа к URL-адресам содержащим подстроку games

acl url_games url_regex games

http_access deny url_games

#################################################

 

Параметры администрирования

Параметр: cache_mgr <E-mail>

Задает адрес e-mail администратора, отвечающего за работу proxy/

Параметр: cache_effective_user <пользователь>

Параметр: cache_effective_group <группа>

Здесь следует указать безопасного пользователя и группу от которых будет запускаться squid (обычно nobody и nogroup). Не следует использовать для запуска пользователя root по соображениям безопасности.

Параметр: visible_hostname <имя>

Имя хоста, представляющего кэш, которое будет упоминаться в сообщениях об ошибках.

 

Параметры протоколирования.

Параметр: cache_access_log /etc/logs/squid/access.log

Протоколируется каждый запрос к SQUID

Параметр: cache_log /etc/logs/squid/cache.log

Журнал запусков процессов

Параметр: cache_store_log /etc/logs/squid/store.log

Журнал записи объектов в кэш.

Если какой-то журнал не нужен, следует установить none вместо имении файла.

 

Настройка авторизации пользователей

В случае если необходимо производить авторизацию пользователей для доступа к squid, следует выполнить следующее:

Во-первых, необходимо выбрать программу, осуществляющую авторизацию, что выполняется при помощи параметра:

Параметр: auth_param <схема авторизаци> <программа авторизации> <файл паролей>

В качестве схемы необходимо указать basic program, для авторизации удобнее всего использовать программу /usr/lib/squid/ncsa_auth, а файл паролей чаще всего размещается /etc/squid/passwd.

Здесь же необходимо настроить squid на соответствующий режим работы, при помощи строк:

auth_param basic children 5

auth_param basic realm Squid proxy-caching web server

auth_param basic credentialsttl 2 hours

Они чаще всего в squid.conf уже содержатся.

Во-вторых необходимо создать пользователей и задать им пароли, т.е. заполнить файл /etc/squid/passwd. Осуществляется это при помощи программы htpasswd, которая имеет следующий синтаксис:

htpasswd [options] passwordfile username

где passwordfile имя файла, содержащего имена пользователей и пароли (в нашем случае /etc/squid/passwd), а username – имя нового пользователя. При первом запуске программы (т.е. когда файл passwordfile еще не существует) следует указывать опцию –c для создания файла.

В-третьих, создать списки доступа, соответствующие каждому пользователю, и разрешить или запретить им доступ к тому или иному сервису. Например,

#списки доступа с именами пользователей из /etc/squid/passwd

acl user_jakovlev proxy_auth jakovlev

acl user_student proxy_auth student

#запрет или разрешение пользователей

http_access allow user_jakovlev

http_access deny user_student

Следует учитывать, что разрешения и запрещения в файле squid.conf просматриваются строго в порядке их написания и в случае обнаружения первого совпадения (независимо – разрешения или запрета) дальнейший просмотр файла не продолжается.

Поэтому, в том случае если необходимо, некоторых пользователей авторизовать по имени, с некоторые ЭВМ разрешить доступ независимо от имени пользователя, и при этом еще и осуществлять фильтрацию URL-адресов, правила следует указывать в следующем порядке:

- фильтрация URL-адресов;

- разрешение отдельных ЭВМ независимо от имени пользователя;

- авторизация пользователе.

Запуск Squid

После конфигурирования squid, следует произвести его запуск. Для этого необходимо выполнить команду:

squid –z

для создания файлов-журналов и файлов-кэш. После этого следует проверить журналы на предмет выявления ошибок (Появление предупреждения WARNING: Cannot write to swap directory нормально для первого запуска Squid).

А затем произвести собственно запуск squid., командой:

squid

После этого можно произвести конфигурирование автозапуска сервиса squid (для того чтоб не запускать его вручную при каждом перезапуске), что осуществляется при помощи утилиты chkconfig и произвести запуск сервиса при помощи команды service.

Используя chkconfig необходимо установить в on уровни:

- третий – полнофункциональный многопользовательский режим;

- пятый – данный уровень используется для автоматической загрузки при старте Xwindows;

Варианты заданий на лабораторную работу

Вариант Задание
Разрешить доступ в Internet независимо от пользователя ЭВМ с адресами в диапазоне 192.168.8.172 – 192.168.8.174. С остальных ЭВМ в подсети 192.168.8.0 разрешить доступ только пользователю с заранее созданным именем.
Разрешить доступ в Internet независимо от пользователя ЭВМ с адресами в диапазоне 192.168.8.176 – 192.168.8.178. Запретить любое обращение к proxy-серверу ЭВМ с адресом 192.168.8.171. Разрешить доступ пользователю с заранее созданным именем к любому адресу в Internet,за исключением адресов, содержащих подстроку inbox.
Разрешить доступ в Internet независимо от пользователя ЭВМ с адресами в диапазоне 192.168.8.176 – 192.168.8.178 только по адресам, содержащим подстроку inbox, доступ ко всем остальным серверам запретить. Разрешить пользователю с заранее созданным именем доступ с любой ЭВМ подсети 192.168.8.0 доступ лишь к серверам с адресами, содержащими подстроку mail.
Разрешить доступ в Internet любому пользователю локальной ЭВМ и только определенным пользователям с других ЭВМ подсети 192.168.8.0. При этом запретить любой доступ к серверам, адреса которых содержат подстроку inbox.
Запретить доступ к FTP-серверу кафедры (192.168.8.254) всем кроме пользователя с заранее созданным именем. Запретить доступ к серверам, содержащим в адресе подстроку mail с ЭВМ 192.168.8.171, все остальные ЭВМ подсети 192.168.8.0, напротив, могут обращаться только к таким серверам.
Разрешить доступ к FTP-серверу кафедры (192.168.8.254) только с ЭВМ, адреса которых лежат в диапазоне 192.168.8.172 – 192.168.8.175. Позволить пользователю с заранее созданным именем полный доступ в Internet. Ограничить доступ по адресам, содержащим подстроку yandex для ЭВМ с адресом 192.168.8.172.

14.4 Оформление отчёта

В отчёте привести задание на работу, изменения, внесённые в конфигурационный файл squid, команды, использованные при настройке squid и строки из лог-файла, подтверждающие работу настроенного прокси-сервера. Сделать вывод по проделанной работе.

Контрольные вопросы

1. Назначение и способ работы proxy-сервера.

2. Каким образом настраивается squid?

3. Что такое acl? Пример использования.

4. Как можно разрешить или запретить доступ по протоколу http в squid?

5. За что отвечает параметр cache_peer?

6. Каким образом в squid можно настроить авторизацию пользователей?


Лабораторная работа 15.
Создание FTP-сервера в Linux

Цель работы: научиться настраивать FTP-сервер в Linux-системах.


Эта страница нарушает авторские права

allrefrs.ru - 2018 год. Все права принадлежат их авторам!