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

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

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

Глава 34. Apache HTTP Server

511

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

LoadModule ssl_module modules/mod_ssl.so из раздела Section 1: Global Environment.

Шаг 2

Установите права доступа к файлу /etc/httpd/conf/httpd.conf и назначьте его владельцем пользователя root:

[root@test /]# chmod 600 /etc/httpd/conf/httpd.conf [root@test /]# chown 0.0 /etc/httpd/conf/httpd.conf

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

Шаг 1

Создайте файл etc/sysconfig/httpd, содержащий следующие строки:

#Uncomment the following line to enable SSL support with Apache.

#Certificate should be already configured into httpd.conf file.

OPTIONS="-DSSL"

ЗАМЕЧАНИЕ Закомментируйте или удалите строку:

OPTIONS="-DSSL"

если вы не собираетесь использовать Web-сервер с поддержкой протокола SSL.

Шаг 2

Установите права доступа к файлу /etc/sysconfig/httpd и назначьте его владельцем пользователя root:

[root@test /]# chmod 640 /etc/sysconfig/httpd [root@test /]# chown 0.0 /etc/sysconfig/httpd

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

Конфигурационные файлы .htaccess не следует использовать без крайней необходимости. Использование этих файлов оправдано только в случае, когда вы не имеете доступа к основному Web-серверу. Для того, чтобы файлы .htaccess не игнорировались, а содержащиеся в них директивы выполнялись сервером, необходимо, чтобы это было разрешено директивой AllowOverride, действие которой распространяется на каталог, в котором находится файл, например:

AllowOverride All

Имя файла, используемого для конфигурирования каталога, может быть изменено с помощью директивы AccessFileName, например, если вас чем-то не устраивает имя .htaccess и вы хотите использовать файл с именем .myconf:

AccessFileName .myconf

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

<Files ~ "^\.my"> Order allow,deny Deny from all

</Files>

Директивы, используемые внутри файлов .htaccess, должны допускать использование в контексте файла .htacess.

Например, директива ErrorDocument Directive, в соответсвии с информацией представленной на сер-

вере разработчиков (http://httpd.apache.org/docs-2.0/mod/core.html#errordocument)

допускает ее использование в файлах .htacess:

Description: What the server will return to the client in case of an error

Syntax: ErrorDocument error-code document

Context: server config, virtual host, directory, .htaccess Override: FileInfo

Status: Core Module: core

Compatibility: Quoting syntax for text messages is different in Apache 2.0

512

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

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

Этот файл используется для настройки чередования файлов регистрации. В рассматриваемом примере файлы регистрации будут чередоваться еженедельно.

Шаг 1

Создайте файл /etc/logrotate.d/httpd, содержащий следующие строки:

/var/log/httpd/*_log { missingok

notifempty sharedscripts postrotate

/usr/bin/killall -HUP httpd endscript

}

ЗАМЕЧАНИЕ Обратите внимание, что первая строка файла /etc/logrotate.d/httpd должна содержать регулярные выражения, определяющие пути ко всем файлам регистрации, используемым основным и виртуальными серверами. Это обстоятельство следует учитывать при определении имен файлов регистрации для виртуальных серверов.

Шаг 2

Установите права доступа к файлу /etc/logrotate.d/httpd и назначьте его владельцем пользователя root:

[root@test /]# chmod 644 /etc/logrotate.d/httpd [root@test /]# chown 0.0 /etc/logrotate.d/httpd

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

Шаг 1

Для запуска и остановки Apache HTTP Server создайте файл /etc/init.d/proftpd, содержащий следующие строки:

#!/bin/bash

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

#chkconfig: 345 85 15

#description: Apache is a World Wide Web server. It is used to serve \

#

HTML files and CGI.

#

 

#processname: httpd

#config: /etc/httpd/conf/httpd.conf

#pidfile: /var/run/httpd.pid

#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/httpd ] ; then

. /etc/sysconfig/httpd

fi

#This will prevent initlog from swallowing up a pass-phrase prompt if

#mod_ssl needs a pass-phrase from the user.

INITLOG_ARGS=""

# Check that networking is up.

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

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

# Path to the Apache apachectl script and server binary.

Глава 34. Apache HTTP Server

513

apachectl=/usr/sbin/apachectl

httpd=/usr/sbin/httpd

RETVAL=0

prog="httpd"

start() {

echo -n $"Starting $prog: " daemon $httpd $OPTIONS RETVAL=$?

echo

[ $RETVAL = 0 ] && touch /var/lock/subsys/httpd return $RETVAL

}

stop() {

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

RETVAL=$? echo

[ $RETVAL = 0 ] && rm -f /var/lock/subsys/httpd /var/run/httpd.pid

return $RETVAL

}

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

start)

start

;;

stop)

stop

;;

status)

status $httpd RETVAL=$?

;;

restart) stop start

RETVAL=$?

;;

condrestart)

if [ -f /var/run/httpd.pid ] ; then stop

start RETVAL=$?

fi

;;

*)

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

esac

exit $RETVAL

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

[root@test /]# chmod 700 /etc/init.d/httpd [root@test /]# chown 0.0 /etc/init.d/httpd

Шаг 3

Если вы хотите, чтобы Apache HTTP Server запускался автоматически при загрузке системы, создайте соответствующие ссылки:

[root@test /]# chkconfig --add httpd

514

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

[root@test /]# chkconfig --level 345 httpd on

Конфигурирование Apache HTTP Server с доступом в закрытые каталоги с аутенти-

фикацией пользователей (файл /etc/httpd/conf/dbmpasswd)

В рассматриваемом примере мы храним аутентификационную информацию пользователей (логины и пароли) в базе данных, содержащейся в файле /etc/httpd/dbmpasswd. Альтернативным вариантом является хранение аутентификационной информации в обычном текстовом файле. Однако этот вариант работает более медленно, поэтому мы его не рассматриваем. Для конфигурирования доступа в закрытые катало-

ги вашего сервера (/var/www/eshop/html/private/и /var/www/eshopssl/html/private/),

необходимо выполнить следующие операции.

ЗАМЕЧАНИЕ Если вы не собираетесь включать поддержку доступа к закрытым каталогам с аутентификацией пользователей, пропустите этот раздел и не забудьте удалить или закомментировать в разделе

Section 1: Global Environment из файла /etc/httpd/conf/httpd.conf строку:

LoadModule auth_dbm_module

modules/mod_auth_dbm.so.

Шаг 1 Для администрирования базы данных, содержащих аутентификационную информацию пользователей

сервера, используется утилита /usr/sbin/dbmmanage. Для того, чтобы затруднить несанкционированную модификацию базы данных, переопределите права доступа к утилите:

[root@test /]# chmod 510 /usr/sbin/dbmmanage

Шаг 2 Добавьте пользователя, которому будет разрешен доступ в закрытые каталоги сервера:

[root@test /]# /usr/sbin/dbmmanage /etc/httpd/dbmpasswd adduser shoper New password:Sh()perpa$ <Enter>

Re-type new password: Sh()perpa$ <Enter>

User shoper added with password encrypted to 7Wj/W4BLeZ4uI using crypt

Шаг 3

Проверьте наличие в конфигурационном файле /etc/httpd/conf/httpd.conf строки:

LoadModule auth_dbm_module modules/mod_auth_dbm.so

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

Конфигурирование поддержки протокола SSL в Apache HTTP Server (файлы

/usr/share/ssl/certs/www.crt и /usr/share/ssl/private/www.key)

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

ЗАМЕЧАНИЕ Если вы не собираетесь включать поддержку протокола SSL, пропустите этот раздел и не забудьте удалить или закомментировать в разделе Section 1: Global Environment из файла

/etc/httpd/conf/httpd.conf строку:

LoadModule ssl_module

modules/mod_ssl.so.

Шаг 1 Для создания самостоятельно подписанного сертификата необходимо наличие собственного серти-

фикационного центра. Если вы его уже создали, то перейдите к следующему шагу. В противном случае ознакомьтесь с рекомендациями раздела «Тестирование OpenSSL» главы 12 и создайте собственный сертификационный центр.

Шаг 2

Создайте закрытый ключ, не защищенный паролем, для чего перейдите в каталог/usr/share/ssl:

[root@test /]# cd /usr/share/ssl

Выберите пять любых больших файлов со случайным (уникальным) содержанием, скопируйте их в каталог /usr/share/ssl и переименуйте в random1, random2, random3, random4, random5, по-

сле чего выполните команду:

[root@test ssl]# openssl genrsa -rand random1:random2:random3:random4:random5 -out www.key 1024

Глава 34. Apache HTTP Server

515

2019245 semi-random bytes loaded

 

Generating

RSA private key, 1024 bit long modulus

 

..................................................

 

++++++

...........

++++++

 

e is 65537

(0x10001)

 

ЗАМЕЧАНИЕ Использование закрытого ключа, не защищенного паролем, не очень желательно, с точки зрения безопасности системы. Поэтому авторы настоятельно рекомендуют все-таки использовать закрытый ключ, защищенный паролем, созданный в соответствии с рекомендациями раздела «Тестирование OpenSSL» главы 12. В случае использования закрытого ключа, защищенного паролем, при загрузке Apache HTTP Server потребует ввода пароля для получения доступа к закрытому ключу.

Рассматриваемый пример, в котором используется закрытый ключ, не защищенный паролем, просто иллюстрирует еще один вариант конфигурации поддержки протокола SSL в Apache HTTP Server.

Шаг 3

Сохраните файл www.key, содержащий закрытый ключ, в надежном месте:

[root@test ssl]# cp www.key /very_reliable_place/eshop_bruy_info/www.key

Шаг 4 Создайте запрос на подтверждение сертификата:

[root@test ssl]# openssl req -new -key www.key -out www.csr

You are about to be asked to enter information that will be incorporated into your certificate request.

What you are about to enter is what is called a Distinguished Name or a DN.

There are quite a few fields but you can leave some blank For some fields there will be a default value,

If you enter '.', the field will be left blank.

-----

Country Name (2 letter code) [RU]: <Enter>

State or Province Name (full name) [Moscow]: <Enter> Locality Name (eg, city) [Yubileyniy]: <Enter> Organization Name (eg, company) [Valentine Bruy]: <Enter> Organizational Unit Name (eg, section) [Home]: <Enter>

Common Name (eg, YOUR name) [test.bruy.info]: eshop.bruy.info <Enter> Email Address [drwalbr@bruy.info]: sales@test.bruy.info <Enter>

Please enter the following 'extra' attributes to be sent with your certificate request

A challenge password []: <Enter>

An optional company name []: <Enter>

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

eshop.bruy.info, а не для основного сервера test.bruy.info, т. к. в рассматриваемом примере конфигурации поддержка протокола SSL осуществляется только для виртуального сервера.

Шаг 5 Подпишите сертификат:

[root@test ssl]# /usr/share/ssl/misc/sign www.csr

CA signing: www.csr -> www.crt: Using configuration from ca.config

Enter pass phrase for

/usr/share/ssl/private/ca.key:

Check that the request matches the signature

Signature ok

 

The Subject's Distinguished Name is as follows

countryName

:PRINTABLE:'RU'

stateOrProvinceName

:PRINTABLE:'Moscow'

localityName

:PRINTABLE:'Yubileyniy'

organizationName

:PRINTABLE:'Valentine Bruy'

organizationalUnitName:PRINTABLE:'Home'

commonName

:PRINTABLE:'eshop.bruy.info'

emailAddress

:IA5STRING:'sales@test.bruy.info'

Certificate is to be certified until Jul 9 08:12:16 2004 GMT (365 days) Sign the certificate? [y/n]:y <Enter>

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

1 out of 1 certificate requests certified, commit? [y/n]y <Enter>

Write out database with 1 new entries

Data Base Updated

CA verifying: www.crt <-> CA cert

www.crt: OK

Шаг 6

Сохраните файл www.crt, содержащий сертификат, в надежном месте:

[root@test ssl]# cp www.crt /very_reliable_place/eshop_bruy_info/www.crt

Шаг 7

Поместите файлы www.crt и www.key в каталоги, определенные директивами

SSLCertificateFile и SSLCertificateKeyFile в конфигурационном файле

/etc/httpd/conf/httpd.conf. Определите права доступа к ним и назначьте их владельцем пользователя www, от имени которого запускается Apache HTTP Server :

[root@test ssl]# mv www.key private/

[root@test ssl]# mv www.crt certs/

[root@test ssl]# chmod 400 private/www.key [root@test ssl]# chmod 400 certs/www.crt [root@test ssl]# chown www.www private/www.key [root@test ssl]# chown www.www certs/www.crt

Шаг 8

Проверьте наличие в конфигурационном файле /etc/httpd/conf/httpd.conf строки:

LoadModule ssl_module modules/mod_ssl.so

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

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

Для проверки работоспособности рассматриваемой конфигурации сервера необходимо выполнить следующие операции:

Шаг 1 Создайте каталоги и разместите в них файлы, обслуживаемые виртуальными серверами в соответст-

вии с настройками, определенными в /etc/httpd/conf/httpd.conf, например:

[root@test /]# mkdir /var/www/eshop [root@test /]# mkdir /var/www/eshop/html [root@test /]# mkdir /var/www/eshop/cgi-bin

[root@test /]# mkdir /var/www/eshop/html/private [root@test /]# mkdir /var/www/eshopssl [root@test /]# mkdir /var/www/eshopssl/html [root@test /]# mkdir /var/www/eshopssl/cgi-bin

[root@test /]# mkdir /var/www/eshopssl/html/private

Поместите в каталог /var/www/eshop/html файл index.html, содержащий следующие строки:

<html>

<title>Главная страница e-shop (http-доступ)</title>

<body>

<H1>Главная страница e-shop (http-доступ)</H1>

<a href="private/">Каталог с ограниченным доступом (http-доступ)</a>

</body>

<html>

Поместите в каталог /var/www/eshop/html/private файл index.html, содержащий следующие строки:

<html>

<title>Cтраница e-shop с ограниченным доступом(hhtp-доступ)</title>

<body>

<H1>Cтраница e-shop с ограниченным доступом(http-доступ)</H1>

</body>

Глава 34. Apache HTTP Server

517

<html>

Поместите в каталог /var/www/eshopssl/html файл index.html, содержащий следующие строки:

<html>

<title>Главная страница e-shop (https-доступ)</title>

<body>

<H1>Главная страница e-shop (https-доступ)</H1>

<a href="private/">Каталог с ограниченным доступом (https-доступ)</a>

</body>

<html>

Поместите в каталог /var/www/eshopssl/html/private файл index.html, содержащий сле-

дующие строки:

<html>

<title>Cтраница e-shop с ограниченным доступом (https-доступ)</title>

<body>

<H1>Cтраница e-shop с ограниченным доступом (https-доступ)</H1>

</body>

<html>

Шаг 2

Запустите Apache HTTP Server:

[root@test /]# /etc/init.d/httpd start

Запускается httpd: [ОК]

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

[root@test /]# /etc/init.d/httpd start Запускается Apache: Syntax error on line 252 of

/etc/httpd/conf/httpd.conf:

TransferLog takes one argument, the filename of the access log

[СБОЙ]

В этом случае исправьте ошибки в конфигурационном файле /etc/httpd/conf/httpd.conf, руководствуясь ссылкой на номер строки и описанием ошибки в полученном сообщении. После устранения ошибки попытайтесь повторно запустить Apache HTTP.

Шаг 3 После удачного запуска сервера проверьте наличие доступа к каталогам и файлам, к которым он дол-

жен быть разрешен, а также отсутствие доступа к каталогам и файлам, к которым он должен быть запрещен. В ниже приведенном примере сервер тестировался с использованием текстового браузера. Если вы используете другой браузер, внешнее представление результатов тестирования будет выглядеть, скорее всего, подругому.

Попытайтесь обратиться к индексному файлу виртуального сервера http://eshop.bruy.info/, поддерживающего соединения по протоколу HTTP:

[karlnext@karlnext karlnext]$ lynx http://eshop.bruy.info

На экране вы должны увидеть примерно следующее:

Главная страница e-shop (http-доступ)

Главная страница e-shop (http-доступ)

Каталог с ограниченным доступом (http-доступ)

Команды: стрелки - перемещение, '?' - помощь, 'q' - выход, '<-' - назад. Стрелки: Вверх, Вниз - перемещение. Вправо - переход по ссылке; Влево -

возврат. H)elp O)ptions P)rint G)o M)Глав экран Q)uit /=поиск

[delete]=список истории

Попробуйте перейти по ссылке

Каталог с ограниченным доступом (http-доступ)

518

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

в закрытый каталог сервера, т. к. это единственная ссылка на странице. Для этого необходимо просто нажать клавишу <Enter>. В результате вы должны увидеть примерно следующее:

Главная страница e-shop (http-доступ)

Главная страница e-shop (http-доступ)

Каталог с ограниченным доступом (http-доступ)

Имя пользователя для 'Restricted Section' на server 'eshop.bruy.info':shoper

Стрелки: Вверх, Вниз - перемещение. Вправо - переход по ссылке; Влево -

возврат. H)elp O)ptions P)rint G)o M)Глав экран Q)uit /=поиск

[delete]=список истории

Введите имя пользователя shoper, как показано выше, которому разрешен доступ в закрытый каталог, и нажмите клавишу <Enter>:

Главная страница e-shop (http-доступ)

Главная страница e-shop (http-доступ)

Каталог с ограниченным доступом (http-доступ)

Пароль: **********

Стрелки: Вверх, Вниз - перемещение. Вправо - переход по ссылке; Влево -

возврат. H)elp O)ptions P)rint G)o M)Глав экран Q)uit /=поиск

[delete]=список истории

Введите пароль для пользователя shoper и нажмите клавишу <Enter>. В результате вы получите доступ к индексному файлу закрытого каталога и увидите примерно следующее:

Cтраница e-shop с ограниченным доступом(hhtp-доступ)

Cтраница e-shop с ограниченным доступом(http-доступ)

Команды: стрелки - перемещение, '?' - помощь, 'q' - выход, '<-' - назад. Стрелки: Вверх, Вниз - перемещение. Вправо - переход по ссылке; Влево -

возврат. H)elp O)ptions P)rint G)o M)Глав экран Q)uit /=поиск

[delete]=список истории

Завершите работу с браузером, используя подсказку в нижней части экрана.

Для тестирования доступа к виртуальному серверу, поддерживающего соединения по протоколу HTTPS, наберите:

[karlnext@karlnext karlnext]$ lynx https://eshop.bruy.info

Вы должны увидеть примерно следующее:

Главная страница e-shop (https-доступ)

Главная страница e-shop (https-доступ)

Каталог с ограниченным доступом (https-доступ)

Команды: стрелки - перемещение, '?' - помощь, 'q' - выход, '<-' - назад. Стрелки: Вверх, Вниз - перемещение. Вправо - переход по ссылке; Влево -

возврат. H)elp O)ptions P)rint G)o M)Глав экран Q)uit /=поиск

[delete]=список истории

Попробуйте перейти по ссылке

Каталог с ограниченным доступом (https-доступ)

в закрытый каталог сервера, т. к. это единственная ссылка на странице. Для этого необходимо просто нажать клавишу <Enter>, после чего вы должны увидеть следующую информацию:

Главная страница e-shop (https-доступ)

Главная страница e-shop (https-доступ)

Глава 34. Apache HTTP Server

519

Каталог с ограниченным доступом (https-доступ)

Имя пользователя для 'Restricted Section' на server 'eshop.bruy.info:443':shoper

Стрелки: Вверх, Вниз - перемещение. Вправо - переход по ссылке; Влево -

возврат. H)elp O)ptions P)rint G)o M)Глав экран Q)uit /=поиск

[delete]=список истории

Введите имя пользователя shoper, которому разрешен доступ в закрытый каталог, и нажмите кла-

вишу <Enter>:

Главная страница e-shop (https-доступ)

Главная страница e-shop (https-доступ)

Каталог с ограниченным доступом (https-доступ)

Пароль: **********

Стрелки: Вверх, Вниз - перемещение. Вправо - переход по ссылке; Влево -

возврат. H)elp O)ptions P)rint G)o M)Глав экран Q)uit /=поиск

[delete]=список истории

Введите пароль для пользователя shoper и нажмите клавишу <Enter>. В результате вы получите доступ к индексному файлу закрытого каталога и увидите примерно следующее:

Cтраница e-shop с ограниченным доступом (https-доступ)

Cтраница e-shop с ограниченным доступом (https-доступ)

Команды: стрелки - перемещение, '?' - помощь, 'q' - выход, '<-' - назад. Стрелки: Вверх, Вниз - перемещение. Вправо - переход по ссылке; Влево -

возврат. H)elp O)ptions P)rint G)o M)Глав экран Q)uit /=поиск

[delete]=список истории

Завершите работу с браузером.

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

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

Если вы собираетесь использовать Apache HTTP Server с поддержкой PHP и/или модуля mod_perl, пропустите этот раздел и вернитесь к нему после инсталляции и настройки поддержки соответствующих модулей в обычной среде. В этом случае перенос необходимых файлов и каталогов в окружение chroot-jail лучше осуществлять сразу для Apache HTTP Server и всех поддерживаемых им модулей сторонних разработчиков, руководствуясь при этом рекомендациями этой и двух последующих глав.

Шаг 1

Остановите Apache HTTP Server:

[root@test /]# /etc/init.d/httpd stop

Останавливается httpd: [ОК]

Шаг 2

Создайте каталоги, необходимые для организации окружения chroot-jail:

[root@test /]# mkdir -p /chroot/httpd/dev [root@test /]# mkdir -p /chroot/httpd/lib [root@test /]# mkdir -p /chroot/httpd/etc [root@test /]# mkdir -p /chroot/httpd/var/www/ [root@test /]# mkdir -p /chroot/httpd/tmp/ [root@test /]# chmod 777 /chroot/httpd/tmp/

520

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

[root@test /]# chmod +t /chroot/httpd/tmp/ [root@test /]# mkdir -p /chroot/httpd/usr/lib [root@test /]# mkdir -p /chroot/httpd/usr/sbin [root@test /]# mkdir -p /chroot/httpd/var/log [root@test /]# mkdir -p /chroot/httpd/var/run [root@test /]# mkdir -p /chroot/httpd/lib/i686

[root@test /]# mkdir -p /chroot/httpd/usr/lib/modules [root@test /]# mkdir -p /chroot/httpd/var/run/ [root@test /]# mkdir -p /chroot/httpd/usr/lib/modules [root@test /]# mkdir -p /chroot/httpd/usr/lib/build

Шаг 3

Перенесите исполняемые файлы Apache HTTP Server и необходимые для его нормальной работы библиотеки в каталоги окружения chroot-jail:

[root@test /]# mv /var/www /chroot/httpd/var/ [root@test /]# mv /etc/httpd /chroot/httpd/etc [root@test /]# mv /var/log/httpd /chroot/httpd/var/log/ [root@test /]# mv /usr/sbin/ab /chroot/httpd/usr/sbin [root@test /]# mv /usr/sbin/apxs /chroot/httpd/usr/sbin

[root@test /]# mv /usr/sbin/checkgid /chroot/httpd/usr/sbin/ [root@test /]# mv /usr/sbin/dbmmanage /chroot/httpd/usr/sbin/ [root@test /]# mv /usr/sbin/htdbm /chroot/httpd/usr/sbin/ [root@test /]# mv /usr/sbin/htdigest /chroot/httpd/usr/sbin/ [root@test /]# mv /usr/sbin/htpasswd /chroot/httpd/usr/sbin/ [root@test /]# mv /usr/sbin/httpd /chroot/httpd/usr/sbin/ [root@test /]# mv /usr/sbin/logresolve /chroot/httpd/usr/sbin/ [root@test /]# mv /usr/sbin/rotatelogs /chroot/httpd/usr/sbin/ [root@test /]# mknod /chroot/httpd/dev/null c 1 3

[root@test /]# chmod 666 /chroot/httpd/dev/null [root@test /]# mknod /chroot/httpd/dev/urandom c 1 9

[root@test /]# chown www.www /chroot/httpd/usr/share/ssl/certs [root@test /]# chown www.www /chroot/httpd/usr/share/ssl/private [root@test /]# mv /usr/share/ssl/private/www.key

/chroot/httpd/usr/share/ssl/private/ [root@test /]# mv /usr/share/ssl/certs/www.crt

/chroot/httpd/usr/share/ssl/certs/ [root@test /]# mv /usr/lib/httpd/modules/*

/chroot/httpd/usr/lib/httpd/modules/ [root@test /]# mv /usr/lib/httpd/build/*

/chroot/httpd/usr/lib/httpd/build/

ЗАМЕЧАНИЕ Лучше сразу не переносить соответствующие файлы и каталоги, а скопировать их. В этом случае, если ваш сервер будет работоспособен в окружении chroot-jail, вы в дальнейшем всегда сможете уничтожить более не нужные файлы, созданные при инсталляции и конфигурировании сервера в обычной среде. В случае, если сервер окажется не работоспособным, вы сможете вернуться к прежней работоспособной конфигурации.

Шаг 4

Создайте список библиотек, используемых демоном httpd, анализируя вывод следующей команды:

[root@test /]# ldd /chroot/httpd/usr/sbin/httpd libssl.so.0.9.7 => /lib/libssl.so.0.9.7 (0x4753d000)

libcrypto.so.0.9.7 => /lib/libcrypto.so.0.9.7 (0x4756d000) libaprutil-0.so.0 => /usr/lib/libaprutil-0.so.0(0x47673000) libgdbm.so.2 => /usr/lib/libgdbm.so.2 (0x47689000) libdb-3.3.so => /lib/libdb-3.3.so (0x4768f000) libexpat.so.0 => /usr/lib/libexpat.so.0 (0x4771e000) libapr-0.so.0 => /usr/lib/libapr-0.so.0 (0x4773d000) libpthread.so.0 => /lib/i686/libpthread.so.0 (0x4775d000) librt.so.1 => /lib/librt.so.1 (0x47771000)

libm.so.6 => /lib/i686/libm.so.6 (0x47782000) libnsl.so.1 => /lib/libnsl.so.1 (0x477a4000) libdl.so.2 => /lib/libdl.so.2 (0x477b9000) libc.so.6 => /lib/i686/libc.so.6 (0x477bc000)

/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x47525000)

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