squid.conf по-русски. Секция Access Control

Перевод подготовила команда проекта http://break-people.ru

Секция: Контроль доступа(ACCESS CONTROLS)
-----------------------------------------------------------------------------

TAG: external_acl_type

Этот тэг позволяет определить внешние ACL. Внешние ACL это такие ACL, которые не входят в набор стандартных типов ACL. Например, это могут быть самописные(или откуда-нибудь взятые) скрипты(вспомогательные программы), которые используя переменные Squid осуществляют некоторое действие. Такие скрипты запускаются вместе со Squid отдельным процессом.

external_acl_type name [options] FORMAT.. /path/to/helper [helper arguments..]

============ Опции(Options) ============================

ttl=n

TTL(Time-To-Live, время жизни) в секундах для хранения результатов отработки внешнего ACL.(По умолчанию установлено в 3600 т.е. 1 час).

negative_ttl=n

TTL в секундах для хранения отрицательных результатов отработки внешнего ACL. (По умолчанию, установлено значение такое же как ttl)

children=n

Количество процессов, которое может быть задействовано под внешние ACL(под скрипты, т.е.). (По умолчанию 5).

concurrency=n

Уровень параллельности для процесса. Используется, только со скриптами, которые умеют обрабатывать более одного запроса одновременно.

Примечание: Читайте ниже о совместимости

cache=n

Размер кэша результатов. 0(цифра ноль) - неограничено (По умолчанию, неограничено)

grace=

Процент, от TTL. То есть это значение нужно устанавливать как процент от значения TTL. Но без знака процента. Например, grace=90. Эта опция означает количество времени, по истечению которого, произойдет обновление кэшированных записей. Это так называемое время отсрочки.(По умолчанию установлено 0, для отсутствия отсрочки)

protocol=2.5

Режим совместимости для внешних ACL со Squid-2.5

Формат, т.е. переменные которые можно использовать в своей вспомогательной программе(FORMAT). Слева, название переменной, справа - то, что в ней находится.

%LOGIN Логин аутентифицированного пользователя

%EXT_USER Имя пользователя из внешнего acl

%IDENT Ident имя пользователя

%SRC IP-адрес клиента

%SRCPORT Порт клиента

%DST Запрошенный хост

%PROTO Протокол по которому сделан запрос

%PORT Запрошенный порт

%METHOD Метод, которым осуществлен запрос

%MYADDR IP адрес прокси сервера Squid

%MYPORT Порт прокси сервера Squid

%PATH URL путь(все символы после имени хоста) в запросе

%USER_CERT SSL пользовательский сертификат в формате PEM

%USER_CERTCHAIN SSL пользовательский сертификат сети в формате PEM

%USER_CERT_xx Имя SSL пользовательского сертификата xx

%USER_CA_xx Кем выдан SSL пользовательский сертификат xx


%{Header} Полностью HTTP заголовок запроса

%{Hdr:member} HTTP заголовок запроса содержащий list member

%{Hdr:;member} HTTP заголовок запроса содержащий list member разделяя знаком ";" элементы списка. Разделителем можт быть любой символ псевдографики.


%ACL Имя ACL

%DATA Аргументы ACL. Если не использовать эту переменную, то все аргументы автоматически добавляются в конец строки.

В дополнение к вышесказанному - каждая строка определяющая ACL, должна быть включена в строку запроса вспомогательной программы(скрипта) (смотри директиву acl тип external).

Скрипт получает строки с данными согласно формата(FORMAT) и возвращается строки содержащие OK или ERR, определящие пройдена аутентификация или нет соответственно. Опционально строка может содержать дополнительные ключевые слова(keywords).

Синтаксис ответной строки скрипта:

OK/ERR keyword=value ...

Доступные ключевые слова(keywords):

user= Пользовательские имена (логины также можно вводить)

password= Пароли пользователей (для PROXYPASS login= cache_peer)

message= Сообщение об ошибке. Оно запишется в переменную %o

log= Строка которая будет записана в access.log. Доступна специкация %ea формата журналов.

Если установлено protocol=3.0 (по умолчанию), тогда URL будет использоватся для передачи значений и для запросов и для ответов.

Если установлено protocol=2.5, тогда все значения должны быть оформлены в кавычки, если они содержат пробелы. Кроме того, кавычки или знак \, которые находятся в содержимом ключевого слова, должны предварятся знаком \. То есть если имя пользователя joe "blade" smith, то запись такого имени в ключевом слове user должна выглядеть так - user = "joe \"blade\" smith".

Примечание: Опция children= названа concurrency= в версии Squid-2.5.STABLE3 и более ранних. В Squid-3 опция concurrency= более не работает. Используйте children=.

По умолчанию:

none


TAG: acl

Этот тэг позволяет задавать ACL. Ниже представлены типы ACL и краткие описания к каждому из них(на что нацелены).

acl aclname acltype string1 ...
acl aclname acltype "file" ...

Когда используется "file", то файл должен содержать не более одного правила на строку.

acltype - тип ACL

По умолчанию, регулярные выражения РЕГИСТРОЗАВИСИМЫ. Для того, чтобы сделать регулярное выражение регистронезависимым используйте опцию -i .

acl aclname src ip-address/netmask ...
Проверяет IP адрес клиента. Как пользоваться?

acl aclname src addr1-addr2/netmask ...
Проверяет диапазон IP адресов клиента. Как пользоваться?

acl aclname dst ip-address/netmask ...
Проверяет IP адрес URL хоста.

acl aclname myip ip-address/netmask ...
Проверяет локальный IP адрес.

acl aclname arp mac-address ...
Проверяет xx:xx:xx:xx:xx:xx MAC адрес.

Примечание: Тип arp ACL доступен если Squid скомпилирован с опцией --enable-arp-acl Кроме того, ACL типа arp поддерживают не все операционные системы. Это работает на Linux, Solaris FreeBSD и некоторых других *BSD системах.

Примечание: Squid может определить MAC адреса клиентов из одной подсети. Если же клиенты будут из разных подсетей, тогда Squid не сможет определить MAC адрес клиента.

acl aclname srcdomain .foo.com ...
Проверяет имя хоста клиента.

acl aclname dstdomain .foo.com ...
Проверяет имя хоста сервера назначения. Как пользоваться?

acl aclname srcdom_regex [-i] xxx ...
Регулярное выражение для хоста клиента

acl aclname dstdom_regex [-i] xxx ...
Регулярное выражение для сервера назначения

Типы ACL dstdomain и dstdom_regex используют имена хостов. Если же URL адрес задан через IP(например, 195.33.72.33), то будет автоматически произведена замена его на имя хоста связанное с этим IP(например на yandex.ru), используя DNS. И к уже к найденному имени хоста будет применен ACL.

acl aclname time [day-abbrevs] [h1:m1-h2:m2]
Проверяет день недели и время. Как пользоваться?

Аббревиатуры дней:

S - Воскресенье
M - Понедельник
T - Вторник
W - Среда
H - Четверг
F - Пятница
A - Суббота
h1:m1 должно быть меньше h2:m2

acl aclname url_regex [-i] ^http:// ...
Регулярное выражение вбирающее в себя все URL адреса. Как пользоваться?

acl aclname urlpath_regex [-i] \.gif$ ...
Регулярное выражение проверяющее URL путь(все, что после имени хоста в URL)

acl aclname urllogin [-i] [^a-zA-Z0-9] ...
Регулярное выражение проверяющее поле URL login.

acl aclname port 80 70 21 ...
Проверяет порт назначения. Как пользоваться?

acl aclname port 0-1024 ...
Диапазон портов. Как пользоваться?

acl aclname myport 3128 ...
Локальный TCP порт

acl aclname proto HTTP FTP ...
Проверяет протокол. Как пользоваться?

acl aclname method GET POST ...
Проверяет метод доступа

acl aclname browser [-i] regexp ...
Проверяет заголовок User-Agent (смотри также req_header). Как пользоваться?

acl aclname referer_regex [-i] regexp ...
Проверяет заголовок Referer. Referer очень ненадежен, поэтому используйте с осторожностью

acl aclname ident username ...
acl aclname ident_regex [-i] pattern ...
Проверяет выходные данные ident. Используйте REQUIRED для принятия не пустых ident строк.

acl aclname src_as number ...
acl aclname dst_as number ...

# # ======= осталось без перевода ================================
# # Except for access control, AS numbers can be used for
# # routing of requests to specific caches. Here's an
# # example for routing all requests for AS#1241 and only
# # those to mycache.mydomain.net:
# # acl asexample dst_as 1241
# # cache_peer_access mycache.mydomain.net allow asexample
# # cache_peer_access mycache_mydomain.net deny all
# # ======= осталось без перевода ================================

acl aclname proxy_auth [-i] username ...
acl aclname proxy_auth_regex [-i] pattern ...
Список прокси пользователей.

Примечание: Когда заголовок Proxy-Authentication(Прокси аутентификации) отправлен, но не используется в ACL, то такая запись вносится в access.log

Примечание: proxy_auth требует программу внешней(External) аутентификации для проверки пары username/password(логин/пароль). Смотри директиву auth_param.

Примечание: proxy_auth не работает при прозрачном проксировании. Браузер должен быть настроен на использование прокси, чтобы аутентификация работала.

acl aclname snmp_community string ...
Строка для ограничения доступа SNMP community

Пример:

acl snmppublic snmp_community public

acl aclname maxconn number
Этот ACL проверяет количество HTTP сессий клиента. И не дает открыть ему больше чем <number> подключений

acl aclname max_user_ip [-s] number
Этот ACL проверяет количество различных IP адресов, с которого пользователь может пройти аутентификацию одновременно. Директива authenticate_ip_ttl определяет время действия аутентификации пользователя с конкретного IP адреса. По истечению этого времени, пользователь с этого IP должен будет пройти аутентификацию вновь. Аргумент -s означает, что при достижении числа number, будет невозможно подключится с любого другого IP адреса, пока ttl текущей аутентификации какого-либо IP адреса не истечет.

Примечание: в режиме acceleration или при использовании нескольких child прокси, клиенты могут приходить с множества IP адресов если они идут через 2-3 прокси сервера, тогда ограничение в 1 IP адрес на клиента, может вызвать проблемы.

acl aclname req_mime_type mime-type1 ...
Регулярное выражение проверяющее mime тип клиентского запроса. Может быть использовано для определения отправки файлов или HTTP туннелирования.

Примечание: Этот ACL не проверяет ответ от сервера на запрос клиента.

acl aclname req_header header-name [-i] any\.regex\.here
Регулярное выражение проверяющее заголовки запросов. Например, может использоватся для блокирования доступа некоторых браузеров.

acl aclname rep_mime_type mime-type1 ...
Регулярное выражение проверяющее mime тип ответа от сервера. Может быть использовано для определения скачивания файла или HTTP туннелирования.

Примечание: Этот ACL не действует в правилах для http_access. Этот ACL имеет эффект в правилах, которые работают с ответами от сервера, такими как http_reply_access.

acl aclname rep_header header-name [-i] any\.regex\.here
Регулярное выражение проверяющее заголовки ответов от сервера.

Пример:

acl many_spaces rep_header Content-Disposition -i [[:space:]]{3,}

acl acl_name external class_name [arguments...]
Внешние ACL используемые вспомогательными программами(скриптами) должны быть перед использованием описаны директивой external_acl_type.

acl urlgroup group1 ...
Проверяет urlgroup используемую редиректорами

acl aclname user_cert attribute values...
Проверяет атрибуты в пользовательском сертификате SSL. Атрибутом может быть один из DN/C/O/CN/L/ST

acl aclname ca_cert attribute values...
Проверяет атрибуты выдавшего SSL сертификат. Атрибутом может быть один из DN/C/O/CN/L/ST

acl aclname ext_user username ...
acl aclname ext_user_regex [-i] pattern ...
Проверяет имя пользователя, которое вернул внешний ACL скрипт. Используйте REQUIRED, для принятия любого не пустого имени пользователя.

Примеры:

#acl macaddress arp 09:00:2b:23:45:67
#acl myexample dst_as 1241
#acl password proxy_auth REQUIRED
#acl fileupload req_mime_type -i ^multipart/form-data$
#acl javascript rep_mime_type -i ^application/x-javascript$

Рекомендуемый минимум:

acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
acl SSL_ports port 443
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl CONNECT method CONNECT


TAG: http_access

Этот тэг разрешает или запрещает доступ основываясь на имеющихся ACL

Использование:

http_access allow|deny [!]aclname ...

Примечание: Если не указано allow или deny, то по умолчанию будет принято deny.

Последний в списке http_access является действием по умолчанию. Т.е. если не сработало ни одно прокси ограничение из всего списка, то будет применено, то, что установлено по умолчанию. Допустим последней строкой стоит «deny all», то это означает, что если клиент не подходит ни под один из разрешающих ACL, то доступ ему будет закрыт. И наоборот. Допустим последней строкой стоит «allow all», тогда если клиент не подпадает ни под один запрещающий ACL, то доступ ему будет открыт. Исходя из этих соображений, имеет смысл установить последней строкой ограничение «deny all» или «allow all».

По умолчанию:

http_access deny all

Рекомендуемый минимум:
Доступ только с localhost к cachemgr
Запрет доступа запросов к неизвестным портам(unknown ports)
Запрет метода CONNECT к другим потрам кроме SSL портов

Настоятельно рекомендуется, чтобы к сервисам localhost имели только локальные пользователи и локальные программы. Из этих соображений следует запретить доступ к localhost службам и сервисам

http_access deny to_localhost

==========ВСТАВЛЯЙТЕ СЮДА СВОИ СОБСТВЕННЫЕ ПРАВИЛА==============

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

acl our_networks src 192.168.1.0/24 192.168.2.0/24
http_access allow our_networks

TAG: http_access2

Этот тэг разрешает или запрещает доступ на основе ACL.

Схож с http_access, но запускается после редиректоров. Если не используется, значит действует только http_access.

По умолчанию:

none

TAG: http_reply_access

Этот тэг разрешает или запрещает ответы на запросы клиентов основываясь на ACL. Он является дополнением к тэгу http_access.

http_reply_access allow|deny [!] aclname ...

Примечание: Если не указан ни один ACL, то по умолчанию, разрешен доступ всем ответам от серверов.

Хорошей идеей будет установить правила allow all или deny all последними в списке правил. Потому что, именно последнее правило в списке используется как правило по умолчанию.

По умолчанию:

http_reply_access allow all

TAG: icp_access

Этот тэг разрешает или запрещеает доступ по ICP порту основываясь на ACL

icp_access allow|deny [!]aclname ...

Смотри http_access для подробностей

По умолчанию:

icp_access deny all

TAG: htcp_access

Примечание: Этот тэг доступен если Squid скомпилирован с опцией --enable-htcp

Этот тэг разрешает или запрещает достпу по HTCP порту основываясь на ACL.

htcp_access allow|deny [!]aclname ...

Смотри http_access для подробностей

Примечание: По умолчанию, запрещен весь траффик по HTCP порту. Это может быть причиной проблем с пользователями использующих htcp или htcp-oldsquid опции

Разрешает HTCP запросы отовсюду

htcp_access allow all

По умолчанию:

htcp_access deny all

TAG: htcp_clr_access

Примечание: Этот тэг доступен если Squid скомпилирован с опцией --enable-htcp

Этот тэг разрешает или запрещает доступ к функции очистки содержимого используя HTCP основываясь на ACL.

htcp_clr_access allow|deny [!]aclname ...

Смотри http_access для подробностей.

Разрешает запросы HTCP CLR от доверенных пользователей

acl htcp_clr_peer src 172.16.1.2
htcp_clr_access allow htcp_clr_peer

По умолчанию:

htcp_clr_access deny all

TAG: miss_access

Этот тэг позволяет определить, какие из ваших клиентов могут получать TCP_MISS при обращении к вашему кэшу. TCP_MISS будет отправлятся им всякий раз, когда объект не найден в кэше.

Например:

acl localclients src 172.16.0.0/16
miss_access allow localclients
miss_access deny !localclients

Эти строки означают, что ваши локальные клиенты могут получать MISSES(т.е. ответы означающие, что объект не найден в кэше), а все остальные клиенты будут получать только HITS(Т.е. что объект в кэше найден. А если объект не найден в кэше, то не будут получать ничего).

По умолчанию все клиенты, которые проходят по http_access правилам, могут получать MISSES от нашего прокси сервера.

По умолчанию:

miss_access allow all

TAG: ident_lookup_access

Этот тэг разрешает или запрещает доступ RFC931 пользователям основываясь на ACL.

Пример:

acl ident_aware_hosts src 198.168.1.0/255.255.255.0
ident_lookup_access allow ident_aware_hosts
ident_lookup_access deny all

Только src тип ACL полностью поддерживается при работе с этим тэгом. Тип src_domain ACL может иногда работать неправильно.

По умолчанию:

ident_lookup_access deny all

TAG: reply_body_max_size bytes allow|deny acl acl... Как пользоваться?

Этот тэг определяет максимальный размер тела ответа в байтах. Это может быть использовано для запрета скачивания больших файлов, таких как MP3 и фильмов. Когда заголовки ответа получены, происходит проверка размера тела ответа. Смотрится значение content-length(размер содержимого). Если размер содержимого больше разрешенного размера, то запрос блокируется и пользователь получает сообщение об ошибке - The request or reply is too large(Запрос или ответ слишком большой). Если в ответе не указан content-length и размер ответа лимитирован, то клиент получит часть ответа, соответствующую по размеру, установленному ограничению.

ВНИМАНИЕ: если у вас выстроена иерархия кэшей, то могут возникнуть проблемы. Если не указано в заголовке content-length, то в кэш попадет часть ответа. Следовательно, если соседний прокси сделает запрос к вашему прокси на предмет некоего запроса, который был кэширован вашим прокси частично, то соседний прокси ответит клиенту тем, что взял у вас из кэша. Т.е. выдаст результат частично.

Если установлено значение в 0(по умолчанию), то максимальный размер тела ответа неограничен.

Примечание break-people.ru: Можно попробовать использовать этот тэг для ограничения максимального размера тела запроса для определенных IP адресов или группы IP адресов используя ACL.

По умолчанию:

reply_body_max_size 0 allow all



Ссылки:

К содержанию
Squid на практике
Работа с Squid через Webmin
Анализатор логов Squid

© Copyright 2004-2017 - CMS Made Simple
Сайт работает на CMS Made Simple version 1.4.1

© Все печеньки Break-people.ru принадлежат авторам проекта.

Яндекс цитирования Рейтинг@Mail.ru Яндекс.Метрика