Приветствую всех, хочу рассказать как решил проблему безопасности у себя.
OS: Solaris 10 x86
Apache: 2.0.5x
mod_php: 4.x
mod_security
-------------------------------------------------------
Задача:
1) Каждый вирт хост должен обслуживаться форкнутым процессом апача под своим UID/GID
2) Каждый форкнутый процесс апача должен быть зачрутен в папке вирт хоста.
3) Апач должен запускаться не от рута а от стандартного пользователя.
4) Внутри chroot'го вирт хоста пхп должен уметь отправлять почту и конектица к mysql.
Был написан свой MPM модуль для апача, проблема запуска апача не от рута решается просто встроенными средствами соляриса, для этого ненужно ни патчей ничего, все просто и быстро.
Для того чтобы пхп скрипт выполняемый в вирт хосте (а процессу делается чрут на "лету") мог отправлять письма был написал простой smtp клиент, ктсати, таким образом можно элегантно решить проблемы спама через скрипты. Т.е. дял каждого вирт хоста создается отдельный мыл акант для отсылки писем вебсервером.
MySQL. пхп ходит к базе на порт, с сокетом тут ясное дело облом.
Итого, запущеный веб шел на поломанном вирт хосте неможет
1) cat /etc/shadow и вопще cat /чтонибуть, в чруте нету _ниодного_бинарника_.
2) Рута получить невозможно в принципе, все работает от пользователей, (особенность соляриса 10 в контейнере юзер неможет создать устройство и т.п. т.е. вменяемый чрут )
3) Невозможно выйти из каталога вирт хоста.
4) Невозможно повредить/просмотреть другие хосты.
И при всем при этом mod_php работает не в safe_mod и ненакладывает подчас жутко ниудобных огранчиений для юзеров желающих использовать распространенные и дырявые скрипты.
Производительность
Конфигурация сервера 2xOpteron 1.6 GHz 800-1300Mb _USED_ RAM (на 15 высоконагруженных сайтов - одновременно примерно 250-300 On-Line юзеров.)
Total: 568 processes, 726 lwps, load averages: 0.91, 0.82, 0.73
В данный момент все это работает уже как пол года на веб сервере с нагрузкой ~15 000-25 000 уникальныйх посетителей в _сутки_ (примерно 2-2.3ТБ трафика в месяц).
Если есть желающие потестировать
1) У вас должен быть Solaris 10 x86
2) Исходники я не предоставляю (возможно позже, после аудита кода на безопасность), пока только скомпилированную версию.
e-mail:
[email protected]