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