Брандмауэры и специальное программное обеспечение 8 Часть 4

Вид материалаРеферат

Содержание


Ядро Linux 2.4.x и khttpd
Подобный материал:
1   ...   81   82   83   84   85   86   87   88   ...   101

Ядро Linux 2.4.x и khttpd


В состав ядра Linux 2.4.x (которое на момент написания данной книги до сих пор находится в стадии разработки) входит работающий на уровне ядра демон HTTP (khttpd). Этот демон не является полноценной заменой web-сервера Apache, однако он служит для улучшения его работы. Разработчики демона исходили из предположения, что большинство web-страниц являются статическими, поэтому доступ к ним можно обеспечить с использованием небольшого, быстрого, безопасного демона, работающего на уровне ядра. Демон khttpd ожидает поступления запросов через порт 80 (привилегированный порт). Запросы, связанные с обработкой простых статических web-страниц, обрабатываются демоном khttpd. Если демон khttpd не в состоянии обработать некоторый запрашиваемый клиентом документ (например, документ, содержащий код РНРЗ, или документ, предусматривающий сложный грамматический анализ), такой запрос переадресуется другому демону HTTP (например Apache), который ожидает поступления запросов через порт 8080. После этого более мощный и совершенный web-сервер (такой как Apache) выполняет обработку подобных запросов. Перенаправление запросов осуществляется от демона khhtpd из порта 80 узлу localhost на порт 8080 (или любой другой указанный вами порт).

Демон khttpd можно скомпоновать либо в виде модуля, либо в виде демона, встроенного в ядро. В файле /etc/re.d/rc.local можно указать, запускается ли он в процессе начального запуска ОС или его запуск осуществляется позднее. Если этот демон скомпилирован в виде модуля, каталог khttpd не появится в рамках дерева /рrос до тех пор, пока данный модуль не будет загружен. Как только модуль khttpd загружается в память, в файловой системе появляется каталог /proc/sys/net/ khttpd. В этом каталоге присутствуют следующие файлы:


clientport

documentroot

dynamiс

logging

maxconnect

perm_forbid

perm_required

serverport

sloppymime

start

stop

threads

unload

Каждый из этих файлов может быть настроен в соответствии с вашей конкретной конфигурацией. В первом файле содержится клиентский порт (clientport) -это порт, в который демон khttpd передает запрос (как клиент) в случае, если обработка этого запроса выходит за рамки операции простого копирования файла в сеть. По умолчанию используется клиентский порт 80, через который web-сервер Apache ожидает поступления запросов. Это означает, что по умолчанию демон khttpd настроен как вспомогательное средство, а не как основной демон обработки запросов HTTP. Чтобы сделать демон khttpd основным web-сервером, a Apache — вспомогательным, измените клиентский порт на 8080 (или любой другой неиспользуемый порт) и прикажите серверу Apache ожидать поступления запросов через этот порт. Также внесите рекомендуемые изменения в файл serverport (см. далее).

Второй файл содержит в себе местоположение каталога DocumentRoot. По умолчанию корневым каталогом web-документов для демона khttpd является каталог /var/www. Есго следует изменить при помощи команды echo "/home/httpd/htdocs" > /proc/sys/net/httpd/documentroot.

Предназначение третьего файла менее понятно, чем первых двух. Файл dynamic содержит динамические строки, поиск которых будет осуществлять демон khttpd. По умолчанию в этом файле содержится следующий текст: Dynamic strings are : -cgi-bin- -..---. Возможно, если вы используете РНР, вам потребуется добавить в этот файл рhрЗ (echo php3 > /proc/sys/net/khttpd/dynamic).

Четвертый файл, logging, указывает, должно ли осуществляться документирование сведений в журналах с использованием syslog. В этом файле может содержаться либо 0, либо 1. По умолчанию в файле содержится 0. Пятый параметр ограничивает максимальное количество одновременных подключений. По умолчанию в этом файле содержится 1000 (этого должно быть достаточно для любых, даже самых крупных узлов, однако для узлов с недостаточной емкостью каналов связи значение этого параметра можно снизить до 100 или меньше).

По умолчанию в файле perm_forbid содержится весьма разумное значение 16969. Это число является маской, определяющей, какими характеристиками должен обладать файл. Характеристики могут быть следующими (читаем числа в направлении слева направо): FIFO (именованный канал — named pipe, на что указывает 1 в первом разряде), SUID или SGID (4 или 2 соответственно, а комбинация равна значению 6), чтение, запись, исполнение (7) или только запись (2) для владельца — комбинированное значение равно 9, разрешение на чтение (4) и запись (2) для группы — комбинированное значение равно 6. Если вы меняете это значение, убедитесь в том, что вы хорошо понимаете, как оно обрабатывается. Еще одним оправданным и разумным значением является значение 16999. Если вы внесете в этот файл какое-либо значение, вы можете нарушить защиту вашей системы.

Файл perm_required обрабатывается приблизительно так же, как и файл perm_ forbid, однако в данном случае для того, чтобы быть предоставленным пользователю, файл должен быть доступен только для чтения всем пользователям. Если файл не открыт для чтения всем пользователям, он не будет обрабатываться.

В файле serverport содержится номер порта, через который демон khttpd ожидает поступления клиентских запросов. По умолчанию демон khttpd настроен в качестве вспомогательного сервера, поэтому в файле serverport содержится значение 8080. Если вы намерены сделать khttpd основным web-сервером, a Apache — вспомогательным, вы должны внести в этот файл необходимые изменения, кроме того, вы должны соответствующим образом модифицировать файл httpd.conf сервера Apache. Если вы используете Apache в качестве вспомогательного web-сервера (рекомендуется), измените в конфигурации Apache объявление BindAddress с * на 127.0.0.1. В результате сервер Apache будет принимать запросы только от демона khttpd.

Файл sloppymime может содержать одно из двух значений: 1 или 0. Если этот файл содержит значение 1, любой неизвестный тип MIME будет рассматриваться как тип text/html и будет обрабатываться демоном khttpd. Если файл sloppymime содержит значение 0, любой неизвестный тип MIME будет передан web-серверу пользовательского режима (Apache).

Следующие два файла — start и stop — по умолчанию содержат в себе значение 0. Если в файл start заносится 1, файл stop автоматически устанавливается равным О, при этом демон khttpd приступает к обслуживанию поступающих запросов. Если в файл stop вносится значение 1, файл start автоматически становится равным О и демон khttpd прекращает обработку запросов.

Файл threads по умолчанию содержит 2. Это значение определяет количество серверных программных потоков, которые могут обрабатываться одним центральным процессором. Как правило, это значение должно быть равно 1. Вы можете увеличить его только в случае, если ваш узел является очень крупным Web-узлом (настолько крупным, что все активные файлы не вмещаются в оперативную память).

Последний файл unload подготавливает khttpd к выгрузке из памяти. Прежде чем выгрузить модуль из памяти, необходимо записать значение 1 в файл stop (при этом в файл start автоматически будет записано значение 0, что блокирует запуск дополнительных программных потоков khttpd). Программные потоки, которые в данный момент уже функционируют, продолжат свою работу, и вы должны либо дождаться, пока они завершат функционирование, либо послать им сигнал SIGHUP (kill -HUP 'идентификатор PID демона khttpd'). После этого вы можете подготовить модуль khttpd к выгрузке, для чего необходимо занести 1 в файл unload. Теперь вы можете без опасений отдать команду rmmod khttpd. При загрузке модуля в память в файл unload автоматически будет внесено значение 0.