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

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

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

Глава 23. ISC BIND – программное обеспечение для организации службы DSN

311

Шаг 2

Скопируйте файл resolv.conf в соответствующий каталог окружения chroot-jail:

[root@drwalbr /]# cp /etc/resolv.conf /chroot/named/etc/

Шаг 3

Создайте файл инициализации lwresd:

#!/bin/bash

#This shell script takes care of starting and stopping lwresd.

#chkconfig: - 55 45

#description: Lwresd is essentially a Caching-Only Name Server that \

#

answers requests using the lightweight resolver protocol \

#

rather than the DNS protocol.

#

 

#processname: lwresd

#Source function library.

. /etc/init.d/functions

#Source networking configuration.

. /etc/sysconfig/network

#Source for additional options if we have them. if [ -f /etc/sysconfig/named ] ; then

. /etc/sysconfig/named

fi

#Check that networking is up.

[ "${NETWORKING}" = "no" ] && exit 0

#If Lwresd is not available stop now. [ -f /usr/sbin/lwresd ] || exit 0

[ -f "${ROOTDIR}"/etc/lwresd.conf ] || exit 0 [ -f "${ROOTDIR}"/etc/resolv.conf ] || exit 0

#Path to the Lwresd binary. lwresd=/usr/sbin/lwresd

RETVAL=0

prog="Lwresd"

start() {

echo -n $"Starting $prog: "

if [ -n "${ROOTDIR}" -a "x${ROOTDIR}" != "x/" ]; then OPTIONS="${OPTIONS} -t ${ROOTDIR}"

fi

daemon $lwresd -P 53 -u named ${OPTIONS} RETVAL=$?

echo

[ $RETVAL -eq 0 ] && touch /var/lock/subsys/lwresd return $RETVAL

}

stop() {

echo -n $"Shutting down $prog: " killproc $lwresd

RETVAL=$? echo

[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/lwresd return $RETVAL

}

312

Часть 5. Служба DSN

# See how we were called. case "$1" in

start)

start

;;

stop)

stop

;;

status)

status $lwresd RETVAL=$?

;;

restart) stop start

RETVAL=$?

;;

condrestart)

if [ -f /var/lock/subsys/lwresd ]; then stop

start RETVAL=$?

fi

;;

*)

echo $"Usage: $0 {start|stop|status|restart|condrestart}" exit 1

esac

exit $RETVAL

Шаг 4

Сделайте файл исполняемым и определите его владельцем пользователя root:

[root@drwalbr /]# chmod 700 /etc/init.d/lwresd [root@drwalbr /]# chown 0.0 /etc/init.d/lwread

Шаг 5

Для автоматического запуска lwresd создайте необходимые символьные ссылки:

[root@drwalbr /]# chkconfig --add lwresd [root@drwalbr /]# chkconfig --level 2345 lwresd on

и удалите инициализационный файл и ссылки, используемые ранее для автоматического запуска демона named:

[root@drwalbr /]# chkconfig --del named [root@drwalbr /]# chkconfig --level 2345 named off [root@drwalbr /]# rm -f /etc/init.d/named

Шаг 6

Формат файла идентичен формату файла named.conf. Поэтому переименуйте файл

/chroot/named/etc/named.conf в lwresd.conf:

[root@drwalbr /]# cd /chroot/named/etc/ [root@drwalbr etc]# mv named.conf lwresd.conf

Шаг 7

Для запуска демона lwresd выполните команду:

[root@drwalbr /]# /etc/init.d/lwresd start

Запускается Lwresd: [OK]

Шаг 8

Протестируйте lwresd в соответствии с рекомендациями по тестированию named, приведенными выше.

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

313

Часть 6

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

314

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

Глава 24

Кэширующий прокси-сервер Squid

В этой главе:

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

2.Пакеты

3.Инсталляция с помощью rpm-пакетов

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

5.Конфигурирование Squid

6.Пример конфигурации Squid для шлюза

7.Тестирование Squid

8.Администрирование Squid

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

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

315

Кэширующий прокси-сервер 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.squidcache.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

316

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

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

Компиляция, оптимизация и инсталляция 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 \

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

317

--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/bash

318

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

#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

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

319

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

320

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

;;

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

Конфигурирование 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 \?

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