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

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

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

Глава 33. vsftpd – безопасный FTP-сервер

491

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

ftp> get Mail-SpamAssassin-2.55.tar.gz

 

 

local: Mail-SpamAssassin-2.55.tar.gz remote: Mail-SpamAssassin-

 

2.55.tar.gz

 

 

229

Entering Extended Passive Mode (|||34124|)

 

 

150

Opening BINARY mode data connection for Mail-SpamAssassin-2.55.tar.gz

(700610 bytes).

 

 

100% |**********************************************|

684 KB

00:19

226

File send OK.

 

 

700610 bytes received in 19.05 seconds (35.91 KB/s)

Шаг 6

Проверьте возможность закладки файлов анонимными пользователями в каталог uploads. Для этого

перейдите в каталог uploads:

 

 

ftp> cd uploads

 

 

250

Directory successfully changed.

 

и загрузите какой-нибудь файл:

 

 

ftp> put mbox

 

 

 

local: mbox remote: mbox

 

 

229

Entering Extended Passive Mode (|||38581|)

150

Ok to send data.

 

 

100% |**************************************************| 3711

00:00

 

 

 

226

File receive OK.

 

 

3711 bytes sent in 0.02 seconds (229.48 KB/s)

Проверьте наличие файла в каталоге uploads:

 

ftp> dir

 

 

 

229

Entering Extended Passive Mode (|||39129|)

150

Here comes the directory listing.

 

-rw-------

1 24

24

3711 Jul 09 08:28 mbox

226

Directory send OK.

 

 

Шаг 7

Завершите работу с ftp-клиентом. ftp> quit

221 Goodbye.

492

Часть 10. Программное обеспечение для организации службы HTTP-сервера

Часть 10

Программное обеспечение для организации службы

HTTP-сервера

Глава 34. Apache HTTP Server

493

Глава 34

Apache HTTP Server

В этой главе:

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

2.Пакеты

3.Установка из rpm-пакетов

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

5.Конфигурирование Apache HTTP Server

6.Конфигурационный файл /etc/httpd/conf/httpd.conf

7.Конфигурационный файл /etc/sysconfig/httpd

8.Конфигурационные файлы .htaccess

9.Конфигурационный файл /etc/logrotate.d/httpd

10.Файл инициализации /etc/rc.d/init.d/httpd

11.Конфигурирование Apache HTTP Server с доступом в закрытые каталоги с аутентификацией пользователей (файл

/etc/httpd/conf/dbmpasswd)

12.Конфигурирование поддержки протокола SSL в Apache HTTP Server (файлы /usr/share/ssl/certs/www.crt и /usr/share/ssl/private/www.key)

13.Тестирование Apache HTTP Server

14.Выполнение Apache HTTP Server в среде chroot-jail

494

Часть 10. Программное обеспечение для организации службы HTTP-сервера

В настоящее время Apache HTTP Server представляет собой хорошо защищенный, высокопроизводительный сервер, предназначенный для обработки HTTP-запросов. Разработка сервера и некоторых смежных проектов поддерживается Apache Software Foundation. Код сервера имеет модульную структуру и, следовательно, может быть легко модифицирован к решению практически любых задач по организации виртуального общения между сервером и клиентом. В настоящее время разработчики сервера предлагают две версии

– 1.3 и 2.0. В этой главе рассматривается установка Web-сервера Apache версии 2.0. Это относительно новая ветвь разработки и, к сожалению, не полностью совместима с предыдущими версиями Web-сервера. Новая генерация Apache появилась относительно недавно, и поэтому не все сторонние разработчики программного обеспечения успели модифицировать его к новой версии Web-сервера. Тем не менее, авторы предполагают, что в ближайшее время Apache 2.0 станет стандартом Web-сервера де-факто. В связи с этим инсталляция и настройка Apache в этой книге рассматривается именно на примере версии 2.0.47. К настоящему времени новые версии Apache, в частности, поддерживают:

протокол SSL, реализуемый встроенным модулем mod_ssl, позволяющий устанавливать защищенное соединение между клиентской программой-браузером и Web-сервером;

язык PHP, реализуемый модулем сторонних разработчиков mod_php;

модуль mod_perl – также разрабатываемый сторонними разработчиками – повышающий производительность сервера применительно к выполнению сценариев, написанных на языке Perl.

Интеграция Apache c этими модулями описана в этой и двух последующих главах.

Потенциальные уязвимости Apache, как и любого другого программного обеспечения, могут использоваться для реализации атак на вашу систему. Поэтому для повышения безопасности вашей системы Apache можно заставить работать в защищенной среде chroot-jail. Запуск Apache в окружении chroot-jail со-

вместно с поддержкой mod_ssl, mod_php и mod_perl описана далее в отдельной главе.

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

Исходные коды находятся в каталоге /var/tmp.

Все операции выполняются пользователем с учетной записью root. Используется дистрибутив ASPLinux 7.3 (Vostok).

Перекомпиляция ядра не требуется.

Процедуры, описанные в этой главе, могут оказаться применимыми для других версий ядра и дистрибутивов Linux, но авторы этого, к сожалению, не проверяли.

Пакеты

Последующие рекомендации основаны на информации, полученной с домашней страницы Apache HTTP Server Project по состоянию на 10.07.2003. Регулярно посещайте домашнюю страницу проекта http://httpd.apache.org/и отслеживайте обновления. Исходные коды Apache HTTP Server содержатся в архиве httpd-version.tar.gz (последняя доступная на момент написания главы стабильная версия httpd-2.0.47.tar.gz).

Если вы собираетесь использовать Web-сервер с поддержкой протокола SSL, установите OpenSSL в соответствии с рекомендациями главы 12.

Для проведения инсталляции и нормальной работы на вашей системе должны быть установлены входящие в комплект поставки ASPLinux 7.3 rpm-пакеты:

autoconf-2.13-17.noarch.rpm;

automake-1.4p5-4.noarch.rpm;

db3-devel-3.3.11-6.i386.rpm;

expat-1.95.2-2.i386.rpm;

expat-devel-1.95.2-2.i386.rpm;

gdbm-devel-1.8.0-14.i386.rpm;

libtool-1.4.2-7.i386.rpm.

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

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

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

Глава 34. Apache HTTP Server

495

Шаг 1 Проверьте, установлены ли пакеты программ из списка, представленного выше. Используйте, напри-

мер, команду:

[root@test /]# rpm –iq autoconf

Повторите ее для вывода информации об остальных пакетах.

Шаг 2

Перейдите в каталог, где находятся rpm-пакеты. Если вы в соответствии с рекомендациями главы 2 скопировали все пакеты, входящие в дистрибутив, в каталог /home/distrib, то выполните команду:

[root@test /]# cd /home/distrib

Шаг 3 Установите недостающие пакеты. Если вы следовали рекомендациям по установке, описанным в этой

книге, вам останется лишь установить:

[root@test distrib]# rpm -ihv autoconf-2.13-17.noarch.rpm \ automake-1.4p5-4.noarch.rpm \

expat-1.95.2-2.i386.rpm \ expat-devel-1.95.2-2.i386.rpm

[root@test distrib]# rpm -ihv apache-1.3.23-11.asp.i386.rpm \ apache-devel-1.3.23-11.asp.i386.rpm

После установки пакета перейдите к настройке программы Apache.

ЗАМЕЧАНИЕ В комплект поставки дистрибутива ASPLinux 7.3 (Voctok) входят пакеты, содержащие Apache HTTP Server версии 1.3.23. Приведенные ниже в разделе «Конфигурирование Apache HTTP Server рекомендации по настройке относятся к версии 2.0.хх. Поэтому при установке Apache HTTP Server из rpmпакетов вам придется конфигурировать сервер самостоятельно, руководствуясь комментариями в файле httpd.conf и докуметацией.

Компиляция, оптимизация и инсталляция Apache HTTP Server

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

ции.

Шаг 1 Осуществите проверку подлинности имеющегося в вашем распоряжении архива с исходными кода-

ми, например, используя процедуры, описанные в шаге 1 радела «Компиляция, оптимизация и инсталляция OpenSSL» главы 12. Необходимые для проверки исходные данные вы можете получить с

http://www.apache.org/dist/httpd/.

Шаг 2

Распакуйте архивы с исходными кодами Apache HTTP Server в каталог /var/tmp:

[root@test tmp]# tar xzpf httpd-2.0.47.tar.gz

Шаг 3

Создайте специального пользователя www, от имени которого будет выполняться Apache HTTP Server:

[root@test tmp]# groupadd -g 48 www

[root@test tmp]# useradd –u 48 -g 48 -s /sbin/nologin -M -r -d /var/www www

Шаг 4

Для добавления несуществующего командного интерпретатора, «используемого» пользователем www, добавьте (проверьте наличие) в файл /etc/shells строку:

/bin/false/

Шаг 5

Сконфигурируйте исходные коды Apache HTTP Server :

[root@test tmp]# cd httpd-2.0.47

[root@test httpd-2.0.47]# CFLAGS="-O2 -march=i686 -funroll-loops -

D_REENTRANT -D_SINGLE_LISTEN_UNSERIALIZED_ACCEPT -fPIC"

./configure --prefix=/etc/httpd \

496 Часть 10. Программное обеспечение для организации службы HTTP-сервера

--exec-prefix=/usr \ --bindir=/usr/bin \ --sbindir=/usr/sbin \ --mandir=/usr/share/man \ --sysconfdir=/etc/httpd/conf \ --includedir=/usr/include/httpd \ --libexecdir=/usr/lib/httpd/modules \ --datadir=/var/www \ --localstatedir=/var \ --enable-access=shared \ --enable-actions=shared \ --enable-alias=shared \ --enable-auth=shared \ --enable-auth-dbm=shared \ --enable-auth-digest=shared \ --enable-autoindex=shared \ --enable-cern-meta=shared \ --enable-cgi=shared \ --enable-cgid=shared \ --enable-dav=shared \ --enable-dav-fs=shared \ --enable-dir=shared \ --enable-env=shared \ --enable-expires=shared \ --enable-file-cache=shared \ --enable-headers=shared \ --enable-include=shared \ --enable-log-config=shared \ --enable-mime=shared \ --enable-mime-magic=shared \ --enable-negotiation=shared \ --enable-rewrite=shared \ --enable-setenvif=shared \ --enable-speling=shared \ --enable-ssl=shared \ --enable-unique-id=shared \ --enable-usertrack=shared \ --enable-vhost-alias=shared \ --enable-suexec=shared \ --with-suexec-caller=www \ --with-suexec-docroot=/var/www \

--with-suexec-logfile=/var/log/httpd/suexec_log \ --with-suexec-bin=/usr/sbin/suexec \ --with-suexec-uidmin=500 --with-suexec-gidmin=500 \ --disable-auth-anon \

--disable-charset-lite \ --disable-disk-cache \ --disable-mem-cache \ --disable-cache \ --disable-deflate \ --disable-ext-filter \ --disable-case-filter \ --disable-case-filter-in \ --disable-example \ --disable-proxy \ --disable-proxy-connect \ --disable-proxy-ftp \ --disable-proxy-http \ --disable-status \ --disable-asis \ --disable-info \ --disable-imap \ --disable-userdir \ --with-z \

Глава 34. Apache HTTP Server

497

--with-ssl \ --with-suexec

В рассматриваемом примере изменены каталоги, используемые сервером по умолчанию, и оставлен минимальный набор опций, необходимый для работы сервера. Назначение всех опций прекрасно описано в

документации по Apache HTTP Server (http://httpd.apache.org/docs-2.0/install.html). Ес-

ли вы не собираетесь использовать сервер с поддержкой SSL, следует вместо опции:

--with-ssl

использовать:

--disable-ssl

Шаг 6

Откомпилируйте, проинсталлируйте Apache HTTP Server , создайте и сохраните в надежном месте список установленных файлов:

[root@test httpd-2.0.47]# make

[root@test httpd-2.0.47]# find /* > /root/apache1 [root@test httpd-2.0.47]# make install

[root@test httpd-2.0.47]# strip /usr/sbin/httpd [root@test httpd-2.0.47]# chmod 0511 /usr/sbin/httpd

[root@test httpd-2.0.47]# strip --strip-debug -R .comment

/usr/lib/httpd/modules/*.so

[root@test httpd-2.0.47]# mkdir -p /var/log/httpd/ [root@test httpd-2.0.47]# mkdir -p /var/lib/dav [root@test httpd-2.0.47]# rm -rf /var/logs

[root@test httpd-2.0.47]# mv /var/www/build /usr/lib/httpd/build [root@test httpd-2.0.47]# rm -f /usr/lib/httpd/build/libtool

[root@test httpd-2.0.47]# ln -s /usr/bin/libtool

/usr/lib/httpd/build/libtool

[root@test httpd-2.0.47]# ln -s /var/log/httpd /etc/httpd/logs [root@test httpd-2.0.47]# ln -s /var/run /etc/httpd/run

[root@test httpd-2.0.47]# ln -s /usr/lib/httpd/modules /etc/httpd/modules [root@test httpd-2.0.47]# ln -s /usr/lib/httpd/build /etc/httpd/build

[root@test httpd-2.0.47]# find /* > /root/apache2

[root@test httpd-2.0.47]# diff /root/apache1 /root/apache2 >

/root/apache.installed

[root@test httpd-2.0.47]# mv /root/apache.installed

/very_reliable_place/apache.installed.YYYYMMDD

Шаг 7 Удалите архив и каталог с исходными кодами:

[root@test httpd-2.0.47]# cd /var/tmp/

[root@test tmp]# rm -rf httpd-2.0.47/ [root@test tmp]# rm -f httpd-2.0.47.tar.gz

Конфигурирование Apache HTTP Server

Конфигурирование Apache HTTP Server осуществляется с использованием следующих файлов:

главного конфигурационного файла /etc/httpd/conf/httpd.conf;

системного конфигурационного файла /etc/sysconfig/httpd;

файлов .htaccess, определяющих настройки Web-сервера, применяемые к каталогу, в котором находится файл, и подкаталогам любого уровня каталога, содержащего файл .htaccess;

файла настройки чередования регистрационных файлов /etc/logrotate.d/httpd;

файла инициализации /etc/rc.d/init.d/httpd;

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

/etc/httpd/conf/dbmpasswd;

файлов /usr/share/ssl/certs/www.crt и /usr/share/ssl/private/www.key, содер-

жащих закрытый ключ и сертификат, необходимые для поддержки протокола SSL.

Конфигурационный файл /etc/httpd/conf/httpd.conf

Главный конфигурационный файл /etc/httpd/conf/httpd.conf может содержать большое число различных директив, даже краткое описание которых может послужить темой для отдельной книги.

498

Часть 10. Программное обеспечение для организации службы HTTP-сервера

Поэтому в дальнейшем рассмотрении мы ограничимся простейшими случаями конфигурации сервера, иллюстрирующими возможности сервера по поддержанию виртуальных серверов с доступом по протоколу HTTP или HTTPS (HTTP с поддержкой SSL) и аутентификации пользователей. При этом комментарии будут касаться только наиболее часто используемых при индивидуальной настройке сервера директив. С остальными директивами и вариантами конфигурации вы можете ознакомиться в документации

(http://httpd.apache.org/docs-2.0/) и кратком руководстве по директивам Apache HTTP Server (http://httpd.apache.org/docs-2.0/mod/quickreference.html) .

Шаг 1

Создайте файл /etc/httpd/conf/httpd.conf, измените в нем строки, руководствуясь приведенными ниже рекомендациями и вашими потребностями:

### Section 1: Global Environment

#

ServerRoot "/etc/httpd" PidFile /var/run/httpd.pid ServerTokens Prod ServerSignature Off

Timeout 60

KeepAlive Off

MaxKeepAliveRequests 0

KeepAliveTimeout 10

# Prefork MPM

#

<IfModule prefork.c> StartServers 5 MaxClients 512 MinSpareServers 5 MaxSpareServers 10 MaxRequestsPerChild 0 </IfModule>

Listen 212.111.80.127:443

Listen 212.111.80.127:80

# Dynamic Shared Object (DSO) Support

#

 

LoadModule access_module

modules/mod_access.so

#LoadModule auth_module

modules/mod_auth.so

LoadModule auth_dbm_module

modules/mod_auth_dbm.so

#LoadModule auth_digest_module

modules/mod_auth_digest.so

#LoadModule file_cache_module

modules/mod_file_cache.so

LoadModule include_module

modules/mod_include.so

LoadModule log_config_module

modules/mod_log_config.so

LoadModule env_module

modules/mod_env.so

LoadModule mime_magic_module

modules/mod_mime_magic.so

#LoadModule cern_meta_module

modules/mod_cern_meta.so

#LoadModule expires_module

modules/mod_expires.so

#LoadModule headers_module

modules/mod_headers.so

#LoadModule usertrack_module

modules/mod_usertrack.so

#LoadModule unique_id_module

modules/mod_unique_id.so

LoadModule setenvif_module

modules/mod_setenvif.so

LoadModule ssl_module

modules/mod_ssl.so

LoadModule mime_module

modules/mod_mime.so

#LoadModule dav_module

modules/mod_dav.so

LoadModule autoindex_module

modules/mod_autoindex.so

LoadModule cgi_module

modules/mod_cgi.so

#LoadModule dav_fs_module

modules/mod_dav_fs.so

#LoadModule vhost_alias_module

modules/mod_vhost_alias.so

LoadModule negotiation_module

modules/mod_negotiation.so

LoadModule dir_module

modules/mod_dir.so

#LoadModule actions_module

modules/mod_actions.so

#LoadModule speling_module

modules/mod_speling.so

Глава 34. Apache HTTP Server

499

LoadModule

alias_module

modules/mod_alias.so

LoadModule

rewrite_module

modules/mod_rewrite.so

#LoadModule perl_module

modules/mod_perl.so

#LoadModule php4_module

modules/libphp4.so

### Section 2: 'Main' server configuration

#

User www Group www

ServerAdmin apacheadmin@test.bruy.info

ServerName test.bruy.info

UseCanonicalName Off

DocumentRoot "/var/www/htdocs" <Directory />

Options None AllowOverride None Order deny,allow Deny from all

</Directory>

<Files .pl> Options None

AllowOverride None Order deny,allow Deny from all

</Files>

<IfModule mod_file_cache.c> <IfModule mod_include.c>

Include /etc/httpd/mmap.conf </IfModule>

</IfModule>

<IfModule mod_dir.c>

DirectoryIndex index.htm index.html index.php default.php index.shtml index.php3

</IfModule>

<IfModule mod_mime.c>

TypesConfig /etc/httpd/conf/mime.types AddEncoding x-compress Z

AddEncoding x-gzip gz tgz AddType application/x-tar .tgz

AddType application/x-httpd-php .php AddType application/x-httpd-php .php3 AddType application/x-httpd-php .php4 AddType application/x-httpd-php .phtml AddType application/x-httpd-php .shtml

AddType application/x-httpd-php-source .phps </IfModule>

DefaultType text/plain

<IfModule mod_mime_magic.c> MIMEMagicFile /etc/httpd/conf/magic

</IfModule>

HostnameLookups Off

LogLevel debug

ErrorLog /var/log/httpd/error_log

500

Часть 10. Программное обеспечение для организации службы HTTP-сервера

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" combined

CustomLog /var/log/httpd/access_log combined

<IfModule mod_alias.c>

Alias /icons/ "/var/www/icons/" <Directory "/var/www/icons/">

Options None AllowOverride None Order allow,deny Allow from all

</Directory>

ScriptAlias /cgi-bin/ "/var/www/cgi-bin/" <Directory "/var/www/cgi-bin/">

Options None AllowOverride None Order allow,deny Allow from all

</Directory>

</IfModule>

<IfModule mod_autoindex.c> IndexOptions FancyIndexing

AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip AddIconByType (TXT,/icons/text.gif) text/*

AddIconByType (IMG,/icons/image2.gif) image/* AddIconByType (SND,/icons/sound2.gif) audio/* AddIconByType (VID,/icons/movie.gif) video/* AddIcon /icons/binary.gif .bin .exe

AddIcon /icons/binhex.gif .hqx AddIcon /icons/tar.gif .tar

AddIcon /icons/world2.gif .wrl .wrl.gz .vrml .vrm .iv AddIcon /icons/compressed.gif .Z .z .tgz .gz .zip AddIcon /icons/a.gif .ps .ai .eps

AddIcon /icons/layout.gif .html .shtml .htm .pdf AddIcon /icons/text.gif .txt

AddIcon /icons/c.gif .c AddIcon /icons/p.gif .pl .py AddIcon /icons/f.gif .for AddIcon /icons/dvi.gif .dvi

AddIcon /icons/uuencoded.gif .uu

AddIcon /icons/script.gif .conf .sh .shar .csh .ksh .tcl AddIcon /icons/tex.gif .tex

AddIcon /icons/bomb.gif core AddIcon /icons/back.gif ..

AddIcon /icons/hand.right.gif README AddIcon /icons/folder.gif ^^DIRECTORY^^ AddIcon /icons/blank.gif ^^BLANKICON^^ DefaultIcon /icons/unknown.gif ReadmeName README.html

HeaderName HEADER.html

IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t

</IfModule>

###Поддержка русского и английского языка

#

AddLanguage en .en

 

 

AddLanguage ru .ru

 

 

AddDefaultCharset koi8-r

 

AddCharset ISO-8859-1

.iso8859-1

.latin1

AddCharset ISO-8859-5

.iso8859-5

.latin5 .cyr .iso-ru

AddCharset WINDOWS-1251 .cp-1251

.win-1251

AddCharset CP866

.cp866

 

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