![]() |
mod_security chrooting Apache 2.2.* trouble
Кто сталкивался с необходимостью загнать апач в chroot окружение, тот меня поймет.
Если использовать системные средства (chroot, jail), то гемороя ровно в два раза больше, нежели при использовании SecChrootDir (директива mod_security). Убедился на собственном опыте c Apache 1.37.*. Но времена первого апача уходят и возникла необходимость перехода на Apache 2.2.* с которым проблем оказалось больше. Устанавливаем апач, устанавливаем mod_security, конфигурируем. Стартуем апач, смотрим localhost и видим It's work! Всё замечательно, но: Цитата:
|
Выкладывай конфиги...
|
>>[Tue Nov 27 17:41:15 2007] [crit] (2)No such file or directory: mod_rewrite: could not init rewrite log lock in child
я так понимаю модуль сообщает о невозможности записи в лог файл. почему так происходит? >>для ясности скажу что /usr/local/etc/apache22 есть симлинк на /chroot/apache/usr/local/etc/apache22 судя по ошибкам мне кажется ты сделал ровно наоборот:) тем не менее, делать символическую ссылку из недоступного, после chroot, каталога в новый нелепо. симлинк это всего лишь файл с именем файла на который он ссылается и атрибутом того, что он не есть непосредственный файл, а симлинк:) поэтому каталог так же будет недоступен: если уж и делать, то жесткую ссылку (man ln). только вроде на каталог ее сделать не удастся.. вообще тут достаточно проблем, связанных с ограничением апача, например мне будет интересно знать как ты будешь с таким апачем запускать скрипты и тд ну не считая тупой установки всего в /chroot :) зачем тебе апач так "запирать"? |
Цитата:
Цитата:
Цитата:
Цитата:
Специфика такая.. Для запуска использую симлинк, чтобы апач запускался уже в чрут-окружении, то есть мне даже /rc.d/apache22 по идее не надо править. И ничего нет плохого в том, что два или более пути ведут в одно место. То что из чрута просится в /usr/local/etc/apache22 и то что из реальной системы просится туда же попадают в одно место. Гланое чтобы в обратную сторону такого эффекта не было ;) Симлинк для того и сделан чтобы не было конфликтов. Подчеркиваю, что вся эта связка с первым апачем себя прекрасно чувствовала и работала без каких-либо нареканий. |
>>Скажу больше, если rewrite_module ZaCoмментировать то ошибка исчезает. Как от неё избавиться??
ну наверное он не может сделать вызов flock на файл логов, тк файла нет) путь к файлу задается через rewritelog. про ссл в гугле посмотри, я думаю аналогично:) >>Тут самое интересное) Если апач так не "запереть", то получим практически >>свободный серф по файловой системе сервера с правами на чтение (FreeBSD в >>данном случае, права по умолчанию при установке на большинстве файлов 755) а чего? это архитектура системы такая. очень мало людей пока жалуются на такую в общем случае неполноценную систему прав, хотя конечно было бы удобно если в следующих дистрибутивах как линукс, так и бсд включали нечто вроде selinux. в твоем случае, если хочется делать супербезопасный веб-сервер задача сводится к извращенному построению ОС со своими правами уровня апача, а точнее процесса апача, а учитывая то, что на это способен только рут (ну по-хорошему естественно:), я про setuid, setgid) так выгибаться не стоит. >>Установка всего в /chroot на самом деле далеко не тупая.. я не говорил о бездумности решения загонять апач в чрут, наоборот. я имел ввиду, что, например, если у тебя в планах поддерживать cgi, то тебе придется устанавливать все с --prefix=/chroot/usr/local ну это то еще ладно, а если приложению потребуется вызов внешней утилиты? ясное дело копировать bin глупо, потому что чему-нибудь понадобиться что-нибудь и из lib каталога, короче говоря, так можно проще сделать cp -R * /chroot только это совсем нелепый вариант :) так я и спрашиваю, как ты собираешься после чрут организовавыть доступ к тому что было? а не проще ли вообще в чрут не загонять? хотя естественно, если цги не требуется это почти не нужно.. для пхп-сайта чрут лучшее решение однозначно, только не забудь ln /tmp/mysql.socket /chroot/tmp /chroot/var/log имеется? >>Ну я не знаю как тебе доказать что это работающий симлинк =) да нет, я просто подумал что в чруте у тебя симлинк на /usr/local/etc/apache22) >>Так что man ln не ко мне;) ln -s [куда] [откуда] гг наоборот >>Подчеркиваю, что вся эта связка с первым апачем себя прекрасно чувствовала и работала без каких-либо нареканий. если у тебя посещаемость не вот какая огромная, то оставь первый.. |
и все таки интересно в чем было решение, если оно конечно было найдено...
|
Конечно оно было найдено. Опытным путем выяснилось что Апач 2.2 имеет совсем другую модель инициализации модулей. Значит по текстам ошибок..
Цитата:
Цитата:
Теперь ee /usr/local/etc/apache22/httpd.conf Ищем строчку с httpd-ssl.conf и раскоментируем. Всё отлично.. Там по умолчанию все пути под нашу картину заточены. Единственное, в etra/httpd-ssl.conf можно по желанию определить действие на запрос ввода PASSPHRASE. 100% работает на FreeBSD 6.2. А мне Егорыч+++ на канале рассказывал про cd /usr/ports/www/apache22; make secure; =) Это на первом апаче было или даже для порта Apache-SSL ;) Не суть =) Едем дальше. Цитата:
На тот момент основной задач было загнать всё в чрут.. mod_security не спас, системный chroot также отказался всё это приютить.. Очередь дошла до mod_chroot найденного в портах cd /usr/ports; make search name=chroot; Вот так и познакомились =) Поставил, с опытом предыдущих ошибок всё заработало быстро... Осталась лишь: Цитата:
Цитата:
Код:
#ifndef REWRITELOG_DISABLEDВот и всё. Имею чрут, всё работает, и хакеры целые и сервер доволен ;) PS. В асю прислали: - Что тяжелее - килограмм земляники или килограмм гвоздей? - Тяжелее будет высрать гвозди (с)sql.ru |
| Время: 13:45 |