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