Запуск нескольких сайтов на LAMP с безопасной изоляцией - PullRequest
2 голосов
/ 21 октября 2009

Я администрировал несколько серверов LAMP с 2-5 сайтами на каждом. Они в основном принадлежат одному и тому же пользователю / клиенту, поэтому проблем с безопасностью нет, за исключением атак через уязвимых демонов или скриптов. Я строю свой собственный сервер и хотел бы начать хостинг нескольких сайтов. Моя первая забота ... ИЗОЛЯЦИЯ. Как я могу избежать, чтобы скрипт c99 мог испортить все виртуальные хосты? Кроме того, я должен препятствовать тому, чтобы c99 мог писать / читать каталоги других сайтов? (Легко «спасти» файл config.php с другого сайта, а затем войти в базу данных mysql Мой сервер - это VPS с 512M, работающим на 1G. Среди бесплатных менеджеров хостинга есть какой-нибудь маленький, который работает для моего VPS? (что может быть совместимо с подходом безопасности, который я хотел бы иметь) В настоящее время я не планирую размещать более 10 сайтов, но я бы не согласился с тем, что клиент / хакер может переходить в нежелательные каталоги или, что еще хуже, запускать вредоносные сценарии. Управление FTP будет в порядке. Я не хочу усложнять ситуацию с изоляцией SSH.

Какова лучшая практика в этом случае? В основном, что делают хостинговые компании, чтобы хорошо выспаться? :)

Большое спасибо! David

Ответы [ 3 ]

8 голосов
/ 30 октября 2009

вы должны использовать директиву PHP open_basedir в вашей конфигурации Apache для каждого виртуального хоста, добавив следующую строку:

<VirtualHost x.x.x.x:80>
ServeName www.example.com
DocumentRoot /path/to/your/virtualroot
...
... usual stuff ...
...
php_admin_value open_basedir /path/to/your/virtualroot:/some/other/path
</VirtualHost>

это ограничит доступ всех ваших процессов PHP только к этому (или этим) пути в вашей файловой системе. Открытие файлов в других местах будет запрещено, даже с помощью chdir () или с помощью ссылок Symbolik.

Вы также можете предоставить эту директиву во время выполнения с помощью ini_set () начиная с PHP5.3.0, но imho лучше применить это непосредственно в ваших файлах vhosts.conf.

Руководство по PHP

1 голос
/ 06 ноября 2009

Для максимальной изоляции рассмотрим упрощенную виртуализацию (OpenVZ в Linux, FreeBSD jails или аналогичные). Он похож на обычные виртуальные машины, но разделяет ядро ​​и поэтому не несет накладных расходов на полную виртуализацию. Облегченные виртуальные машины также могут совместно использовать дисковое пространство вместо использования каждого отдельного образа диска и могут использовать отдельные копии одних и тех же файлов. Недостатком является то, что облегченные виртуальные машины всегда работают с одним и тем же ядром, то есть вы не можете запустить одну ОС внутри другой, что, по-видимому, не проблема для вас.

1 голос
/ 28 октября 2009

Проверьте ITK MPM для Apache 2.x: http://mpm -itk.sesse.net /

Я использую его на нескольких загруженных сайтах уже пару лет без проблем.

...