Статья по установки Squid

Конфигурирование прокси-сервера (Установка, настройка SQUID)
Ответить
eem-kz
Сообщения: 14
Зарегистрирован: 09 апр 2009, 13:21

Статья по установки Squid

Сообщение eem-kz » 14 апр 2009, 14:37

Кэширующий прокси-сервер Squid
В этой главе:
1. Ограничения и допущения
2. Пакеты
3. Инсталляция с помощью rpm-пакетов
4. Компиляция, оптимизация и инсталляция Squid
5. Конфигурирование Squid
6. Пример конфигурации Squid для шлюза
7. Тестирование Squid
8. Администрирование Squid
9. Пример конфигурации Squid в качестве Web-ускорителя


Кэширующий прокси-сервер Squid разработан на основе результатов научно-исследовательского про¬екта Harvest, финансируемого управлением перспективных исследований и разработок (ARPA). Исследова¬ния проводились в национальной Лаборатории прикладных сетевых исследований (National Laboratory for Applied Network Research) и финансировались национальным научным Фондом (National Science Foundation). Squid сохраняет в оперативной памяти и на диске документы и другие объекты данных, полу¬чаемые с Web-ресурсов, ускоряя при этом доступ к ним и сокращая затраты на трафик. Обычно Squid ис¬пользуется для организации шлюза из локальных сетей в Интернет. Использование Squid в качестве кэши-рующего прокси-сервера на корпоративном шлюзе в сочетании с IPTables и GIPTables Firewall позволяет ус¬тановить ограничения на доступ пользователей к Web-ресурсам (аутентификация пользователей, ограничения по IP-адресам, времени и пропускной способности канала). Кроме того, Squid может использо¬ваться для увеличения производительности сильно загруженных Web-серверов путем предоставления кли¬ентам часто запрашиваемых объектов из кэша прокси-сервера без обращения к Web-серверу.

Ограничения и допущения
Исходные коды находятся в каталоге /var/tmp. Используется дистрибутив ASPLinux 7.3 (Vostok). Все команды выполняются от имени суперпользователя root. Перекомпиляции ядра не требуется.
Процедуры, описанные в этой главе, могут оказаться применимыми для других дистрибутивов Linux, но авторы этого не проверяли.

Пакеты
Последующие рекомендации основаны на информации, полученной с домашней страницы проекта Squid Web Proxy Cache от 01.03.2003. Регулярно проверяйте обновления на http://www.squid-cache.orq. Мы используем установку требуемых компонентов с исходного архива, так как это открывает широкие возможности для настроек инсталляции.
Исходные коды содержатся в пакете squid-version.tar.gz (последняя доступная на момент на¬писания главы версия squid-2.5.STABLE1.tar.gz).

Инсталляция с помощью rpm-пакетов
Если вы предпочитаете использование системы со стандартным ядром и программным обеспечением, установленным из rpm-пакетов, для установки или обновления пакета необходимо выполнить следующие операции.

ЗАМЕЧАНИЕ Авторы настоятельно рекомендуют устанавливать программное обеспечение из исход¬ных кодов.

Шаг 1
Проверьте, установлен ли пакет программы Squid с помощью следующей команды:
[root@bastion /]# rpm –iq squid
Если вы следовали нашим рекомендациям, то пакет не установлен.

Шаг 2
Перейдите в каталог, где находится пакет squid-2.4.STABLE6-1.7.2.asp.i386.rpm. Если вы в соответствии с рекомендациями главы 2 скопировали все пакеты, входящие в дистрибутив, в каталог /home/distrib, то выполните команду:
[root@bastion /]# cd /home/distrib
и установите:

[root@bastion distrib]# rpm –ihv openssl-0.9.6b-24asp.i686.rpm\
cyrus-sasl-1.5.24-25.i386.rpm\
openldap-2.0.23-4.i386.rpm\
squid-2.4.STABLE6-1.7.2.asp.i386.rpm
или обновите пакет:
[root@bastion distrib]# rpm –Uhv squid-2.4.STABLE6-1.7.2.asp.i386.rpm

ЗАМЕЧАНИЕ Процедура настройки Squid версии 2.4.STABLE6 существенно отличаются от процедуры настройки Squid версии 2.5.STABLE1, подробно описанной ниже. Особенно это касается аутентификации пользователей. Если вы устанавливаете Squid версии 2.4.STABLE6 ознакомьтесь с документацией, которая может быть получена с домашней страницы проекта http://www.squid-cache.org/.

eem-kz
Сообщения: 14
Зарегистрирован: 09 апр 2009, 13:21

Re: Статья по установки Squid

Сообщение eem-kz » 14 апр 2009, 14:43

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

Для инсталляции Squid из исходных кодов необходимо выполнить следующие операции.

Шаг 1
Распакуйте архив с пакетом squid-2.5.STABLE1.tar.gz в каталоге /var/tmp:
[root@bastion tmp]# tar -xzpf squid-2.5.STABLE1.tar.gz
Перейдите в каталог /var/tmp/squid-2.5.STABLE1: [root@bastion tmp]#cd /var/tmp/squid-2.5.STABLE1

Шаг 2
Создайте учетную запись пользователя squid без пароля и доступа к командному интерпретатору: [root@bastion squid-2.5.STABLE1]# useradd -c "Squid user" –u 23 -s /bin/false –r -d /var/spool/squid squid 2>/dev/null || :

Шаг 3
Для изменения заданных по умолчанию каталогов размещения файлов cache.log, access.log и store.log на /var/log/squid, файла squid.pid – на каталог /var/run и местоположения каталога кэша – на /var/spool/squid, в файле /var/tmp/squid-2.5.STABLE1/src/Makefile.in изме¬ните строку:
DEFAULT_LOG_PREFIX = $(localstatedir)/logs
на:
DEFAULT_LOG_PREFIX = $(localstatedir)/log/squid
Строку:
DEFAULT_PID_FILE = $(DEFAULT_LOG_PREFIX)/squid.pid
на:
DEFAULT_PID_FILE = /var/run/squid.pid
Строку:
DEFAULT_SWAP_DIR = $(localstatedir)/cache
на:
DEFAULT_SWAP_DIR = $(localstatedir)/var/spool/squid
ЗАМЕЧАНИЕ Размещение кэша в каталоге /var/spool/, находящегося на отдельном разделе, по¬зволит оптимизировать производительность кэширующего прокси-сервера, например, используя ulimit.

Шаг 4
Сконфигурируйте исходные коды Squid:
[root@bastion squid-2.5.STABLE1]# CFLAGS="-O2 -march=i686 -funroll-loops"
\
./configure \
--prefix='' \
--sysconfdir=/etc/squid \
--libexecdir=/usr/lib/squid \
--localstatedir=/var \
--bindir=/usr/sbin \
--exec_prefix=/usr \
--datadir=/usr/lib/squid \
--mandir=/usr/share/man \
--enable-gnuregex \
--with-pthreads \
--enable-storeio=diskd,ufs \
--enable-removal-policies="heap" \
--enable-delay-pools \
--enable-cache-digests \ --enable-kill-parent-hack \ --enable-poll \
--enable-default-err-language="Russian-1251" \ --enable-err-language="Russian-1251" \ --enable-linux-netfilter \ --disable-ident-lookups \ --enable-truncate \ --enable-auth="basic" \ --enable-basic-auth-helpers="PAM" \ --enable-ssl

Предложенные опции конфигурации указывают на то, что исходные коды должны быть откомпили¬рованы с поддержкой библиотек, повышающих производительность прокси-сервера, и с использованием ба¬зовой схемы аутентификации пользователей на основе стандартных модулей PAM. Сообщения об ошибках должны выдаваться на русском языке в кодировке Windows-1251.

Шаг 5
Откомпилируйте основную часть кода:
[root@bastion squid-2.5.STABLE1]# make all

Шаг 6
Проинсталлируйте основные файлы Squid:
[root@bastion squid-2.5.STABLE1]# find /* > /root/instfiles/squid1
[root@bastion squid-2.5.STABLE1]# make install

Шаг 7
Проинсталлируйте модуль аутентификации auth_pam:
[root@bastion squid-2.5.STABLE1]# cd helpers/basic/auth_pam
[root@bastion auth_pam]# install –m 4511 pam_auth /usr/lib/squid

Шаг 8
Создайте каталоги, необходимые для нормальной работы Squid, назначьте права доступа к ним:
[root@bastion auth_pam]# mkdir –p /var/spool/squid
[root@bastion auth_pam]# mkdir –p /var/spool/squid
[root@bastion auth_pam]# chown –R squid.squid /var/spool/squid
[root@bastion auth_pam]# mkdir –R squid.squid /var/spool/squid

Шаг 9
Удалите ненужные файлы, содержащие стандартные сценарии для запуска Squid: [root@bastion auth_pam]# rm –f /usr/sbin/RunCashe [root@bastion auth_pam]# rm –f /usr/sbin/RunAccel

Шаг 10
Создайте ссылки на соответствующие библиотеки:
[root@bastion auth_pam]# /sbin/ldconfig

Шаг 11
Создайте и сохраните в надежном месте список установленных файлов: [root@bastion auth_pam]# find /* /root/instfiles/squid2 [root@bastion auth_pam]# diff /root/squid1 /root/squid2 > /root/squid.installed
[root@bastion auth_pam]# mv /root/squid.installed /very reli-able_place/squid.installed.YYYYMMDD

Шаг 12
Удалите каталоги с исходными кодами Squid и архив:
[root@bastion auth_pam]# rm –rf /var/tmp/squid-2.5.STABLE1
[root@bastion auth_pam]# rm –f /var/tmp/squid-2.5.STABLE1.tar.gz

Шаг 13
Создайте файл /etc/rc.d/init.d/squid, содержащий следующие строки:
#!/bin/bash
This shell script takes care of starting and stopping Squid (Proxy server). #
# chkconfig: 345 90 25
# description: Squid - Internet Object Cache. Internet object caching is \

# a way to store requested Internet objects (i.e., data available \
# via the HTTP, FTP, and gopher protocols) on a system closer to the \
# requesting site than to the source. Web browsers can then use the \
# local Squid cache as a proxy HTTP server, reducing access time as \
# well as bandwidth consumption. #

# processname: squid
# pidfile: /var/run/squid.pid
# config: /etc/squid/squid.conf
PATH=/usr/bin:/sbin:/bin:/usr/sbin export PATH
# Source function library. . /etc/rc.d/init.d/functions
# Source networking configuration. . /etc/sysconfig/network
# Check that networking is up. [ ${NETWORKING} = "no" ] && exit 0
# Check if the squid.conf file is present. [ -f /etc/squid/squid.conf ] || exit 0
# Source Squid configureation. if [ -f /etc/sysconfig/squid ]; then
. /etc/sysconfig/squid else
SQUID_OPTS="-D"
SQUID_SHUTDOWN_TIMEOUT=100 fi
# Determine the name of the squid binary.
[ -f /usr/sbin/squid ] && SQUID=squid
[ -z "$SQUID" ] && exit 0
prog="$SQUID"
# Determine which one is the cache_swap directory
CACHE_SWAP=`sed -e 's/#.*//g' /etc/squid/squid.conf | \
grep cache_dir | awk '{ print $3 }'` [ -z "$CACHE_SWAP" ] && CACHE_SWAP=/var/spool/squid
RETVAL=0
start() {
for adir in $CACHE_SWAP; do
if [ ! -d $adir/00 ]; then
echo -n "init_cache_dir $adir... " $SQUID -z -F 2>/dev/null fi done
echo -n $"Starting $prog: "
$SQUID $SQUID_OPTS 2> /dev/null &
# Trap and prevent certain signals from being sent to the Squid proc¬ess.
trap '' 1 2 3 18
RETVAL=$?
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/$SQUID
[ $RETVAL -eq 0 ] && echo_success
[ $RETVAL -ne 0 ] && echo_failure
echo
return $RETVAL }
stop() {
echo -n $"Stopping $prog: " $SQUID -k check >/dev/null 2>&1 RETVAL=$?
if [ $RETVAL -eq 0 ] ; then $SQUID -k shutdown & rm -f /var/lock/subsys/$SQUID timeout=0 while : ; do
[ -f /var/run/squid.pid ] || break
if [ $timeout -ge $SQUID_SHUTDOWN_TIMEOUT ]; then echo return 1 fi
sleep 2 && echo -n "." timeout=$((timeout+2)) done
echo_success echo else
echo_failure echo fi
return $RETVAL } reload() {
$SQUID $SQUID_OPTS -k reconfigure }
restart() {
stop
start }
condrestart() {
[ -e /var/lock/subsys/squid ] && restart || : }
# See how we were called. case "$1" in start)
start
;; stop)
stop
;; reload)
reload
;; restart)
restart
;; condrestart)
condrestart ;; *)
echo $"Usage: $0 {start|stop|reload|restart|condrestart}" exit 1 esac exit $?

Шаг 14
Сделайте файл /etc/rc.d/init.d/squid исполняемым и назначьте его владельцем пользователя root:
[root@bastion /]# chmod 700 /etc/init.d/squid [root@bastion /]# chown 0.0 /etc/init.d/squid
Если вы хотите, чтобы Squid запускался при загрузке системы, создайте символьные ссылки в катало¬ге /etc/rc.d:
[root@bastion /]# chkconfig --add squid [root@bastion /]# chkconfig --level 345 squid on

Шаг 15
Создайте файл /etc/pam.d/squid, содержащий следующие строки:
#%PAM-1.0
auth required /lib/security/pam_stack.so service=system-auth account required /lib/security/pam_stack.so service=system-auth

eem-kz
Сообщения: 14
Зарегистрирован: 09 апр 2009, 13:21

Re: Статья по установки Squid

Сообщение eem-kz » 14 апр 2009, 14:47

Конфигурирование Squid
Основной конфигурационный файл Squid - /etc/squid/squid.conf. На момент написания этой главы документация для версии 2.5.STABLE1 находилась в стадии разработки. Ниже приведенные рекомен¬дации получены в результате анализа достаточно подробных комментариев, содержащихся в файле /etc/squid/squid.conf.default.
Пример конфигурации Squid для шлюза
Типовой вариант сопряжения прокси-сервера с локальной сетью и Интернет представлен на рис. 24.1. Настройка Squid осуществляется следующим образом.

Шаг 1
Создайте или отредактируйте в соответствии с приведенными ниже рекомендациями и вашими тре¬бованиями файл /etc/squid/squid.conf (жирным шрифтом выделены комментарии, которые пояс¬няют значения основных параметров, и фрагменты, которые обязательно нужно изменить в соответствии с реальной конфигурацией шлюза):

#Установите номер порта на котором Squid ожидает запросы HTTP-клиентов.
#Значение по умолчанию 3128
http_port 3128
#Обеспечьте корректную работу Squid c браузерами, некорректно
#поддерживающими SSL
ssl_unclean_shutdown on
#Установите номер порта, на котором Squid принимает и получает запросы
#с других прокси-серверов. Установив значение порта, равное 0, вы повыси¬те #производительность вашей системы
icp_port 0
#Установите запрет кэширования некоторого типа объектов.
#В данном случае – файлов, находящихся в каталоге 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
#Определите политику очистки кэша cache_replacement_policy heap GDSF memory_replacement_policy heap GDSF
#Определите формат представления данных в кэше (DISKD), каталог, #в котором он размещается (/var/spool/squid), объем дискового пространст¬ва
#(1250 МБайт), количество подкаталогов первого и второго уровня в #каталоге /var/spool/squid.
cache_dir diskd /var/spool/squid 1250 16 256
#Запретите создание файла, в котором регистрируется удаление и помещение #объектов в кэш. Авторам не известны утилиты, предназначенные для обра¬ботки
#информации, содержащейся в этих файлах. cache_store_log none
#Разрешите запись в файлы регистрации доменных имен вместо IP-адресов. #Использование этой возможности облегчает анализ файлов регистрации, #но снижает производительность шлюза. log_fqdn on
#Разрешите создание файлов регистрации SQUID в формате Apache. #Анализ этих файлов возможен с помощью стандартных утилит, предназначен¬ных
#для анализа файлов регистрации Apache, например Webalizer. emulate_httpd_log on
#Определите элементы списков контроля доступа (ACL elements) #Определите имя элемента ACL и параметры для локальной сети. acl localnet src 192.168.1.0/255.255.255.0 #Определите имя элемента ACL и параметры локального хоста. acl localhost src 127.0.0.1/255.255.255.255
#Определите имена элементов ACL и номера SSL и безопасных портов. acl SSL_ports port 443 563
acl Safe_ports port 80 21 443 563 70 210 1025-65535 280 488 591 777 #Определите имя элемента ACL для метода CONNECT. acl CONNECT method CONNECT
#Определите имя элемента ACL для метода PURGE(очистка кэша). acl all src 0.0.0.0/0.0.0.0
#Создайте Access List(правила доступа для всех элементов ACL). #Squid воспринимает правила в том порядке, в котором они встречаются в #/etc/squid/squid.conf.
#Разрешите доступ пользователей из локальной сети и с локальной системы http_access allow localnet http_access allow localhost #Разрешите очистку кэша с локальной системы http_access allow PURGE localhost #Запретите обращение к небезопасным портам http_access deny !Safe_ports
#Запретите обращение к портам, неиспользуемым SSL, с помощью метода #CONNECT
http_access deny CONNECT !SSL_ports #Запретите метод CONNECT http_access deny CONNECT #Запретите очистку кэша со всех систем http_access deny PURGE #Запретите доступ для всех хостов http_access deny all #Укажите e-mail администратора cache_mgr admin@domain.ru
#Эти опции повышают безопасность системы за счет запуска #Squid от имени пользователя squid группы squid
cache_effective_user squid
cache_effective_group squid
logfile_rotate 0
#Запретите обмен с другими прокси-серверами
log_icp_queries off
#Задайте пароль, используемый утилитой администрирования прокси-сервера
#cachemgr через Web-интерфейс (если вы собираетесь ее использовать).
#cachemgr_passwd $ecretnoe_Sl0vo all
#Включите поддержку ускорения записи файлов регистрации
buffered_logs on

При поступлении запроса на доступ в Интернет последовательно проверяются правила, указанные в ACL. Если условие, указанное в правиле вида "http_access allow …" выполняется, доступ разрешает¬ся и дальнейший просмотр правил прекращается. Если условие не выполняется, осуществляется переход к проверке условий, определяемых следующим правилом. Если условие, указанное в правиле вида "http_access deny …" выполняется, доступ запрещается, и дальнейший просмотр правил прекраща¬ется. Если условие не выполняется, осуществляется переход к проверке следующего правила.
В рассматриваемом примере при получении запроса от клиента в локальной сети на установление со¬единения с Web-сервером в Интернет в соответствии с первым правилом, указанным в ACL – http_access allow localnet – доступ разрешается. При получении запроса от клиента с консоли шлюза на установление соединения с Web-сервером в Интернет в соответствии с первым правилом в ACL доступ не разрешается и осуществляется переход к проверке выполнения условий второго правила. В соот¬ветствии с ним доступ в Интернет разрешается.
Работа различных клиентов в локальной сети может инициировать обращение к «безопасным» пор¬там шлюза. При возникновении таких обращений в соответствии с первым и вторым правилом доступ не разрешается и осуществляется переход к проверке выполнения условий сначала третьего, а затем четвертого правила. В соответствии с одним из этих правил, доступ разрешается, причем к портам 443 и 563 даже с по¬мощью метода CONNECT. При получении запроса на очистку кэша со шлюза (использования метода PURGE) в соответствии с правилами 1…4 доступ будет запрещен, и осуществляется переход к проверке вы¬полнения условий пятого правила http_access allow PURGE localhost, в соответствии с которым доступ будет разрешен.
Шестое, седьмое и восьмое правило служат для реализации запрета всех остальных возможных со¬единений. Например, при попытке установления соединения с 22 портом, будут просмотрены первое, вто¬рое, третье и четвертое правила. При этом первое, второе и третье правила не дадут разрешения на установ¬ку соединения, а при проверке выполнения условий пятого правила соединение будет запрещено, а проверка выполнения условий правил прекращена.
ЗАМЕЧАНИЕ При написании правил в ACL важно учитывать не только их содержание, но и последова¬тельность.

eem-kz
Сообщения: 14
Зарегистрирован: 09 апр 2009, 13:21

Re: Статья по установки Squid

Сообщение eem-kz » 14 апр 2009, 14:49

Если вы хотите, чтобы пользователи перед получением доступа в Интернет проходили аутентифика¬цию, файл /etc/squid/squid.conf необходимо отредактировать в соответствии со следующими реко¬мендациями:
#Установите номер порта, на котором Squid ожидает запросы HTTP-клиентов. #Значение по умолчанию 3128 http_port 3128
#Обеспечьте корректную работу Squid c браузерами, некорректно #поддерживающими SSL ssl_unclean_shutdown on
#Установите номер порта, на котором Squid принимает и получает запросы #с других прокси-серверов. Установив значение порта, равное 0, вы повыси¬те #производительность вашей системы icp_port 0
#Установите запрет кэширования некоторого типа объектов. #В данном случае – файлов, находящихся в каталоге 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 #Определите политику очистки кэша
cache_replacement_policy heap GDSF
memory_replacement_policy heap GDSF
#Определите формат представления данных в кэше (DISKD), каталог,
#в котором он размещается (/var/spool/squid), объем дискового пространст-
ва
#(1250 МБайт), количество подкаталогов первого и второго уровня в #каталоге /var/spool/squid.
cache_dir diskd /var/spool/squid 1250 16 256
#Запретите создание файла, в котором регистрируется удаление и помещение #объектов в кэш. Авторам неизвестны утилиты, предназначенные для обработ¬ки
#информации, содержащейся в этих файлах. cache_store_log none
#Разрешите запись в файлы регистрации доменных имен вместо IP-адресов. #Использование этой возможности облегчает анализ файлов регистрации, #но снижает производительность шлюза. log_fqdn on
#Разрешите создание файлов регистрации SQUID в формате Apache. #Анализ этих файлов возможен с помощью стандартных утилит, предназначен¬ных
#для анализа файлов регистрации Apache, например Webalizer. emulate_httpd_log on
#Определите параметры аутентификации пользователей. #Пример - базовая схема с использованием стандартных модулей PAM.
auth_param basic program /usr/lib/squid/pam_auth auth_param basic children 5
auth_param basic realm Squid Proxy-Caching Web Server auth_param basic credentialsttl 2 hours
#Определите элементы списков контроля доступа (ACL elements).
#Определите имя элемента ACL, определяющего список пользователей,
#которые должны проходить аутентификацию при обращении к SQUID.
#REQUIRED – любое допустимое имя пользователя.
acl usera proxy_auth REQUIRED
#Определите имя элемента ACL и параметры для локальной сети.
acl localnet src 192.168.1.0/255.255.255.0
#Определите имя элемента ACL и параметры локального хоста.
acl localhost src 127.0.0.1/255.255.255.255
#Определите имена элементов ACL и номера SSL и безопасных портов.
acl SSL_ports port 443 563
acl Safe_ports port 80 21 443 563 70 210 1025-65535 280 488 591 777
#Определите имя элемента ACL для метода CONNECT.
acl CONNECT method CONNECT
#Определите имя элемента ACL и IP-адрес, к которому разрешен
#доступ без аутентификации пользователей.
#Определите имя элемента ACL для метода PURGE.
acl PURGE method PURGE
#Определите имя элемента ACL для Интернет.
acl all src 0.0.0.0/0.0.0.0
#Создайте Access List(правила доступа для всех элементов ACL).
#Squid воспринимает правила в том порядке, в котором они встречаются в
#/etc/squid/squid.conf.
#Разрешите доступ пользователей только с аутентификацией.
http_access allow usera
Разрешите доступ пользователей из локальной сети и с локальной системы
http_access allow localnet
http_access allow localhost
#Разрешите очистку кэша с локальной системы
http_access allow PURGE localhost
#Запретите обращение к небезопасным портам
http_access deny !Safe_ports
#Запретите обращение к портам, неиспользуемым SSL с помощью
#метода CONNECT
http_access deny CONNECT !SSL_ports
#Запретите метод CONNECT
http_access deny CONNECT
#Запретите очистку кэша со всех систем
http_access deny PURGE
#Запретите доступ для всех хостов
http_access deny all
#Укажите e-mail администратора
cache_mgr admin@domain.ru
#Эти опции повышают безопасность системы за счет запуска
#Squid от имени пользователя squid группы squid
cache_effective_user squid
cache_effective_group squid
logfile_rotate 0
#Запретите обмен с другими прокси-серверами
log_icp_queries off
#Задайте пароль, используемый утилитой администрирования прокси-сервера
#cachemgr через Web-интерфейс (если вы собираетесь ее использовать).
#cachemgr_passwd $ecretnoe_Sl0vo all
#Включите поддержку ускорения записи файлов регистрации
buffered_logs on

eem-kz
Сообщения: 14
Зарегистрирован: 09 апр 2009, 13:21

Re: Статья по установки Squid

Сообщение eem-kz » 14 апр 2009, 14:52

В некоторых случаях бывает необходимо ограничить перечень Web-ресурсов, доступ к которым мо¬гут иметь пользователи локальной сети. Аутентификация пользователей при этом не требуется. Ниже при¬веден пример конфигурационного файла /etc/squid/squid.conf, разрешающий всем пользователям локальной сети доступ только к серверам http://www.rian.ru, http://www.interfax.ru и http://www.finmarket.ru без аутентификации пользователей:
#Установите номер порта, на котором Squid ожидает запросы HTTP-клиентов. #Значение по умолчанию 3128 http_port 3128
#Обеспечьте корректную работу Squid c браузерами, некорректно #поддерживающими SSL ssl_unclean_shutdown on
#Установите номер порта, на котором Squid принимает и получает запросы #с других прокси-серверов. Установив значение порта, равное 0, вы повыси¬те #производительность вашей системы. icp_port 0
#Установите запрет кэширования некоторого типа объектов. #В данном случае – файлов, находящихся в каталоге 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
#Определите политику очистки кэша. cache_replacement_policy heap GDSF memory_replacement_policy heap GDSF
#Определите формат представления данных в кэше (DISKD), каталог, #в котором он размещается (/var/spool/squid), объем дискового пространст¬ва
#(1250 МБайт), количество подкаталогов первого и второго уровня в #каталоге /var/spool/squid.
cache_dir diskd /var/spool/squid 1250 16 256
#Запретите создание файла, в котором регистрируется удаление и помещение #объектов в кэш. Авторам не известны утилиты, предназначенные для обра¬ботки
#информации, содержащейся в этих файлах. cache_store_log none
#Разрешите запись в файлы регистрации доменных имен вместо IP-адресов. #Использование этой возможности облегчает анализ файлов регистрации,
#но снижает производительность шлюза. log_fqdn on
#Разрешите создание файлов регистрации SQUID в формате Apache.
#Анализ этих файлов возможен с помощью стандартных утилит, предназначен¬ных
#для анализа файлов регистрации Apache, например Webalizer. emulate_httpd_log on
#Определите элементы списков контроля доступа (ACL elements). #Определите имя элемента ACL и параметры для локальной сети. acl localnet src 192.168.1.0/255.255.255.0 #Определите имя элемента ACL и параметры локального хоста. acl localhost src 127.0.0.1/255.255.255.255
#Определите имена элементов ACL и номера SSL и безопасных портов. acl SSL_ports port 443 563
acl Safe_ports port 80 21 443 563 70 210 1025-65535 280 488 591 777 #Определите имя элемента ACL для метода CONNECT. acl CONNECT method CONNECT
#Определите имя элемента ACL для метода PURGE(очистка кэша). acl PURGE method PURGE
#Определите имя элемента ACL для Интернет. acl all src 0.0.0.0/0.0.0.0 #Определите имя элемента ACL остальных Web-ресурсов.
acl WWW dst 0.0.0.0/0.0.0.0
#Определите имя элементов ACL для серверов, к которым разрешен доступ
acl www_rian_ru 195.230.73.54 acl www_interfax_ru 212.69.102.3 acl www_finmarket_ru 195.151.92.50
#Создайте Access List(правила доступа для всех элементов ACL).
#Squid воспринимает правила в том порядке в котором они встречаются
#/etc/squid/squid.conf.
#Разрешите доступ пользователей с локальной системы
http_access allow localhost
#Разрешите доступ к трем серверам.
http_access allow www_rian_ru
http_access allow www_interfax_ru
http_access allow www_finmarket_ru
#Разрешите очистку кэша с локальной системы.
http_access allow PURGE localhost
#Запретите обращение к небезопасным портам.
http_access deny !Safe_ports
#Запретите обращение к портам, неиспользуемым SSL.
http_access deny CONNECT !SSL_ports
#Запретите метод CONNECT.
http_access deny CONNECT
#Запретите очистку кэша со всех систем.
http_access deny PURGE
#Запретите обращение к остальным Web-ресурсам.
http_access deny WWW
#Запретите доступ для всех хостов.
http_access deny all
#Укажите e-mail администратора.
cache_mgr admin@domain.ru
#Эти опции повышают безопасность системы за счет запуска
#Squid от имени пользователя squid группы squid.
cache_effective_user squid
cache_effective_group squid
logfile_rotate 0
#Запретите обмен с другими прокси-серверами.
log_icp_queries off
#Задайте пароль, используемый утилитой администрирования прокси-сервера.
#cachemgr через Web-интерфейс (если вы собираетесь ее использовать).
#cachemgr_passwd $ecretnoe_Sl0vo all
#Включите поддержку ускорения записи файлов регистрации
Возможность ограничения доступа в Интернет по времени иллюстрируется следующим примером конфигурационного файла /etc/squid/squid.conf:
buffered_logs on

eem-kz
Сообщения: 14
Зарегистрирован: 09 апр 2009, 13:21

Re: Статья по установки Squid

Сообщение eem-kz » 14 апр 2009, 15:00

Возможность ограничения доступа в Интернет по времени иллюстрируется следующим примером конфигурационного файла /etc/squid/squid.conf:
buffered_logs on
#Установите номер порта, на котором Squid ожидает запросы HTTP-клиентов. #Значение по умолчанию 3128
http_port 3128
#Обеспечьте корректную работу Squid c браузерами, некорректно #поддерживающими SSL.
ssl_unclean_shutdown on
#Установите номер порта, на котором Squid принимает и получает запросы
#с других прокси-серверов. Установив значение порта, равное 0, вы повыси¬те #производительность вашей системы.
icp_port 0
#Установите запрет кэширования некоторого типа объектов.
#В данном случае – файлов, находящихся в каталоге 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
#Определите политику очистки кэша.
cache_replacement_policy heap GDSF
memory_replacement_policy heap GDSF
#Определите формат представления данных в кэше (DISKD), каталог,
#в котором он размещается (/var/spool/squid), объем дискового пространства
#(1250 МБайт), количество подкаталогов первого и второго уровня в #каталоге /var/spool/squid.
cache_dir diskd /var/spool/squid 1250 16 256
#Запретите создание файла, в котором регистрируется удаление и помещение #объектов в кэш. Авторам не известны утилиты, предназначенные для обра¬ботки
#информации, содержащейся в этих файлах.
cache_store_log none
#Разрешите запись в файлы регистрации доменных имен вместо IP-адресов. #Использование этой возможности облегчает анализ файлов регистрации,
#но снижает производительность шлюза.
log_fqdn on
#Разрешите создание файлов регистрации SQUID в формате Apache.
#Анализ этих файлов возможен с помощью стандартных утилит, предназначен¬ных
#для анализа файлов регистрации Apache, например Webalizer.
emulate_httpd_log on
#Определите элементы списков контроля доступа (ACL elements).
#Определите имя элемента ACL и параметры для локальной сети.
acl localnet src 192.168.1.0/255.255.255.0
течение
#Определите имя элемента ACL и интервал времени,
#которого разрешен доступ в Интернет.
acl WorkDay MTWHF 09:00-18:20
#Определите имя элемента ACL и параметры локального хоста.
acl localhost src 127.0.0.1/255.255.255.255
#Определите имена элементов ACL и номера SSL и безопасных портов.
acl SSL_ports port 443 563
acl Safe_ports port 80 21 443 563 70 210 1025-65535 280 488 591 777
#Определите имя элемента ACL для метода CONNECT.
acl CONNECT method CONNECT
#Определите имя элемента ACL для метода PURGE(очистка кэша).
acl PURGE method PURGE
#Определите имя элемента ACL для Интернет.
acl all src 0.0.0.0/0.0.0.0
#Создайте Access List(правила доступа для всех элементов ACL).
#Squid воспринимает правила в том порядке, в котором они встречаются
#в /etc/squid/squid.conf.
#Разрешите доступ пользователей с локальной системы.
http_access allow localhost
#Разрешите доступ в Интернет в рабочее время.
http_access allow all WorkDay
#Разрешите очистку кэша с локальной системы.
http_access allow PURGE localhost
#Запретите обращение к небезопасным портам.
http_access deny !Safe_ports
#Запретите обращение к портам, неиспользуемым SSL.
http_access deny CONNECT !SSL_ports
#Запретите метод CONNECT.
http_access deny CONNECT
#Запретите очистку кэша со всех систем.
http_access deny PURGE
#Запретите доступ в Интернет в нерабочее время.
http_access deny localnet
#Запретите доступ для всех хостов.
http_access deny all
#Укажите e-mail администратора.
cache_mgr admin@domain.ru
#Эти опции повышают безопасность системы за счет запуска
#Squid от имени пользователя squid группы squid.
cache_effective_user squid
cache_effective_group squid
logfile_rotate 0
#Запретите обмен с другими прокси-серверами.
log_icp_queries off
#Задайте пароль, используемый утилитой администрирования прокси-сервера
#cachemgr через Web-интерфейс (если вы собираетесь ее использовать).
#cachemgr_passwd $ecretnoe_Sl0vo all
#Включите поддержку ускорения записи файлов регистрации
buffered_logs on

eem-kz
Сообщения: 14
Зарегистрирован: 09 апр 2009, 13:21

Re: Статья по установки Squid

Сообщение eem-kz » 14 апр 2009, 15:02

Шаг 2
Создайте файл /etc/sysconfig/squid, содержащий следующие строки:
#Если на момент запуска Squid отсутствует подключение к Интернет,
#используйте опцию –D для отмены начальных обращений к DNS.
#SQUID_OPTS="-D"
#Определите интервал времени, в течении которого Squid будет продолжать
#работать при получении сигнала на остановку.
SQUID_SHUTDOWN_TIMEOUT=100
Шаг 3
В приведенных выше примерах файла /etc/squid/squid.conf установлено значение опции logfile_rotate, равное 0. Это означает, что для осуществления циклической замены файлов регистра¬ции используется не значения параметров по умолчанию, а параметры, определяемые файлом /etc/logrotate.d/squid. Для еженедельной циклической перестановки файлов регистрации создайте файл /etc/logrotate.d/squid, содержащий следующие строки: /var/log/squid/access.log {
weekly
rotate 5
copytruncate
compress
notifempty
missingok } /var/log/squid/cache.log {
weekly
rotate 5
copytruncate
compress
notifempty
missingok }
/var/log/squid/store.log {
weekly
rotate 5
copytruncate
compress
notifempty
missingok postrotate
/usr/sbin/squid -k rotate
endscript }

Шаг 4
Если вы будете использовать аутентификацию пользователей, создайте для них соответствующие учетные записи (без доступа к командному интерпретатору и пользовательского каталога): [root@bastion /]# useradd -s /bin/false drwalbr [root@bastion /]# passwd drwalbr Changing password for user drwalbr New UNIX password:SeCreTnoe_SlOvO Retype new UNIX password:SeCreTnoe_SlOvO passwd: all authentication tokens updated successfully

Шаг 5
Если каталог /var/spool/squid смонтирован на отдельном разделе, то повышение безопасности системы может быть обеспечено за счет исключения возможности выполнения файлов, содержащихся в кэ¬ше. Для этого замените в файле /etc/fstab строку:
/dev/hda10 /var/spool ext3 defaults 0 1
на:
/dev/hda10 /var/spool ext3 defaults,noexec,nodev,nosuid 0 1
и перемонтируйте раздел:

[root@bastion /]# mount /var/spool -oremount
Проверьте правильность вновь установленных опций монтирования раздела: [root@bastion /]# cat /proc/mounts | grep hda10 /dev/hda10 /var/spool ext3 rw,noexec,nodev,nosuid 0 0

Шаг 6
Для устранения случайного или преднамеренного изменения главного конфигурационного файла /etc/squid/squid.conf, выполните:
[root@bastion /]# chattr+i /etc/squid/squid.conf

eem-kz
Сообщения: 14
Зарегистрирован: 09 апр 2009, 13:21

Re: Статья по установки Squid

Сообщение eem-kz » 14 апр 2009, 15:04

Тестирование Squid
Проверка работоспособности и правильности настройки Squid осуществляется следующим образом.

Шаг 1
Запустите Squid:
[root@bastion /]# /etc/init.d/squid start
Запускается squid: [ОК]
Перезапустите Squid:
[root@bastion /]# /etc/init.d/squid restart
Останавливается squid: [ОК]
Запускается squid: [ОК]
Если в процессе выполнения этих операций появились сообщения об ошибках, то необходимо прове¬рить правильность конфигурационных файлов.

Шаг 2
Попробуйте с помощью браузера на системе в локальной сети, в которой не настроен доступ в Ин¬тернет через прокси-сервер, обратиться к какому-нибудь ресурсу. Если появился доступ, то проверьте на¬стройки системы сетевой защиты.
ЗАМЕЧАНИЕ Доступ в Интернет, минуя прокси-сервер, должен быть закрыт для того, чтобы пользова¬тели локальной сети, отключив использование прокси-сервера в браузере, не могли преодолеть установлен¬ные вами ограничения.

Шаг 3
В браузере на системе в локальной сети настройте доступ через прокси-сервер и попробуйте обра¬титься к какому-нибудь ресурсу. Если соединение устанавливается, протестируйте работоспособность всех правил, установленных в файле /etc/squid/squid.conf.
Администрирование Squid
После выполнения команды:
[root@bastion /]# /etc/init.d/squid start
Squid не останавливается немедленно, а дожидается завершения всех установленных соединений. Для не¬медленной остановки Squid используйте команду:
[root@bastion /]# /usr/sbin/squid –k kill

Иногда возникает необходимость удаления из кэша некоторых объектов. Никогда не пытайтесь до¬биться этого путем удаления файлов и каталогов в /var/spool/squid. Для решения этой задачи исполь¬зуйте утилиту squidclient, которая является мощным средством для тестирования и администрирования Squid. По умолчанию очистка кэша (использование метода PURGE) в Squid запрещена. Для разрешения очистки кэша во всех переведенных выше примерах файла /etc/squid/squid.conf добавлены строки, разрешающие очистку кэша с локальной системы, т. е. консоли шлюза:

#Определите имя элемента ACL для метода PURGE.
acl PURGE method PURGE
#Разрешите очистку кэша с локальной системы.
http_access allow PURGE localhost

#Запретите очистку кэша со всех систем.
http_access deny PURGE
Для получения краткой справочной информации о возможностях утилиты, наберите: [root@bastion /]# /usr/sbin/squidclient
Удаление некоторого объекта из кэша осуществляется следующим образом. При использовании Squid без аутентификации пользователей: [root@bastion /]# /usr/sbin/squidclient –m PURGE
При использовании аутентификации:
[root@bastion /]# /usr/sbin/squidclient –m PURGE –u drwalbr –w SeCreT-noe_SlOvO
В случае успешного удаления объекта вы получите сообщение вида:
HTTP/1.0 200 OK
Server: squid/2.5.STABLE1
Mime-Version: 1.0
Date: Mon, 03 Mar 2003 19:01:40 GMT
Content-Length: 0
X-Cache: MISS from bastion.und
X-Cache-Lookup: NONE from bastion.und:3128
Proxy-Connection: close
В случае отсутствия объекта в кэше – сообщение вида:
HTTP/1.0 404 Not Found
Server: squid/2.5.STABLE1
Mime-Version: 1.0
Date: Mon, 03 Mar 2003 19:02:50 GMT
Content-Length: 0
X-Cache: MISS from bastion.und
X-Cache-Lookup: NONE from bastion.und:3128 Proxy-Connection: close

eem-kz
Сообщения: 14
Зарегистрирован: 09 апр 2009, 13:21

Re: Статья по установки Squid

Сообщение eem-kz » 14 апр 2009, 15:05

Утилита 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 http://www.bastion.und/cgi-bin/cachemgr.cgi

Шаг 5
Если вы используете конфигурацию c аутентификацией пользователя, то в отобразившейся на экране форме введите параметры – имя шлюза, порт на котором он работает, имя пользователя и пароль. В рас¬сматриваемом примере – это, соответственно, bastion.und, 3128, drwalbr и $ecretnoe_Sl0vo (ус¬тановлен с помощью опции cachemgr_passwd в файле /etc/squid/squid.conf).

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

eem-kz
Сообщения: 14
Зарегистрирован: 09 апр 2009, 13:21

Re: Статья по установки Squid

Сообщение eem-kz » 14 апр 2009, 15:11

Пример конфигурации 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
#Установите запрет кэширования некоторого типа объектов.
#В данном случае – файлов, находящихся в каталоге 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. При отсутствии запрашиваемого объекта в кэше, он запрашивается путем обращения к 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 осуществляется также, как и в случае использова¬ния его в качестве кэширующего прокси-сервера на шлюзе.

Ответить