The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"OpenNews: Модифицированный Apache с разделением привилегий д..."
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Разговоры, обсуждение новостей (Public)
Изначальное сообщение [Проследить за развитием треда]

"OpenNews: Модифицированный Apache с разделением привилегий д..."  
Сообщение от opennews on 02-Апр-07, 09:55 
dkLab Apache (http://dklab.ru/lib/dklab_apache/) - это дистрибутив для тех, кто собирается использовать Apache в Unix для обслуживания нескольких полностью независимых друг от друга сайтов, работающих под разными, полностью разграниченными друг от друга пользователями Unix.


По сути это Apache 1.3.34, на который наложены некоторые "самодельные" патчи. Вот функциональность, которую они добавляют:

-  Запуск различных виртуальных хостов под различными Unix-пользователями. То, под каким пользователем работает виртуальный хост, задается в его стандартных директивах User и Group. Все скрипты, включая скрипты для mod_php, CGI и т. д., работают с правами указанного пользователя и группы и не могут получить доступ к файлам другого виртуального хоста. Долой safe_mode и проблемы с правами доступа в PHP!

-  Возможность создавать виртуальные хосты по шаблону: ABC.example.com -> /home/example/ABC. Вы можете ссылаться в директиве DocumentRoot на нужную часть доменного имени, например, так: /home/example/$-3+ (в данном примере это будет /home/example/ABC). Просто создайте директорию, чтобы добавить на сайт новый поддомен!

-  Модуль mod_rewrite защищен от любого рода "зацикливаний". Неосторожно или злонамеренно написанные директивы в .htaccess не могут "подвесить" весь сервер.

URL: http://dklab.ru/lib/dklab_apache/
Новость: http://www.opennet.me/opennews/art.shtml?num=10329

Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Модифицированный Apache с разделением привилегий для виртуал..."  
Сообщение от Salvator email on 02-Апр-07, 09:55 
Может, туплю с утра, но разве такой функционал не дают стандартные средства апача? suexec + vhost_alias ...
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "Модифицированный Apache с разделением привилегий для виртуал..."  
Сообщение от andrew (??) on 02-Апр-07, 10:15 
Ага, тупишь. Как ты через suexec прикрутишь mod_php?
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "Модифицированный Apache с разделением привилегий для виртуал..."  
Сообщение от eSupport.org.ru on 02-Апр-07, 10:06 
mod_php не дает стандартные средства.
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "Модифицированный Apache с разделением привилегий для виртуал..."  
Сообщение от Phil Kulin email on 02-Апр-07, 10:24 
Скажи мне дорогой друг, я правильно понимаю, что предложенный вариант отличается твоего же от варианта пятилетней давности наличием некоего нового аналога mod_vhost_alias (я, кстати, не понимаю, почему ещё никто этого не сделал :) и тем, что keepalive теперь принимаются? Если это так, я сейчас твой roadmap раскритикую. Я ещё когда честно украл по ещё не убитым ссылкам на тот древний вариант алгоритм работы имел много чего сказать :)
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

13. "Модифицированный Apache с разделением привилегий для виртуал..."  
Сообщение от Дмитрий Котеров email on 02-Апр-07, 12:19 
Нет, неправильно. Отличия от варианта пятилетней давности:
1. Используется стандартный fork, а не vfork/rfork. Т.е. память не шарится между ребенком и родителем => секьюрность не хромает (невозможно даже через переполнение буфера влезть в рутового родителя). Кроме того, лучшая совместимость с не-Линуксами.
2. Порождение потомков происходит асинхронно, что значительно ускоряет обработку запросов - делает ее более "гладкой", т.к. апач сам умеет следить за тем, чтобы в наличии всегда находилось несколько "свободных" апачей.
3. Даже этот асинхронный fork делается не на каждый запрос, а на каждое соединение - для типовых случаев это в 5-10 раз быстрее (по числу картинок на средней странице).
4. Нету дыры в безопасности с register_shutdown_function в mod_php, которая была в патче пятилетней давности (из-за которой этот патч и был убран, собственно). Ее там даже чисто теоретически быть не может.
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

15. "Модифицированный Apache с разделением привилегий для виртуал..."  
Сообщение от Phil Kulin email on 02-Апр-07, 12:50 
1. Это я понял.
2. А можно чуток подробнее про асинхронные форки? (не хочу в код лезть без пояснений).

Я чего хотел сказать... Некоторая проблема есть с fork(). Конечно, fork() (как и пять лет назад) делается действительно странно и забавно, но практика показывает, что в нашем случае это помогает слабо. Не знаю как в твоей практике, а я с форком так и не смог заставить работать адекватно apache. 15qps для него предел, на котором он начинает заниматься самодиспетчеризацией. KeepAlive вроде даже и действительно сильно помог бы... но пять лет назад. При том, что сейчас чуть ли не большинство посетителей сайтов - роботы поисковиков... все ли они этот самый keepalive держат? Тоже самое с акселераторами - весь смысл keepalive на уровне apache пропадает при наличии того же nginx.

Я много думал на эту тему. Единственный хороший универсальный вариант, который я вижу - писать свой MPM, который работать примерно как perchild, но при этом держать в запасе только те процессы, к которым часто обращаются. Туда же можно воткнуть систему всяких ренайсов и т.п. Но пока я думал, хостинг как отрасль повернулась на путь в небытие - когда я додумаю, слово "хостинг" будет странным понятием из прошлого, а в индивидуальном порядке это всё не нужно :) Опоздал.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

20. "apache, nginx, hosting"  
Сообщение от Michael Shigorin email on 02-Апр-07, 17:22 
>Тоже самое с акселераторами - весь смысл keepalive на
>уровне apache пропадает при наличии того же nginx.
А высказанные соображения касательно предела касаются одного apache?

>когда я додумаю, слово "хостинг" будет странным понятием из прошлого
В смысле виртуальный?

Я почему спрашиваю (c) Печкин: с одной стороны, поддерживаю apache-1.3 в ALT Linux, с другой -- весной выходит серверный 4.0, в пререлизах которого ovz VE делаются из веб-морды.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

27. "apache, nginx, hosting"  
Сообщение от Phil Kulin email on 02-Апр-07, 20:38 
>>Тоже самое с акселераторами - весь смысл keepalive на
>>уровне apache пропадает при наличии того же nginx.
>А высказанные соображения касательно предела касаются одного apache?

Хм? Ну да. Один апач на одном сервере. Целерончик что ли у меня тогда был 2.4GHz...

>>когда я додумаю, слово "хостинг" будет странным понятием из прошлого
>В смысле виртуальный?

Да. Он уже есть "паровой автомобиль", просто люди ещё об этом не знают.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

22. "Модифицированный Apache с разделением привилегий для виртуал..."  
Сообщение от Дмитрий Котеров email on 02-Апр-07, 20:06 
При наличии nginx также практически пропадает вероятность, что вы - хостер, а не отдельный крупный проект с единственным пользователем httpd, которому и стандартного апача вполне достаточно. :-)
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

24. "Модифицированный Apache с разделением привилегий для виртуал..."  
Сообщение от Michael Shigorin email on 02-Апр-07, 20:16 
>При наличии nginx также практически пропадает вероятность, что вы - хостер, а
>не отдельный крупный проект с единственным пользователем httpd, которому и стандартного
>апача вполне достаточно. :-)
Ну почему, я вот -- хостер (специфический -- бесплатно хостим проекты free software), и существованию/работе nginx очень даже рад. ;-)
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

25. "Модифицированный Apache с разделением привилегий для виртуал..."  
Сообщение от Phil Kulin email on 02-Апр-07, 20:32 
>  При наличии nginx также практически пропадает вероятность, что вы - хостер

Мда? :) Странно, был в top10 виртуальных хостеров, когда на всём хостинге nginx внедрил... Он сейчас акселератором у большинства стоит. Зело полезная штука на непредсказуемых нагрузках.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

30. "Модифицированный Apache с разделением привилегий для виртуал..."  
Сообщение от eSupport.org.ru on 03-Апр-07, 08:20 

>Мда? :) Странно, был в top10 виртуальных хостеров, когда на всём хостинге
>nginx внедрил... Он сейчас акселератором у большинства стоит. Зело полезная штука
>на непредсказуемых нагрузках.


Ага. И гордо демонстрирует 50x'ую ошибку - апстрим сдох, целуйте фикус и поливайте бабушку :)

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

31. "Модифицированный Apache с разделением привилегий для виртуал..."  
Сообщение от Phil Kulin email on 03-Апр-07, 10:26 
>>Мда? :) Странно, был в top10 виртуальных хостеров, когда на всём хостинге
>>nginx внедрил... Он сейчас акселератором у большинства стоит. Зело полезная штука
>>на непредсказуемых нагрузках.
>Ага. И гордо демонстрирует 50x'ую ошибку - апстрим сдох, целуйте фикус и
>поливайте бабушку :)

Да и замечательно. Это намного лучше, чем демонстрация не имеющих художественной ценности песочных часов. Это 5xx-фобия меня всегда удивляла. Чёткая ошибка против неясного ожидания...

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

32. "Модифицированный Apache с разделением привилегий для виртуал..."  
Сообщение от Michael Shigorin email on 03-Апр-07, 11:35 
>Ага. И гордо демонстрирует 50x'ую ошибку - апстрим сдох
А нектррые, междпррочим, ещё и monit выписывают... :)
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

19. "Модифицированный Apache с разделением привилегий для виртуал..."  
Сообщение от вуглускр on 02-Апр-07, 16:29 
>Нет, неправильно. Отличия от варианта пятилетней давности:
>1. Используется стандартный fork, а не vfork/rfork. Т.е. память не шарится между ребенком и родителем => секьюрность не хромает (невозможно даже через переполнение буфера влезть в рутового родителя). Кроме того, лучшая совместимость с не-Линуксами.
Означает ли это что он памяти жрет еще больше чем просто апач? Ж8-О
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

21. "Модифицированный Apache с разделением привилегий для виртуал..."  
Сообщение от Дмитрий Котеров email on 02-Апр-07, 20:03 
Читайте маны по fork, ключевые слова "copy on write".
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "Модифицированный Apache с разделением привилегий для виртуал..."  
Сообщение от Аноним on 02-Апр-07, 10:31 
http://packages.debian.org/unstable/net/apache2-mpm-itk
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

6. "Модифицированный Apache с разделением привилегий для виртуал..."  
Сообщение от Phil Kulin email on 02-Апр-07, 10:37 
Очень внушительное хорошее и подробное описание...
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

7. "Модифицированный Apache с разделением привилегий для виртуал..."  
Сообщение от winamp on 02-Апр-07, 10:46 
действительно, а чем это лучше, чем apache2 с mpm-itk?
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

14. "Модифицированный Apache с разделением привилегий для виртуал..."  
Сообщение от Дмитрий Котеров email on 02-Апр-07, 12:37 
То, что сразу бросается в глаза в исходниках, - mpm-itk создает дочерние процессы синхронно, а dkLab Apache - асинхронно (впрочем, первый можно доработать так, чтобы он тоже создавал детей асинхронно). Возможно, есть и другие существенные отличия, я не знаю. Если кто-то увидит - пишите сюда.
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

16. "Модифицированный Apache с разделением привилегий для виртуал..."  
Сообщение от гость email on 02-Апр-07, 13:16 
>То, что сразу бросается в глаза в исходниках, - mpm-itk создает дочерние
>процессы синхронно, а dkLab Apache - асинхронно (впрочем, первый можно доработать
>так, чтобы он тоже создавал детей асинхронно). Возможно, есть и другие
>существенные отличия, я не знаю. Если кто-то увидит - пишите сюда.
>

Как обстоят дела с модулем user_dir, который "управляет" домашними каталогами владеьцев?
Коих (владельцев) может быть гораздо больше чем вирт.хостов.

Как обстоят дела владельцами, которые не пользователи данной юникс-системы, а например из LDAP?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

8. "Модифицированный Apache с разделением привилегий для виртуал..."  
Сообщение от _Kuzmich email(??) on 02-Апр-07, 11:17 
Спасибо за mpm-itk, буде пробовать.
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

9. "Модифицированный Apache с разделением привилегий для виртуал..."  
Сообщение от аноним on 02-Апр-07, 11:36 
mpm-itk тормозит, что не намного лучше простого cgi.
fastcgi выигрывает в пару раз
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

10. "Модифицированный Apache с разделением привилегий для виртуал..."  
Сообщение от Аноним on 02-Апр-07, 11:54 
>mpm-itk тормозит, что не намного лучше простого cgi.
>fastcgi выигрывает в пару раз

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

Как я понял dkLab патч заставляет дочерние процессы обрабатывать запрос работая под root. Нет в жизни счастья.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

11. "Модифицированный Apache с разделением привилегий для виртуал..."  
Сообщение от Phil Kulin email on 02-Апр-07, 12:06 
Под root работает только начальная дочка. Обработка уже идёт под пользователем. Не вижу ничего страшного. Основной процесс апача тоже под root работает и никого это не пугает. Естественно, есть небольшое отличие в том, что здесь владелец назначается динамически, но несколько проверок в код дают определённую уверенность.
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

12. "Модифицированный Apache с разделением привилегий для виртуал..."  
Сообщение от q email(??) on 02-Апр-07, 12:12 
Зачем под рутом?
Достаточно под рутом открыть сокеты 80 и 443 и потом понизить привилегии, chroot, fork, и новые непривилегированные дочерние процессы. Тогда вообще не будет рутовских процессов (только на момент запуска)
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

17. "Модифицированный Apache с разделением привилегий для виртуал..."  
Сообщение от si on 02-Апр-07, 14:18 
главная опасность это разбор заголовков под рутом, если тут ошибиться можно получить remote root.
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

26. "Модифицированный Apache с разделением привилегий для виртуал..."  
Сообщение от Phil Kulin email on 02-Апр-07, 20:35 
>главная опасность это разбор заголовков под рутом, если тут ошибиться можно получить
>remote root.

Не давайте рута ни при каких обстоятельствах. Все карты в руках - перед setuid проверяйте на кого setuid делаете.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

28. "Модифицированный Apache с разделением привилегий для виртуал..."  
Сообщение от si on 02-Апр-07, 22:34 
причем ту давайте/ не давайте, я несколько о другом

тот child который разбирает заголовки, ищет какой это vh и делает set*id() работает под рутом. заголовки он получает от клиента, следовательно если будет ошибка в коде разбора заголовков, то потенциально удаленно можно получить рута. кстати упомянутый вами master процесс иметь от рута вполне безопасно потому что он с внешним миром никак не связал и удаленно его уронить намного сложнее.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

18. "OpenNews: Модифицированный Apache с разделением привилегий д..."  
Сообщение от FatBastard on 02-Апр-07, 16:00 
а чем это отличается от mod_suid?
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

23. "OpenNews: Модифицированный Apache с разделением привилегий д..."  
Сообщение от Дмитрий Котеров email on 02-Апр-07, 20:08 
Тем, что не нужно ставить модуль ядра. А также тем, что не нужно молиться, чтобы какое-нибудь переполнение буфера в mod_php не заставило выполниться setuid-функции.
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

29. "Модифицированный Apache с разделением привилегий для виртуал..."  
Сообщение от sargio (ok) on 02-Апр-07, 23:39 
А может еще добавить что-нить вроде DocumentChroot или нафиг оно?
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

33. "Модифицированный Apache с разделением привилегий для виртуал..."  
Сообщение от Дмитрий Котеров email on 03-Апр-07, 13:12 
Я считаю, что "нафиг оно". Потому что замучаешься для chroot-а окружение готовить и потом за ним следить. В него же должны войти все утилиты хостинга - perl там, python и т.д. А разделение прав на уровне пользователей в Unix и так работает прилично, без всякого chroot-а.

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

По поводу разбора заголовков под рутом - там достаточно простой код в апаче, вероятность того, что за 5 лет в нем появилась уязвимость, достаточно маленькая. Так что тут просто некуда деваться - все остальные патчи и модули тоже под рутом разбирают заголовки (за исключением разве что тех, что работают через модуль ядра, но у них свои тараканы с setuid-функциями).

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

34. "Модифицированный Apache с разделением привилегий для виртуал..."  
Сообщение от Gregory Veritikov on 31-Дек-07, 09:24 
> Что касается виртуального хостинга - я вот тоже последние несколько лет думал,
> что это "паровая машина", которая скоро канет в лету

все это реально, вот делают же nginxhosting.com

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру