Безопасность и оптимизация Linux.Редакция для Red Hat

       

Конфигурация файла “/etc/squid/squid.conf” для режима httpd-акселератора


Файл “squid.conf” используется для установки и конфигурирования всех опций для вашего прокси-сервера Squid. В конфигурационном файле приведенном ниже, мы будем настраивать Squid на работу в режиме httpd- акселератора. В этом режиме, если Веб сервер запущен на том же сервере где Squid, то вы должны настроить демон на порт 81. В случае с веб сервером Apache, вы можете сделать это назначив вместо 80 порта 81 в файле “httpd.conf”. Если Веб-сервер запущен на других серверах вашей сети, вы можете оставить тот же номер порта (80) для Apache, так как Squid подключен на другом IP адресе, где порт (80) не используется.


Редактируйте файл squid.conf (vi /etc/squid/squid.conf) и добавьте/измените следующие опции:

http_port 80 icp_port 0 acl QUERY urlpath_regex cgi-bin \? no_cache deny QUERY cache_mem 16 MB cache_dir ufs /cache 200 16 256 emulate_httpd_log on redirect_rewrites_host_header off replacement_policy GDSF acl all src 0.0.0.0/0.0.0.0 http_access allow all cache_mgr admin@openna.com cache_effective_user squid cache_effective_group squid httpd_accel_host 208.164.186.3 httpd_accel_port 80 log_icp_queries off cachemgr_passwd my-secret-pass all buffered_logs on

Эти опции обозначают следующее:

http_port 80

Опция “http_port” определяет номер порта на котором Squid слушает HTTP запросы клиентов. Если вы установите его в 80, у клиента будет создаваться иллюзия, что он соединяется с веб сервером Apache. Так как мы запускаем Squid в режиме акселератора, мы должны слушать 80 порт.

icp_port 0

Опция “icp_port” определяет номер порта на который Squid будет посылать и принимать ICP запросы от соседних кэшей. Мы должны установить эту опцию в 0, чтобы отключить эту возможность, так как мы настраиваем Squid для работы в режиме акселератора для Веб сервера. Возможность ICP нужна только в многоуровневых кэш окружениях с несколькими братскими и родительскими кэшами. Использование ICP в режиме акселератора будет добавлять нежелательные издержки в работе Squid.

acl QUERY urlpath_regex cgi-bin \? и no_cache deny QUERY


Внеся небольшие изменения в файл “squid.conf”, используемый для запуска Squid как http-акселератор, мы запустим его как кэширующий прокси сервер. Если Squid запущен как кэширующий прокси сервер, все пользователи вашей корпоративной сети смогут использовать его для доступа в интернет. В этой конфигурации, мы будем иметь полный контроль над проходящим трафиком и сможем определять политику просмотра, доступа и выкачивания. Вы также сможете контролировать использование полосы пропускания, времени соединения и т.д. Кэширующий прокси сервер может быть настроен на запуск как автономный сервер вашей корпорации или использование разделяемой иерархии кэшей с другими серверами в Интернет.

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




Редактируйте файл squid.conf (vi /etc/squid/squid.conf) и добавьте/измените следующие опции для запуска кэширующего прокси сервера, как автономного сервера:

http_port 8080 icp_port 0 acl QUERY urlpath_regex cgi-bin \? no_cache deny QUERY cache_mem 16 MB cache_dir ufs /cache 200 16 256 redirect_rewrites_host_header off replacement_policy GDSF acl localnet src 192.168.1.0/255.255.255.0 acl localhost src 127.0.0.1/255.255.255.255 acl Safe_ports port 80 443 210 119 70 21 1025-65535 acl CONNECT method CONNECT acl all src 0.0.0.0/0.0.0.0 http_access allow localnet http_access allow localhost http_access deny !Safe_ports http_access deny CONNECT http_access deny all cache_mgr admin@openna.com cache_effective_user squid cache_effective_group squid log_icp_queries off cachemgr_passwd my-secret-pass all buffered_logs on

Большие отличия от конфигурации для режима httpd-акселератора вносит использование списков контроля доступа (ACL). Эта возможность позволяет ограничивать доступ базируясь на исходном IP адресе (src), IP адресе получателя (dst), исходном домене, домене назначения, времени и т.д. Много типов контроля существует благодаря этой возможности и вы должны посмотреть оригинальный файл “Squid.conf” для получения полного списка. Ниже приведены четыре основных типа:

acl имя тип данные | | | | acl some-name src a.b.c.d/e.f.g.h # ACL на основе IP адреса отправителя acl some-name dst a.b.c.d/e.f.g.h # ACL на основе IP адреса получателя acl some-name srcdomain foo.com # ACL на основе имени домена отправителя acl some-name dstdomain foo.com # ACL на основе имени домена назначения




Опции “acl QUERY urlpath_regex cgi-bin \? и no_cache deny QUERY” используются для того, чтобы некоторые объекты никогда не кэшировались, например файлы и каталога “cgi-bin”. Эта функция безопасности.

cache_mem 16 MB

Опция “cache_mem” определяет количество памяти (RAM) используемое для кэширования таких вызовов: In-Transit objects, Hot Objects, Negative-Cached objects. Это оптимизационная возможность. Важно заметить, что Squid может использовать намного больше памяти, чем значение этого параметра, и из этих соображений, если вы имеете для Squid 48 MB, вы должны здесь выделить 48/3 = 16 MB.

cache_dir ufs /cache 200 16 256

Опция “cache_dir” определяет по порядку: тип используемой системы хранения (ufs), имя каталога для кэша (/cache), объем дискового пространства выделяемый под этот каталог (200 Mbytes), число подкаталогов первого уровня, создаваемых в каталоге кэша (16 Level-1), и число подкаталогов второго уровня создаваемых под каждым подкаталогом первого уровня (256 Level-2). В режиме акселератора, эта опция напрямую связана с размером и количеством файлов, которое вы хотите обслуживать вашим Веб сервером Apache.

emulate_httpd_log on

Опция “emulate_httpd_log”, если установлена в “ON”, определяет, что Squid должен эмулировать формат файлов регистраций веб сервера Apache. Это очень полезно если вы хотите использовать программы третьих разработчиков, подобные Webalizer, для анализа файлов регистраций веб сервера (httpd).

redirect_rewrites_host_header off

Опция “redirect_rewrites_host_header”, если установлена в “OFF”, говорит Squid не переписывать любые хосты: заголовки в перенаправленных пакетах. Здесь рекомендуется установить значение “OFF”, если вы запускаете Squid в режиме акселератора.

replacement_policy GDSF

Опция “replacement_policy” определяет политику кэша Squid, используемую для определения, какие объекты в кэше должны быть заменены, когда прокси нужно освободить дисковое пространство. Политика Squid LRU используется по умолчанию, если вы во время компиляции не определили опцию “--enable- heap-replacement”. В нашей конфигурации, мы выбрали GDSF (Greedy-Dual Size Frequency), как политику по умолчанию. Смотрите и для большей информации.



acl all src 0.0.0.0/0.0.0.0 and http_access allow all

Опции “acl” и “http_access” определяют списки доступа применяемые на прокси сервере Squid. Наш “acl” и “http_access” не ограничивающие, они позволяют всем соединяться с прокси сервером, так как мы используем его для ускорения работы публичного веб сервера Apache. Смотрите вашу документацию по Squid для получения большей информации об использовании Squid в режиме кэширования.

cache_mgr admin

Опция “cache_mgr” определяет почтовый адрес администратора отвечающего за работоспособность прокси сервера Squid. Этот человек будет получать почту, если при работе Squid возникнут проблемы. Вы можете задать имя или полный почтовый адрес.

cache_effective_user squid и cache_effective_group squid

Опции “cache_effective_user” и “cache_effective_group” определяют UID/GID, под которыми будет запущен кэш. Не забудьте, никогда не запускайте Squid как “root”. В нашей конфигурации мы используем UID “squid” и GID “squid”.

httpd_accel_host 208.164.186.3 и httpd_accel_port 80

Опции “httpd_accel_host” и “httpd_accel_port” определяют IP адрес и номер порта реального HTTP сервера (например, Apache). В нашей конфигурации, реальный HTTP Веб сервер имеет адрес 208.164.186.3 (www.openna.com) и порт (80). “www.openna.com” это другой сервер в нашей сети, и так как прокси сервер Squid не находится на одном компьютере с Веб сервером Apache, мы используем порт (80) для нашего прокси сервера и порт (80) для Apache веб сервера.

log_icp_queries off

Опция “log_icp_queries” определяет хотите ли вы регистрировать ICP (ICP используется для обмена информации о наличии в соседних кэшах URL-ов) запросы в файл “access.log” или нет. Так как мы не используем ICP в режиме акселератора, мы можем спокойно установить ее в “OFF”.

cachemgr_passwd my-secret-pass all

Опция “cachemgr_passwd” определяет пароль, который будет требоваться для доступа к операциям из утилиты “cachemgr.cgi”. Эта CGI утилита создана для запуска через веб интерфейс и вывода статистических данных о конфигурации и работе Squid. <my-secret-pass> - это пароль, который вы выбрали, ключевое слово <all> определяет, что он будет один и тот же для всех действий доступных из этой программы. Смотрите раздел “Утилита cachemgr.cgi”, приведенный ниже в этой главе для получения большей информации.

buffered_logs on

Опция “buffered_logs”, если установлена в “ON”, может немного увеличить скорость записи некоторых файлов регистрации. Это оптимизационная возможность.



Как пример, ограничим доступ к вашему прокси серверу только вашими внутренними клиентами и определим диапазон портов к которым можно обращаться:

acl localnet src 192.168.1.0/255.255.255.0

acl localhost src 127.0.0.1/255.255.255.255

acl Safe_ports port 80 443 210 119 70 21 1025-65535

acl CONNECT method CONNECT

acl all src 0.0.0.0/0.0.0.0

http_access allow localnet

http_access allow localhost

http_access deny !Safe_ports

http_access deny CONNECT

http_access deny all

Эти acl будут разрешать доступ всем внутренним клиентам из диапазона приватных адресов класса C 192.168.1.0; также разрешается доступ с IP адреса localhost (специальный IP адрес используемый для доступа к самому себе). Затем мы выбираем диапазон портов (80=http, 443=https, 210=wais, 119=nntp, 70=gopher и 21=ftp), к которым внутренние клиенты могут обращаться, мы запрещаем метод CONNECT для предотвращения попыток подключения внешних пользователей к прокси серверу, и в заключении мы запрещаем доступ со всех IP адресов.


Содержание раздела