Linux - Алексей Стахнов
Шрифт:
Интервал:
Закладка:
• request_timeout 30 seconds – сколько разрешается ждать запроса после установления соединения;
• client_lifetime 1 day – сколько времени разрешать клиенту быть присоединенным к Squid; соединение обрывается, даже если происходит передача данных;
• haif_ciosed_clients on – разрешать наполовину закрытые соединения – например чтение есть, а запись уже закрыта;
• shutdown_lifetime 30 seconds – сколько времени продолжать обслуживание после получения сигнала SIGTERM или SIGHUP.
ACL – Access Control ListЭтот раздел определяет правила доступа пользователей к группам файлов и хостов. С помощью ACL можно очень гибко настроить доступ к различным сайтам.
acl имя тип строка – определение списка доступа (имя – имя правила, тип – тип объекта, строка – регулярное выражение (шаблон для сравнения), по умолчанию чувствительное к регистру букв.
Параметр тип может принимать следующие значения:
• IP-адреса клиентов:src ip-address/netmask…
• диапазон адресов:
src addrl-addr2/netmask…
• получение IP-адреса no URL:
srcdomain foo.com…
• если в URL использовался IP, то делается попытка определить имя домена, если не удалась, то подставляется слово попе:
dstdomaien foo.com…
• получение IP-адреса клиента по URL с использованием регулярных выражений:
srcdom_regex [-i] строка…
• если в URL использовался IP, то делается попытка определить имя домена используя регулярные выражения:
dstdom_regex [-i] строка…
• регулярное выражение для всего URL:
url_regex [-i] строка
• регулярное выражение для path-части URL:
urlpath_regex [-i] строка
• определяются безопасные порты:
port порт…
• сопоставляется заголовок User-Agent:
browser [-i] regexp
• ограничивает число соединеной с одного и того же IP:
maxconn число Права доступа
Права доступа определяются следующими строками:
• http_access allow| deny [!] aclname… – кому разрешать доступ к proxy по HTTP;
• icp_access allow| deny [!] aclname… – кому разрешать доступ к proxy по ICP;
• miss_access allow| deny [!] aclname. – кому разрешить получать ответ MISS;
• cache_peer_access cache-host allow|deny [!]aclname… – ограничить запросы к данному соседу;
• proxy_auth_realm Squid proxy-caching web server – строка текста, которая будет выдана на экран клиента при запросе имени/пароля доступа к кэшу.
Параметры администрированияПараметры администрирования определяются следующими строками:
• cache_mgr email – почтовый адрес, на который будет послано письмо, если у Squid возникнут проблемы;
• cache_effective_user nobody – если запускается Squid от имени root, то заменить UID на указанный;
• cache_effective_group nogroup – если запускается Squid от группы root, то заменить GID на указанный;
• visible_hostname имя-хоста – это имя будет упоминаться в сообщениях об ошибках;
• unique_hostname уникальное-имя – если нескольким кэшам дали одно и то же visibie_hostname, необходимо определить каждому из них уникальное имя;
• hostname aliases имя… – список синонимов для имени хоста.
Параметры для работы в режиме ускорителя HTTP-сервераПараметры для работы в режиме ускорителя HTTP-сервера определяются следующими строками:
• httpd_accel_host hostname – если нужна поддержка виртуальных хостов, в частности для transparent proxy (прозрачное кэширование), то вместо имени указать virtual;
• httpd_accei_port port – порт для HTTP-сервера;
• httpd_accei_with_proxy on | off – кэширование для ускоряемого сервера;
• httpd_accel_uses_host_header on | off – для работы в прозрачном режиме требуется включить, иначе виртуальные серверы не будут правильно кэшироваться.
РазноеЗдесь содержатся параметры Squid, не вошедшие в предыдущие разделы:
• dns_testnames netscape.com internic.net microsoft.com – список имен хостов, на примере которых проверяется работоспособность DNS;
• iogfile_rotate 10 – данный параметр задает количество старых копий при ротации;
• append_domain.vasya.ru – добавляется к имени хоста, если в нем нет ни одной точки;
• tcp_recv_bufsize о bytes -о означает, что надо использовть размер буфера по умолчанию;
• err_htmi_text строка – подставляется в шаблоны текстов сообщений об ошибках;
• deny_info err_page_name acl – запросы, не прошедшие проверку в http_access, проверяются на соответствие ACL, выдается соответствующее сообщение об ошибке из файла page_name;
• memory_poois on | off – эта переменная определяет политику использования захваченной памяти:
– on – однажды захваченная, но не используемая память не отдается обратно в систему;
– off – позволяет освобождать захваченную память;
• memory_рооls_limit байт – максимальное количество неиспользуемой памяти, которое Squid будет удерживать, если 0 – то удерживать все, что было захвачено;
• fоrwarded_fоr on | off – если включено, то Squid будет вставлять IP-адрес или имя в заголовки перенаправляемых HTTP-запросов: X-Forwarded-For: 192.1.2.3; если выключено, то X-Forwarded-For: unknown;
• log_icp_queries on | off – записываются ли в журнал ICP-запросы;
• icp_hit_staie on | off – возвращать ли ответ icp_hit для устаревших объектов;
• cachemgr_passwd password action action… – задание пароля для действий по администрированию Squid; чтобы запретить действие – поставьте пароль disable; чтоб разрешить действие без проверки пароля – поставьте пароль попе, кроме действий config и shutdown; полную информацию смотрите в документации на Squid;
• store_avg_object_size 13 KB – предполагаемый средний размер объекта, используемый для расчетов;
• store_objects_per_bucket 20 – число объектов на хэш-корзину;
• client_db on | off – сбор статистики о клиентах;
• netdb_iow 900 – нижняя граница для базы данных измерения ICMP;
• netdbjiigh 1000 – верхняя граница для базы данных измерения ICMP;
• netdb_ping_period 5 minutes – минимальное время между посылок ping-пакетов в одну и ту же сеть;
• query_icmp on | off – должны ли соседи в IСР-ответы включать ICMP-данные;
• test_reachabiiity on | off – если включить, то ответ icpjmiss будет заменяться на icp_miss_nofetch, если сервер отсутствует в базе данных ICMP или RTT равен нулю;
• buffered_iogs on | off – при включении запись в журнал буферизуется;
• always_direct allow| deny [!] aclname. – запросы, удовлеворяющие данным ACL, не кэшировать, а всегда направлять к первоисточнику;
• never_direct allow| deny [!] aclname. – запросы, удовлеворяющие данным ACL, всегда кэшировать;
• anonymize_headers allow| deny header_name.. – перечень заголовков, которые нуждаются в анонимизации;
• fake_user_agent none – если заголовок User-Agent фильтруется с помощью анонимизатора, то подставляется эта строка;
• minimum_retry_timeout 5 seconds – если сервер имеет несколько IP-адресов, то тайм-аут соединения делится на их количество;
• maximum_singie_addr_tries 3 – сколько раз пытаться соединиться с сервером, имеющим один IP-адрес; если сервер имеет несколько IP-адресов, то каждый из них будет опробован один раз;
• snmp_port 3401 – порт, который слушает Squid для SNMP-запросов;
• snmp_access allow| deny [!] aclname… – определяет, кто будет допущен к SNMP-порту;
• offiine_mode on | off – если включить, то Squid будет брать объекты только из кэша и не будет пытаться обращаться к первоисточникам;
• uri_whitespace strip – что делать с запросами, имеющими пробелы в URI; возможные варианты:
– strip – удалять пробелы;
– deny – сообщать Invalid Request (ошибочный запрос);
– allow – передавать как есть;
– encode – кодировать в соответствии с RFC 1738, передавать дальше;
– chop – остаток после первого же пробела отбрасывать;
• mcast_miss_addr адрес – по этому multicast-адресу посылается сообщение при каждом «непопадании» в кэш;
• mcast_miss_port порт – этот порт не пользуется для посылки сообщения;
• strip_query_terms on – удалять параметры запроса перед записью в журнал;
• ignore_unknown_nameservers on – игнорировать сообщения от DNS-серверов, с которыми Squid не работает.
Пример конфигурации Squid
Как вы уже заметили, опций для конфигурации Squid очень много. Для быстрой настройки proxy-сервера можно воспользоваться приведенными ниже параметрами. Конечно они не являються идеальными, наверняка тонкая настройка поможет вам оптимизировать сервер как с точки зрения увеличения производительности, так и с точки зрения безопасности.
Возьмем стандартный файл Squid.conf и отредактируем только нижеприведенные строки:
• http_port 3128 – номер порта, на котором Squid будет слушать команды от клиентов;
• hierarchy_stoplist cgi-bin, chat – слова в URL, при обнаружении которых proxy-сервер будет не кэшировать объекты, а напрямую перенаправлять запрос серверу;
• cache_mem 16 MB – сколько оперативной памяти Squid может забрать под свои нужды. Чем больше выделить памяти – тем быстрее будут обрабатываться запросы. Весьма зависит от количества клиентов;
• maximum_object_size 16384 KB – максимальный размер объектов, которые будут сохранены в кэше. Размер специфичен для ваших задач и объема жесткого диска;
• cache_dir /usr/local/Squid/cache 2048 16 256 – указывает proxy-серверу, где сохранять кэшируемые файлы. Под кэш выделяется два гигабайта и создается 16 и 256 каталогов 1-го и 2-го уровня;
• ftp_user [email protected] – задает proxy-серверу, под каким паролем регистрироваться на анонимных FTP-серверах;
• negative_ttl 1 minutes – время жизни страничек с ошибкой;
• positive_dns_tti 6 hours – время жизни удачного преобразования DNS-имен в IP-адреса;
• negat ive_dns_tt 1 5 minutes – время жизни соответственно удачного и неудачного преобразования DNS-имен в IP-адреса.
Дальнейшие наши действия касаются разграничения прав пользователей.
Сначала необходимо определить ACL (Access Control List, список управления доступом). Сначала закомментируем все строчки в файле Squid.conf, начинающиеся на aci. Затем пишем свои правила. К примеру: