Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

LINUX-сервер пошаговые инструкции инсталляции и настройки - Бруй В. В. , Карлов С. В

..pdf
Скачиваний:
109
Добавлен:
24.05.2014
Размер:
3.66 Mб
Скачать

Глава 24. Кэширующий прокси-сервер Squid

331

X-Cache-Lookup: NONE from bastion.und:3128

Proxy-Connection: close

Утилита cachemgr.cgi предназначена для администрирования Squid и получения информации о его настройках и статистике через Web-интерфейс. На наш взгляд утилита содержит ошибки, в некоторых случаях приводящих к совершенно непредсказуемым и загадочным результатам. Даже при правильной конфигурации не всегда можно подключиться к ее Web-интерфейсу. Протестировать cachemgr.cgi можно следующим образом.

Шаг 1

Удалите комментарий и введите пароль в строку файла /etc/squid/squid.conf:

#cachemgr_passwd $ecretnoe_Sl0vo all

Перезапустите Squid:

[root@bastion /]# /etc/init.d/squid restart

Останавливается squid:

[ОК]

Запускается squid:

[ОК]

Шаг 2

Переместите файл cachemgr.cgi из каталога /usr/lib/squid в каталог cgi-bin вашего Web-

сервера /var/www/cgi-bin/:

[root@bastion /]# mv /usr/lib/squid/cachemgr.cgi /var/www/cgi-bin/

Шаг 3

Назначьте владельцем файла пользователя root и установите права доступа к файлу:

[root@bastion/]# cd/var/www/cgi-bin/

[root@bastion cgi-bin]# chmod 0511 cachemgr.cgi [root@bastion cgi-bin]# chown 0.0 cachemgr.cgi

Шаг 4

Обратитесь с консоли шлюза к Web-интерфейсу утилиты, в нашем примере:

[root@bastion cgi-bin] # lynx www.bastion.und/cgi-bin/cachemgr.cgi

Шаг 5

Если вы используете конфигурацию c аутентификацией пользователя, то в отобразившейся на экране форме введите параметры – имя шлюза, порт на котором он работает, имя пользователя и пароль. В рассматриваемом примере – это, соответственно, bastion.und, 3128, drwalbr и $ecretnoe_Sl0vo (ус-

тановлен с помощью опции cachemgr_passwd в файле /etc/squid/squid.conf).

ЗАМЕЧАНИЕ В рассматриваемой конфигурации установка соединения возможна только с системы, на которой установлен шлюз.

Пример конфигурации Squid в качестве Web-ускорителя

Squid может использоваться для увеличения производительности сильно загруженных Web-серверов путем предоставления клиентам часто запрашиваемых объектов из кэша прокси-сервера без непосредственного обращения к Web-серверу. Типовой вариант сопряжения Squid, используемого в качестве Webускорителя, с Web-сервером представлена на рис. 24.2.

Пример конфигурационного файла /etc/squid/squid.conf прокси-сервера, запущенного на отдельной системе с IP-адресом 212.45.28.123, используемого в качестве Web-ускорителя для Web-сервера с IP-адресом 212.45.28.122, приведен ниже:

#Установите номер порта, на котором Squid ожидает запросы HTTP-клиентов. http_port 80

#Обеспечьте корректную работу Squid c браузерами, некорректно

#поддерживающими SSL

ssl_unclean_shutdown on

#Установите номер порта, на котором Squid принимает и получает запросы

#с других прокси-серверов. Установка значения порта на 0 может повысить производительность вашей системы.

icp_port 0

332

Часть 6. Программное обеспечение для организации шлюза

 

Интернет

 

Роутер

Концентратор

Прокси-сервер

 

Web-сервер

 

 

 

eth0 IP 212.45.28.122

eth0 IP 212.45.28.123

Рис. 24.2. Вариант сопряжения Squid, используемого в качестве Web-ускорителя, с Web-сервером

Глава 24. Кэширующий прокси-сервер Squid

333

#Установите запрет

кэширования некоторого типа объектов.

 

#В данном случае –

файлов,

находящихся в каталоге cgi-bin.

 

hierarchy_stoplist

cgi-bin

?

 

acl QUERY urlpath_regex cgi-bin \?

no_cache deny QUERY

#Определите объем памяти, выделяемый под кэширование In-Transit objects, #Hot Objects,Negative-Cached objects (примерно 1/3 от общего объема #опе-

ративной памяти). Оптимальное значение для системы с памятью

#512 МБайт –170. cache_mem 170 MB

#Запретите изменять заголовки в перенаправляемых запросах. redi-

rect_rewrites_host_header off

#Определите политику очистки кэша. cache_replacement_policy heap GDSF

memory_replacement_policy heap GDSF

#Определите формат представления данных в кэше (DISKD), каталог,

#в котором он размещается (/var/spool/squid), объем дискового пространства #(1250 МБайт), количество подкаталогов первого и второго уровня в

#каталоге /var/spool/squid.

cache_dir diskd /var/spool/squid 1000 16 256

#Запретите создание файла, в котором регистрируется удаление и помещение

#объектов в кэш. Авторам не известны утилиты, предназначенные для обработки

#информации, содержащейся в этих файлах. cache_store_log none

#Разрешите запись в файлы регистрации доменных имен вместо IP-адресов

#Использование этой возможности облегчает анализ файлов регистрации,

#но снижает производительность шлюза.

log_fqdn on

#Разрешите создание файлов регистрации SQUID в формате Apache.

#Анализ этих файлов возможен с помощью стандартных утилит, предназначенных

#для анализа файлов регистрации Apache, например Webalizer. emulate_httpd_log on

acl all src 0.0.0.0/0.0.0.0

#Разрешите доступ со всех хостов.

http_access allow all

#Укажите почтовый ящик администратора. cache_mgr administrator@domen.ru

#Эти опции повышают безопасность системы за счет запуска #Squid от имени пользователя squid группы squid

cache_effective_user squid

cache_effective_group squid

#Укажите IP-адрес ускоряемого Web-сервера.

httpd_accel_host 212.45.28.122

#Укажите номер порта Web-сервера.

httpd_accel_port 80

#Отключите заданный по умолчанию алгоритм logfile_rotate.

#Мы используем свой сценарий.

logfile_rotate 0

#Запретите взаимодействие с другими прокси-серверами.

log_icp_queries off

#Задайте пароль, используемый утилитой администрирования прокси-сервера #cachemgr через Web-интерфейс (если вы собираетесь ее использовать).

#cachemgr_passwd $ecretnoe_Slovo all

#Включите поддержку ускорения записи файлов регистрации buffered_logs on

В рассматриваемом примере Squid запущен на системе 212.45.28.123 и ожидает запросов клиентов на используемом по умолчанию Web-сервером 80 порту (http_port 80). При наличии в кэше проксисервера необходимого объекта он выдается запрашивающему его клиенту без обращения к Web-серверу, установленного на системе с IP-адресом 212.45.28.123. При отсутствии запрашиваемого объекта в кэше, он за-

334

Часть 6. Программное обеспечение для организации шлюза

прашивается путем обращения к 80 порту Web-сервера (httpd_accel_port 80), установленного на системе с IP-адресом 212.45.28.122 (httpd_accel_host 212.45.28.122) и передается клиенту. Если полученный с Web-сервера объект относится к типу кешируемых объектов (в нашем примере – это любой объект, кроме файлов, размещенных в каталоге cgi-bin) он одновременно будет помещен в кэш, и при следующем обращении клиента будет выдан из кэша без обращения к Web-серверу.

Совместная работа Web-ускорителя и Web-сервера на одной системе может быть обеспечена путем изменения номера порта, на котором Web-сервер ожидает запросы клиентов по умолчанию, и внесения соответствующих изменений в файл /etc/squid/squid.conf:

#Установите номер порта, на котором Squid ожидает запросы HTTP-клиентов. http_port 80

#Укажите IP-адрес ускоряемого Web-сервера. httpd_accel_host 212.45.28.122

#Укажите номер порта Web-сервера. httpd_accel_port 8080

Тестирование, запуск и администрирование Squid осуществляется также, как и в случае использования его в качестве кэширующего прокси-сервера на шлюзе.

Глава 25. SquidGuard – программное обеспечение для настройки Squid

335

Глава 25

SquidGuard – программное обеспечение для настройки Squid

В этой главе:

1. Ограничения и допущения

2.Пакеты

3.Компиляция, оптимизация и инсталляция SquidGuard

4.Конфигурирование SquidGuard

5.Запуск и тестирование SquidGuard

6.Оптимизация SquidGuard

336

Часть 6. Программное обеспечение для организации шлюза

Настройка Squid с использованием списков контроля доступа (Access Control Lists) сложна и ограничивает возможности управления доступом пользователей локальной сети в Интернет. Для расширения возможностей управления доступом и упрощения настроек в Squid предусмотрено использование внешних программ, обеспечивающих расширенные возможности ограничения доступа в Интернет. Одной из таких программ является SquidGuard. Эта утилита позволяет закрывать доступ к нежелательным ресурсам, перенаправлять запросы к ним на другие ресурсы, например, содержащие информацию воспитательного характера, запрещать доступ в определенное время, дни недели, даты и т. п. Оптимизированный код SquidGuard позволяет обрабатывать большие списки (порядка миллиона записей) нежелательных Web-ресурсов без потери производительности шлюза. Ниже рассмотрен процесс установки, настройки и оптимизации этой полезной утилиты.

Ограничения и допущения

Исходные коды находятся в каталоге /var/tmp. Используется дистрибутив ASPLinux 7.3 (Vostok).

Все команды выполняются от имени суперпользователя root.

Установлен squid-2.5.STABLE1.

Перекомпиляции ядра не требуется.

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

Пакеты

Последующие рекомендации основаны на информации, полученной с домашней страницы проекта SquidGuard от 07.03.2003. Регулярно проверяйте обновления на http://www.squidguard.org. Мы используем установку требуемых компонентов с исходного архива, так как это открывает широкие возможности для настроек инсталляции.

Исходный коды содержатся в пакете squidGuard-version.tar.gz (последняя доступная на момент написания главы версия - squidGuard-1.2.0.tar.gz).

Компиляция, оптимизация и инсталляция SquidGuard

Шаг 1

Распакуйте архив с пакетом squidGuard-1.2.0.tar.gz в каталоге /var/tmp:

[root@bastion tmp]# tar -xzpf squidGuard-1.2.0.tar.gz

Перейдите в каталог /var/tmp/squidGuard-1.2.0:

[root@bastion tmp]#cd /var/tmp/squidGuard-1.2.0

Шаг 2

Сконфигурируйте исходные коды SquidGuard:

[root@bastion squidGuard-1.2.0]# CFLAGS="-O2 -march=i686 -funroll-loops"

\

./configure --prefix=/usr \ --sysconfdir=/etc \ --localstatedir=/var \

--with-sg-config=/etc/squid/squidGuard.conf \ --with-sg-logdir=/var/log/squid/squidGuard \ --with-sg-dbhome=/var/spool/squid/squidGuard \ --with-db-inc=/usr/include \ --with-db-lib=/usr/lib

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

Шаг 3 Откомпилируйте исходный код:

[root@bastion squidGuard-1.2.0]# make

ЗАМЕЧАНИЕ Во время компиляции с сервера http://www.squidguard.org получаются обновления файлов документации. Поэтому если у вас установлен Squid с поддержкой аутентификации пользователей и вы не хотите, чтобы вместо обновленных файлов документации у вас были сообщения Squid о невозможности доставки URL, отключите аутентификацию пользователей на время установки SquidGuard.

Глава 25. SquidGuard – программное обеспечение для настройки Squid

337

Шаг 4

Проинсталлируйте основные файлы SquidGuard:

[root@bastion squidGuard-1.2.0]# find /* > /root/squidGuard1 [root@bastion squidGuard-1.2.0]# make install

Шаг 5

Проинсталлируйте скрипт squidGuard.cgi, предназначенный для вывода сообщений о причине отказа в доступе пользователю:

[root@bastion squidGuard-1.2.0]# cd samples/

[root@bastion samples]# install –m 511 squidGuard1.cgi

Шаг 6

Измените владельца и установите права доступа к каталогу с файлами регистрации SquidGuard:

[root@bastion samples]# chown –R squid.squid /var/log/squid/squidGuard [root@bastion samples]# chmod 0750 /var/log/squid/squidGuard

Шаг 7

Распакуйте архив, содержащий фильтры (IP-адреса, к которым запрещено обращение и регулярные выражения, соответствующие URL), создайте каталоги для размещения фильтров и проинсталлируйте файлы фильтров:

[root@bastion samples]# cd dest/

[root@bastion dest]# mkdir –p /var/spool/squid/squidGuard [root@bastion dest]# cp blaklists.tar.gz /var/spool/squid/squidGuard [root@bastion dest]# cd /var/spool/squid/squidGuard

[root@bastion squidGuard]# tar xzpf blaklists.tar.gz [root@bastion squidGuard]# mkdir ads

[root@bastion squidGuard]# mkdir aggressive [root@bastion squidGuard]# mkdir audio-video [root@bastion squidGuard]# mkdir drugs [root@bastion squidGuard]# mkdir gambling [root@bastion squidGuard]# mkdir hacking [root@bastion squidGuard]# mkdir mail [root@bastion squidGuard]# mkdir porn [root@bastion squidGuard]# mkdir proxy [root@bastion squidGuard]# mkdir violence [root@bastion squidGuard]# mkdir warez [root@bastion squidGuard]# cd blaklists

[root@bastion blaklists]# install –m 644 ads/domains ../ads/ [root@bastion blaklists]# install –m 644 ads/urls ../ads/ [root@bastion blaklists]# install –m 644 aggressive/domains

../aggressive/

[root@bastion blaklists]# install –m 644 aggressive/urls ../aggressive/ [root@bastion blaklists]# install –m 644 audio-video/domains ../audio- video/

[root@bastion blaklists]# install –m 644 audio-video/urls ../audio-video/ [root@bastion blaklists]# install –m 644 drugs/domains ../drugs/ [root@bastion blaklists]# install –m 644 drugs/urls ../drugs/ [root@bastion blaklists]# install –m 644 gambling/domains ../gambling/ [root@bastion blaklists]# install –m 644 gambling/urls ../gambling/ [root@bastion blaklists]# install –m 644 hacking/domains ../ hacking/ [root@bastion blaklists]# install –m 644 hacking/urls ../hacking/ [root@bastion blaklists]# install –m 644 mail/domains ../mail/ [root@bastion blaklists]# install –m 644 porn/domains ../porn/ [root@bastion blaklists]# install –m 644 porn/urls ../porn/

[root@bastion blaklists]# install –m 644 porn/expressions../porn/ [root@bastion blaklists]# install –m 644 proxy/domains ../proxy/ [root@bastion blaklists]# install –m 644 proxy/urls ../proxy/ [root@bastion blaklists]# install –m 644 violence/domains ../violence/ [root@bastion blaklists]# install –m 644 violence/urls ../violence/ [root@bastion blaklists]# install –m 644 warez/domains ../warez/ [root@bastion blaklists]# install –m 644 warez/urls ../warez/

[root@bastion blaklists]# chown –R squid.squid

/var/spool/squid/squidGuard/

ads/domains
ads/urls
aggressive/domains

338

Часть 6. Программное обеспечение для организации шлюза

[root@bastion blaklists]# chmod 0750 /var/spool/squid/squidGuard/

[root@bastion blaklists]# cd ..

[root@bastion squidGuard]# rm –rf blaklists.tar.gz blaklists

ЗАМЕЧАНИЕ Выше приведен перечень команд, с помощью которых устанавливаются все фильтры, входящие в дистрибутив SquidGuard-1.2.0. Авторы рекомендуют установить их все и отключать ненужные на этапе конфигурации. Тем не менее, вы имеете возможность не устанавливать некоторые из них. Так, например, если вы не желаете запретить доступ к ресурсам из списков, содержащихся в каталоге warez, не выполняйте следующие команды:

[root@bastion squidGuard]# mkdir warez

[root@bastion blaklists]# install –m 644 warez/domains ../warez/ [root@bastion blaklists]# install –m 644 warez/urls ../warez/

Шаг 8 Настройте привязку динамических ссылок:

[root@bastion squidGuard]# /sbin/ldconfig

Шаг 9

Для повышения производительности удалите лишние фрагменты из исполняемого файла squidGuard:

[root@bastion squidGuard]# strip /usr/bin/squidGuard

Шаг 10 Создайте и сохраните в надежном месте список установленных файлов:

[root@bastion squidGuard]# find /* > /root/instfiles/squidGuard2 [root@bastion squidGuard]# diff /root/instfiles/squidGuard1

/root/squidGuard2 > /root/squidGuard2.installed

[root@bastion squidGuard]# mv /root/squidGuard2.installed /very reliable_place/squidGuard2.installed.YYYYMMDD

Шаг 11

Удалите каталоги с исходными кодами SquidGuard и архив:

[root@bastion squidGuard]# rm –rf /var/tmp/squidGuard-1.2.0/ [root@bastion squidGuard]# rm –f /var/tmp/squidGuard-1.2.0.tar.gz

Конфигурирование SquidGuard

Шаг 1 Создайте или отредактируйте в соответствии с приведенными ниже рекомендациями и вашими по-

требностями файл /etc/squid/squidGuard.conf:

#Path declarations

#Укажите путь к корневому каталогу с фильтрами

dbhome /var/spool/squid/squidGuard

#Укажите путь к корневому каталогу с файлами регистрации logdir /var/log/squid/squidGuard

#Time space declarations

#В данном примере доступ разрешен по рабочим дням с 09:00 до 18:15 time workhours {

weekly mtwhf 09:00 - 19:15

}

#Source group declarations

# Описание локальной сети src internal {

ip 192.168.1.1/24

}

#Destination group declarations

#Описание ресурсов, доступ к которым запрещен dest ads {

domainlist urllist

}

dest aggressive { domainlist

Глава 25. SquidGuard – программное обеспечение для настройки Squid

339

urllist

aggressive/urls

 

}

 

 

dest audio-video {

 

 

domainlist

audio-video/domains

 

urllist

audio-video/urls

 

}

 

 

dest drugs {

 

 

domainlist

drugs/domains

 

urllist

drugs/urls

 

}

 

 

dest gambling {

 

 

domainlist

gambling/domains

 

urllist

gambling/urls

 

}

 

 

dest hacking {

 

 

domainlist

hacking/domains

 

urllist

hacking/urls

 

}

 

 

dest mail {

 

 

domainlist

mail/domains

 

}

 

 

dest porn {

 

 

domainlist

porn/domains

 

urllist

porn/urls

 

expressionlist

porn/expressions

 

}

 

 

dest proxy {

 

 

domainlist

proxy/domains

 

urllist

proxy/urls

 

}

 

 

dest violence {

 

 

domainlist

violence/domains

 

urllist

violence/urls

 

}

 

 

dest varez {

 

 

domainlist

warez/domains

 

urllist

warez/urls

 

}

#Rewrite rule group declarations

#Авторы не рекомендуют использовать этот раздел.

#Access Control Lists

#Списки контроля доступа (ACCESS CONTROL LISTS)

#

#Разрешите доступ со всех машин в локальной сети

#в рабочие дни и рабочее время

#ко всем ресурсам, кроме перечисленных в фильтре. acl {

internal within workhours {

pass !ads !aggressive !audio-video !drugs !gambling !hacking !mail !porn !proxy !violence !warez

all

}

#Запрет и переадресация всех остальных запросов default {

pass none

redirect http://bastion.und/cgibin/squidGuard.cgi?clientaddr=%a&clientname=%n&clientuser=%i&clientgroup= %s&targetgroup=%t&url=%u

}

}

В файле squidGuard.conf могут использоваться следующие зарезервированные слова:

340

Часть 6. Программное обеспечение для организации шлюза

– acl

– rewrite

– anonymous

– sat

– date

– saturday

– dbhome

– saturdays

– dest

– source

– destination

– src

– domain

– sun

– domainlist

– sunday

– else

– sundays

– expressionlist

– thu

– fri

– thursday

– friday

– thursdays

– fridays

– time

– ip

– tue

– log

– tuesday

– logdir

– tuesdays

– logfile

– urllist

– mon

– user

– monday

– userlist

– mondays

– wed

– outside

– wednesday

– pass

– wednesdays

– redirect

– weekly

vrew

– within

Поэтому использование этих слов в качестве имен объектов не допускается.

В разделе Path declarations вы можете задать пути к корневому каталогу файла с фильтрами и каталогу с файлами регистрации.

Раздел Time space declarations используется для задания различных интервалов времени в следующем формате:

time name { speсification specification

...

specification

}

где:

time – зарезервированное слово, используемое в качестве признака начала описания временных интервалов;

name – имя описания временных интервалов;

speсification – описание интервала.

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

weekly {smtwhfa} [HH:MM-HH:MM]

где:

s - воскресенье;

m - понедельник;

t - вторник;

w -среда;

h - четверг;

f -пятница;

a-воскресенье.

В рассматриваемом примере конфигурационного файла /etc/squid/squidGuard.conf запись: time workhours {

weekly mtwhf 09:00 - 19:15

}

определяет интервалы времени с именем workhours, включающие рабочее время, т. е. с 9.00 по 19.15 с понедельника по пятницу.

Запись:

Time notworktime

{

Соседние файлы в предмете Информатика