Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Водяхо 04 / lect_doc / АРАС.doc
Скачиваний:
43
Добавлен:
03.06.2014
Размер:
329.22 Кб
Скачать

Принципы работы арасне

Web-сервер Apache является на сегодняшний день самым популярным в мире Web-сервером. Название Apache отражает особенности внутреннего строения сервера: он представляет собой комбинацию основного кода и ряда "заплат". Заплата - patch (пэтч), a Apache читается как "эпэчи". Есть и еще одно толкование, к которому склоняются довольно серьезные люди: Apache является удачным соответствием, потому что одноименное индейское племя обладало такой же находчивостью и приспособляемостью. Apache предоставляется пользователям бесплатно и создается командой добровольцев, которые за свою работу не получают ничего.

Первый Web-сервер был создан Тимом Бернерсом-Ли в CERN, европейском центре ядерных исследований. Разработка непосредственного предшественника Apache осуществлялась NCSA - Национальным центром суперкомпьютерных приложений, который находится в подчинении правительства США. Исходный текст, написанный на языке С, можно получить с узла http://www.ncsa.uiuc.edu.

Apache - это программа, которая работает в среде соответствующей многозадачной операционной системы. Исполняемый файл Apache называется httpd и обычно выполняется в фоновом режиме. Каждый запускаемый экземпляр httpd прежде всего обращает свое внимание на Web-узел, который на практике представляет собой попросту каталог. В каталоге узла обычно организовано три подкаталога:

Conf

Содержит файлы конфигурации, из которых самым важным является httpd.conf.

Htdocs

Содержит HTML-сценарии, предоставляемые клиентам узла. Этот каталог и его подкаталоги, т.н. Web-пространство, доступны для каждого, кто работает в Web, и при использовании не только для общедоступных данных является источником угрозы для безопасности. Logs Содержит данные регистрации доступа и ошибок.

Как правило, вне Web-пространства имеется каталог, обычно называемый cgi-bin, где размещаются CGI-сценарии. Это программы или сценарии командного процессора, которые пишет Web-мастер (или которые пишутся для Web-мастера) и которые Apache может выполнять от имени своих клиентов. Крайне важно по соображениям безопасности, чтобы этот каталог находился за пределами Web-пространства.

В холостом режиме Apache ничего не делает, только ожидает поступления запроса по IP-адресам и TCP-порту (портам), заданным в файле его конфигурации.

Когда на соответствующий порт поступает запрос, Apache принимает этот HTTP-запрос и анализирует заголовки. Затем применяя правила, установленные в файле конфигурации, сервер выполняет соответствующее действие.

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

Как было сказано выше, исполняемый файл Apache называется httpd. Для запуска Apache в режиме отладки, необходимо добавить флаг —X:

# httpd-X,

при указании этого флага Apache будет работать в приоритетном режиме и его выполнение можно будет завершить нажатием клавиш [Ctrl-C]. Поскольку Apache работает в приоритетном режиме, он монополизирует консоль. Это по-видимому самый лучший способ тестирования Apache, но на практике такой режим не годится. Работает всего один экземпляр Apache, а не «бригада», как обычно, поэтому скорость очень низкая, даже при средней нагрузке. Кроме того, в этом режиме в работе браузера могут возникать таинственные паузы. Флаг -X предназначен только для отладки.

Настройка Apache

Web-пользователь и Web-группа

Поскольку возможность регистрации посторонних с правами привилегированных пользователей связана с возможным ущербом для безопасности, а в системе UNIX каждый запущенный процесс получает идентификатор пользователя, который запустил этот процесс, в Apache имеется возможность указать пользователя и группу, чьи идентификаторы получает демон httpd. Будучи запущенным с правами пользователя root (чтобы можно было использовать порт 80) Apache заменяет свой пользовательский идентификатор на -1. Во многих UNIX-системах это соответствует пользователю nobody из группы nogroup, т.е. абсолютно безвредному лицу. Однако, например, FreeBSD не понимает эту запись и выдает сообщение об ошибке. Выход в таком случае заключается в создании нового пользователя, который безопасно регистрируется без командного процессора, например, webuser из группы webgroup.

Чтобы поставить Apache в известность о существовании такого пользователя и группы, необходимо в файл httpd.conf добавить строки:

User webuser

Group webgroup

Название сервера

Директива ServerName задает хост-имя сервера, необходимое для переадресации URL. Для этого в файле httpd.conf необходимо вставить строку: ServerName <название серввра>

В качестве названия сервера вовсе не обязательно указывать реальное имя сервера. Можно вместо имени хоста указать "www", чтобы скрыть настоящее название машины. При этом необходимо, чтобы на DNS-сервере было также указано это имя.

Каталог документов

Наконец, для работы сервера, необходимо в файле конфигурации Apache указать название каталога документов, где располагаются непосредственно HTML-файлы Web-узла. По умолчанию таким каталогом является .. ./httpd/htdocs, но можно и определить другое местоположение HTML-документов, используя директиву:

DocumentRoot <путь_к_каталогу>

Права доступа

Для нормальной работы Apache необходимо правильно установить права доступа к файлам. В UNIX-системах есть три вида прав: на чтение, на запись и на вьшолнение. Они назначаются каждому объекту на трех уровнях: пользователь, группа и прочие (остальной мир). Посмотреть права на файл можно с помощью команды Is с флагом - l:

#ls -l

Эта команда выведет строку(строки) следующего формата:

rw-rw-r— 5 root bin 796 May 16 19:21 index.html

Первый символ «-» показывает, что это обычный файл. Далее следуют три поля прав доступа, каждое из которых представлено тремя символами. В данном примере они означают:

• Пользователь (root): чтение - да, запись - да, исполнение - нет.

• Группа (bin): чтение - да, запись - да, исполнение - нет.

• Прочие: чтение - да, запись - нет, исполнение - нет.

Если права доступа относятся к каталогу, то символ «х» - право на выполнение - означает «просмотр», т.е. разрешение видеть содержимое каталога и переходить на уровень ниже.

Поскольку экземпляр Apache, который пытается получить доступ к файлу из каталога .../htdocs принадлежит пользователю nobody и группе nogroup, а эти пользователь и группа не имеют родственных отношений с root и bin, необходимо, чтобы пользователи по категории «прочие» могли получить доступ к данному каталогу и единственными правами были «права на чтение».

Таким образом, злоумышленник, который пролез в пещеру к Apache, не сможет изменить или удалить файлы, а сможет только прочесть их.

Вообще говоря, все на Web-узле должно принадлежать пользователю, не являющемуся nobody (webuser) и группе, не являющейся nogroup (webuser).

Есть четыре вида файлов, к которым необходимо предоставить доступ пользователю nobody.

• каталоги;

• данные;

• программы;

• сценарии командного процессора;

Пользователь nobody должен иметь право просмотра всех необходимых каталогов, начиная с корневого каталога документов сервера. Если Apache должен получить доступ к каталогу, то для этого каталога и всех каталоге в его пути должны быть установлены права на просмотр (х) по категории прочие. Это делается командой:

# chmod о+х <каждый_каталог_в_пути>

Чтобы выдать перечень содержимого каталога, для конечного каталога должны быть установлены права на чтение по категории «прочие». Это делается командой:

# chmod о+x <конечный_каталог>

Разрешение на запись по этой категории, естественно не должно предоставляться:

# chmod o-w <конечный_каталог>

Чтобы обеспечить возможность использовать данные, находящиеся в файле, - а это касается, например, файлов типа .htaccess - для файла требуется установить разрешение на чтение по категории «прочие»: # chmod о+г <файл>

Разрешение на запись, как и выше, не предоставляется: # chmod o-w <файл>

Чтобы обеспечить запуск программы соответствующего исполняемого файла необходимо установить разрешение на выполнение его по категории «прочие»:

# chmod о+х <программа>

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

#chmod o+rx <сценарий>

Соседние файлы в папке lect_doc