Бруй В.В., Карлов С.В. - Linux-сервер - пошаговые инструкции - инсталляции и настройки (1077321), страница 74
Текст из файла (страница 74)
Кэширующий прокси-сервер Squid317--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 reliable_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/bash318Часть 6.
Программное обеспечение для организации шлюза# This shell script takes care of starting and stopping Squid (Proxyserver).## 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 tothe \#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.confPATH=/usr/bin:/sbin:/bin:/usr/sbinexport 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/squidelseSQUID_OPTS="-D"SQUID_SHUTDOWN_TIMEOUT=100fi# Determine the name of the squid binary.[ -f /usr/sbin/squid ] && SQUID=squid[ -z "$SQUID" ] && exit 0prog="$SQUID"# Determine which one is the cache_swap directoryCACHE_SWAP=`sed -e 's/#.*//g' /etc/squid/squid.conf | \grep cache_dir | awk '{ print $3 }'`[ -z "$CACHE_SWAP" ] && CACHE_SWAP=/var/spool/squidRETVAL=0start() {for adir in $CACHE_SWAP; doif [ ! -d $adir/00 ]; thenecho -n "init_cache_dir $adir... "$SQUID -z -F 2>/dev/nullfidoneГлава 24. Кэширующий прокси-сервер Squid319echo -n $"Starting $prog: "$SQUID $SQUID_OPTS 2> /dev/null Trap and prevent certain signals from being sent to the Squid process.trap '' 1 2 3 18RETVAL=$?[ $RETVAL -eq 0 ] && touch /var/lock/subsys/$SQUID[ $RETVAL -eq 0 ] && echo_success[ $RETVAL -ne 0 ] && echo_failureechoreturn $RETVAL}stop() {echo -n $"Stopping $prog: "$SQUID -k check >/dev/null 2>&1RETVAL=$?if [ $RETVAL -eq 0 ] ; then$SQUID -k shutdown &rm -f /var/lock/subsys/$SQUIDtimeout=0while : ; do[ -f /var/run/squid.pid ] || breakif [ $timeout -ge $SQUID_SHUTDOWN_TIMEOUT ]; thenechoreturn 1fisleep 2 && echo -n "."timeout=$((timeout+2))doneecho_successechoelseecho_failureechofireturn $RETVAL}reload() {$SQUID $SQUID_OPTS -k reconfigure}restart() {stopstart}condrestart() {[ -e /var/lock/subsys/squid ] && restart || :}# See how we were called.case "$1" instart)start;;stop)stop;;reload)reload;;restart)restart320Часть 6.
Программное обеспечение для организации шлюза;;condrestart)condrestart;;*)echo $"Usage: $0 {start|stop|reload|restart|condrestart}"exit 1esacexit $?Шаг 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.0authrequired/lib/security/pam_stack.so service=system-authaccountrequired/lib/security/pam_stack.so service=system-authКонфигурирование 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-клиентов.#Значение по умолчанию 3128http_port 3128#Обеспечьте корректную работу Squid c браузерами, некорректно#поддерживающими SSLssl_unclean_shutdown on#Установите номер порта, на котором Squid принимает и получает запросы#с других прокси-серверов.
Установив значение порта, равное 0, вы повысите #производительность вашей системыicp_port 0#Установите запрет кэширования некоторого типа объектов.#В данном случае – файлов, находящихся в каталоге cgi-bin.acl QUERY urlpath_regex cgi-bin \?321Глава 24. Кэширующий прокси-сервер SquidИнтернетРоутерШлюзeth0 IP 212.45.28.122eth1 IP 192.168.1.0КонцентраторЛокальная сеть192.168.1.0/24Рис. 24.1. Типовой вариант сопряжения прокси-сервера с локальной сетью и Интернет322Часть 6. Программное обеспечение для организации шлюзаno_cache deny QUERY#Определите объем памяти, выделяемый под кэширование In-Transit objects,#Hot Objects,Negative-Cached objects (примерно 1/3 от общего объема #оперативной памяти).
Оптимальное значение для системы с памятью#512 МБайт –170.cache_mem 170 MB#Определите политику очистки кэшаcache_replacement_policy heap GDSFmemory_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 563acl 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 localnethttp_access allow localhost#Разрешите очистку кэша с локальной системыhttp_access allow PURGE localhost#Запретите обращение к небезопасным портамhttp_access deny !Safe_ports#Запретите обращение к портам, неиспользуемым SSL, с помощью метода#CONNECThttp_access deny CONNECT !SSL_ports#Запретите метод CONNECThttp_access deny CONNECT#Запретите очистку кэша со всех системhttp_access deny PURGE#Запретите доступ для всех хостовhttp_access deny all#Укажите e-mail администратораcache_mgr admin@domain.ru#Эти опции повышают безопасность системы за счет запуска#Squid от имени пользователя squid группы squidГлава 24.
Кэширующий прокси-сервер Squid323cache_effective_user squidcache_effective_group squidlogfile_rotate 0#Запретите обмен с другими прокси-серверамиlog_icp_queries off#Задайте пароль, используемый утилитой администрирования прокси-сервера#cachemgr через Web-интерфейс (если вы собираетесь ее использовать).#cachemgr_passwd $ecretnoe_Sl0vo all#Включите поддержку ускорения записи файлов регистрацииbuffered_logs onПри поступлении запроса на доступ в Интернет последовательно проверяются правила, указанные вACL. Если условие, указанное в правиле вида "http_access allow …" выполняется, доступ разрешается и дальнейший просмотр правил прекращается. Если условие не выполняется, осуществляется переход кпроверке условий, определяемых следующим правилом.