ITK это патч к традиционной линуксовой модели Prefork, позволяющий выполнение скриптов с правами пользователя, например в случае с mod_php, с традиционной (не мультиюзерной) моделью, все скрипты выполняются с правами пользователя www-data в Debian или пользователя apache в большинстве случаев, соответственно страдает безопасность сервера, т.к. даже если жестко ограничить функции и open_basedir, это не обеспечит 100% изоляции, права остаются правами, и с традиционной моделью весь код выполняется от apache.
Но интерес к apache2-mpm-itk возникает обычно не из-за вопросов безопасности. А ввиду того, что пользователи сервера Debian+ISPManager теряют владельца на конфиги и компоненты своих CMS при установке оных внутренними CMS-инструментами.
Привожу пошаговый мануал по установке
Итак, инсталляция apache2-mpm-itk на Debian Linux в связке с ISPManager:
Шаг-1. Проверяем положение дел:
Пишем скриптик на php такого вида:
1
|
<?php echo exec ( 'id' ); ?> |
Сохраняем его в id.php и заливаем на сервер, затем выполняем в браузере, результат должен быть примерно такой:
1
|
uid=33(www-data) gid=33(www-data) groups=33(www-data) |
Шаг-2. Устанавливаем готовый бинарник mpm-itk:
1
|
aptitude install apache2-mpm-itk |
Перезапускаем apache:
1
|
/etc/init .d /apache2 restart |
Всё должно пройти гладко, т.к. бинарник apache с itk присутствует в стандартном репозитории начиная с Lenny.
Aptitude предложит удалить конфликтующие пакеты типа Prefork – на всё отвечайте Yes.
Шаг-3. Правим секции virualhost в apache2.conf:
Новые директивы ITK, по сравнению с prefork:
AssignUserID принимает 2 параметра, uid и gid через пробел, соответственно для правильной работы механизма, требуется заменить все вхождения «SuexecUserGroup» на «AssignUserID», в каждом виртуалхосте файла /etc/apache2/apache2.conf.
Шаг-4. Половина дел сделана, проверяем работу:
Снова выполняем наш скрипт id.php и мы уже видим совсем другую картину:
1
|
uid=500(username) gid=502(username) groups=501(mgrsecure),502(username) |
Отлично!
Шаг-5. Добавим в конфиг ISPManager’а строку, чтоб новые аккаунты были правильные:
Собственно выполняем код в шелле:
1
|
echo 'Option ApacheMPM' >> /usr/local/ispmgr/etc/ispmgr .conf && killall ispmgr |
Шаг-6. Старые хвосты.
Не забываем, что на сервере уже куча файлов от имени www-data, неплохо бы им chown username сделать. Например это сессии в папках /var/www/username/data/mod-tmp. Да и сама папка mod-tmp.
Всё, наслаждаемся замечательным решением. Только вот не лишним будет поставить nginx, чтоб увеличить быстродействие нашего сервера, для отдачи статики apache2-mpm-itk не лучший вариант.
Просмотров: 2260