Защищаем apache 1.3 в FreeBSD. Процессы с привилегиями пользователя.

В этой статье я рассмотрю решения, которые позволяют процессам apache 1.3 выполняться от имени пользователя, которому принадлежит виртуалхост. Архитектура apache 1.3 предполагает только prefork схему, поэтому все описанные ниже решения работают примерно одинаково: в системе запускается некоторое количество процессов apache. При получении запроса он передается одному из бездействующих процессов, процесс определяет на какой виртуалхост пришел запрос и какому пользователю принадлежит этот виртуалхост, после чего процесс suid’ится в пользователя/группу, которым принадлежит виртуалхост. Вся последующая обработка запроса происходит уже от имени пользователя/группы, которым принадлежит виртуалхост.

1. suexec
2. suphp
3. dklab
4. производительность


1. suexec

Описание:

suexec позволяет выполнять CGI скрипты от пользователя, которому принадлежит виртуалхост.

Установка suexec в FreeBSD:

В /etc/make.conf добавить:

.if ${.CURDIR} == /usr/ports/www/apache13
WITH_APACHE_SUEXEC=yes
APACHE_SUEXEC_DOCROOT= /home
.endif

В “APACHE_SUEXEC_DOCROOT” следует задавать директорию в которой располагаются пользователи и их DocumentRoot директории.

После этого:

# cd /usr/ports/www/apache13
# make install clean

Конфигурирование:

В описание виртуалхоста добавить:

User example
Group example

Преимущества:

+ CGI скрипты работают от имени пользователя.

Недостатки:

- От имени пользователя будут выполняться только CGI скрипты. Скрипты PHP, запущенные под mod_php будут продолжать выполняться от имени веб-сервера.


2. suphp

Описание:

suphp – это DSO-модуль (Dynamic Shared Object) для apache. Позволяет выполнять PHP скрипты от пользователя, которому принадлежит виртуалхост.

Установка suphp в FreeBSD:

# cd /usr/ports/www/suphp
# make install clean

Конфигурирование:

в httpd.conf:

LoadModule suphp_module libexec/apache/mod_suphp.so
AddModule mod_suphp.c
suPHP_Engine on
suPHP_AddHandler x-httpd-php
AddType application/x-httpd-php .php
AddHandler x-httpd-php .php

в описании виртуалхоста:

suPHP_UserGroup example example

Преимущества:

+ PHP cкрипты работают от имени пользователя.

Недостатки:

- От имени пользователя будут выполняться только PHP скрипты. CGI скрипты будут продолжать выполняться от имени веб-сервера.
- PHP скрипты запускаются при помощи php-cgi, что лишает возможности использовать mod_php со всеми его преимуществами в плане производительности.


3. dklab apache

Описание:

dklab apache – это apache 1.3.34 c набором патчей от Дмитрия Котерова. Подробную информацию можно получить по адресу: http://dklab.ru/lib/dklab_apache/

Установка dklab apache в FreeBSD:

Можно скачать порт, распаковать в /usr/ports/www/dklab-apache, затем собрать порт:

# cd /usr/ports/www/dklab-apache
# make install clean

Либо можно скачать готовые пакеты и установить при помощи pkg_add:
http://woland.pl.ua/upload/dklab-apache-i386.tbz
http://woland.pl.ua/upload/dklab-apache-amd64.tbz

Конфигурирование:

В описание виртуалхоста добавляем:

User example
Group example

Преимущества:

+ Удобство конфигурирования. Не требуется конфигурировать отдельно suexec и suphp, достаточно директив User/Group в описании виртуалхоста.

Недостатки:

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


4. производительность

Для тестирования производительности использовались 3 файла.
Первый – статический HTML файл с текстом “Hello world!”.
Второй – PHP скрипт:

<? phpinfo() ?>

Третий – CGI скрипт:

#!/usr/local/bin/perl
print "Content-type: text/html\n\n";
print "Hello world!";

Каждый файл запрашивался 50.000 раз в 50 потоков (“ab -c 50 -n 50000 …”). Засекалось время в секундах за которое полностью выполнится тест.

Время выполнения теста (в сек.):

HTML PHP CGI
apache 1.3.41 5 22 152
apache 1.3.41 с suexec - - 229
apache 1.3.41 с suphp - 388 -
dklab apache 395 293 497

Стоит отметить, что тест синтетический и показывает не то, чтобы реальные цифры производительности, а скорее сколько времени требуется apache‘у для того, чтобы переключить пользователя от которого работает процесс. К примеру, dklab apache c mod_php на реальной живой системе показал всего лишь ~7-10% разницу в потреблении ресурсов CPU по сравнению с mod_php на обычном apache.

Видео с Highload 2009. Блиц-доклады

Видео доклад с конференции Highload 2009.

Название: Блиц-доклады
Год: 2009
Докладчик: Разные докладчики
Компания: N/A
Язык доклада: Русский
Описание: Блиц-доклады – это серия коротких докладов, по 5 минут каждый. На видео представлены 9 докладов:

1. “Виртуальные хосты веб-сервера Apache. Проблемы и решения для массового хостинга“. Кратко: при многотысячном числе виртуальных хостов рестарт apache’а происходит 15-20 секунд. Доклад о том, как этого избежать.

2. “9 способов ответить на HTTP GET“. Беглый обзор и сравнение CGI, mod_perl, FastCGI, ngx_perl, POE, HTTP::Daemon, AnyEvent, HTTP::Engine, PSGI.

3. “Как мы используем nginx“. Представитель mail.ru рассказывает о том, как прикручивали геобазу к существующему проекту.

4. AnyEvent. Обзор возможностей метафреймворка AnyEvent

5. “Python и высокая нагрузка“. Следует ли использовать python там, где нужна высокая нагрузка.

6. “Perl 6 на высоких нагрузках“. Заметка о компиляторах perl 6.

7. “РНР-разгон“. Некоторые аспекты оптимизации PHP кода.

8. Функционал “Мир Тесен” внутри “Вконтакте”. С технической стороны польза от доклада равна нулю, поскольку техническая сторона отсутствует в принципе. Спонсорский доклад, чистая реклама.

9. “PowerDNS в масштабах хостинг-провайдера“.

Подробнее »

Видео с Highload 2009. Модернизация высоконагруженного проекта на примере Рамблер ТОП100

Видео доклад с конференции Highload 2009.

Название: Модернизация высоконагруженного проекта на примере Рамблер ТОП100
Год: 2009
Докладчик: Антон Горохов
Компания: Рамблер
Язык доклада: Русский
Описание: Осень 2007 года. Проходит первый Highload, набирают обороты “Одноклассники”, кругом говорят о Google и читают Roem.ru.

Рамблер ТОП100 перестает справляться с нагрузкой в 10000 хитов в секунду, и этого уже не скроешь.

При модернизации одного из старейших проектов Рамблера было необходимо минимизировать время простоя и сохранить все его основные свойства. Т.е. провести ее незаметно для пользователя.

Задачи, которые решались, не новы для высоконагруженных проектов. Однако из множества решений было необходимо выбирать наиболее подходящие в данной ситуации. Расположить задачи в логичной последовательности. Предусмотреть новые проблемы, которые могут возникнуть в процессе.

В докладе пойдет речь о том, что и почему изменилось в архитектуре Рамблер ТОП100 за последние два года. (А также о том, что было решено не изменять).

Подробнее »

Видео с Highload 2009. Архитектура новой почтовой системы Рамблера

Видео доклад с конференции Highload 2009.

Название: Архитектура новой почтовой системы Рамблера
Год: 2009
Докладчик: Андрей Шетухин
Компания: Рамблер
Язык доклада: Русский
Описание: Андрей Шетухин рассказывает об устройстве почтовой системы Рамблера

Подробнее »

Видео с Highload 2009. Новый подход к хранению почты

Видеодоклад с конференции Highload 2009.

Название: Новый подход к хранению почты
Год: 2009
Докладчик: Александр Яковлев
Компания: РБК/Медиа-мир
Язык доклада: Русский
Описание: Речь пойдет об архитектуре почтовой системы Почта.ру:
* В системе почта.ру применяется принципиально новый способ хранения почты;
* Отказ от хранения почты – письмо как файл;
* Вся почта записывается минимум на 2 сервера;
* Почта хранится в чанках;
* При такой реализации не нужно покупать дорогих sas(scsi) винчестеров, достаточно sata;
* За счет того, что почта хранится минимум на 2 машинах, производится балансирование нагрузки;
* Хранения мета данных в файлах.

Подробнее »

Rambler's Top100