
LINUX-сервер пошаговые инструкции инсталляции и настройки - Бруй В. В. , Карлов С. В
..pdf
Глава 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/

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
{