Назад | Перейти на главную страницу

Запуск нескольких сайтов на LAMP с безопасной изоляцией

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

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

Огромное спасибо! Дэвид

Купите себе выход из проблемы:
Майкл предлагает использовать VPS, я согласен с этим, но я считаю, что вы сказали, что у вас есть VPS прямо сейчас, вероятно, это уже XEN или OpenVZ. Я никогда раньше не слышал, чтобы кто-то вкладывал VPS.

Поэтому я бы порекомендовал виртуализацию и для хранения вещей, но я думаю, что если у вас много сайтов, вы можете арендовать весь сервер, и запустите на нем OpenVZ или Xen. Затем поместите каждый сайт или группы сайтов в отдельный контейнер. Если вас не беспокоит взаимодействие определенных сайтов друг с другом, поместите их в контейнер и используйте виртуальные хосты, в противном случае предоставьте им их собственную виртуальную машину.

Одна особенность этого метода заключается в том, что вы, вероятно, захотите получить больше IP-адресов, что будет стоить немного дороже. Возможно, вы могли бы что-то сделать с обратными прокси, но это, вероятно, больше проблем, чем того стоит.

Поэтому покупка всей машины и нескольких IP-адресов, вероятно, будет стоить вам дороже. Но я думаю, что это будет дешевле, чем покупать такое же количество VPS. Как вы упомянули, содержание вещей в операционной системе является сложной задачей. В общем, мое решение - просто потратить немного больше на аренду сервера и получение IP-адресов, но, в конце концов, я думаю, что это упростит для вас все.

Вы можете использовать chattr + i против части deface, но это не исправит ошибки php. Типичные функции безопасности php помогут, в худшем случае также возможен chroot.

http://php.net/manual/en/security.php

http://www.hardened-php.net/

Ознакомьтесь с ITK MPM для Apache 2.x: http://mpm-itk.sesse.net/

mpm-itk позволяет вам запускать каждый из ваших виртуальных хостов под отдельным идентификатором uid и gid - короче говоря, скрипты и файлы конфигурации для одного виртуального хоста больше не должны быть доступны для чтения для всех других виртуальных хостов.

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

Более того, он легко доступен в дистрибутивах на основе Debian как apache2-mpm-itk и должен быть доступен и в других.

Существует также более старая альтернатива, Peruser MPM, но она была подвержена ошибкам и ее было труднее настраивать в прошлый раз, когда я проверял.

я хотел бы использовать mod_suexec в Apache и запускать все скрипты как CGI. Это позволяет вам настроить пользователя на запуск, как указано в определениях виртуального хоста. Затем вы можете установить для каждого подкаталога виртуального хоста другого владельца, но ту же группу. Все доступно для группового чтения, но доступно для записи только пользователю. Это не полностью предотвращает злонамеренный просмотр, но имеет большое значение.

Таким образом, сервер Apache работает как (с использованием настроек Debian, насколько я знаю) www-data.www-data, все каталоги виртуального хоста настроены как групповые www-data, но пользователь, основанный на клиенте.

В качестве примечания, я обычно настраиваю виртуальные хосты со следующей структурой каталогов:

vhost1-root
    /html
    /scripts

Вы можете получить там все, что захотите, но Apache указывает на html каталог. Затем, поскольку suexec управляет использованием пользователя, scripts и все остальное может быть в группе, зависящей от клиента, что делает их нечитаемыми для других клиентов. К сожалению, в прошлом я традиционно не использовал suexec, так как мне всегда принадлежали все сайты. Но в целом эта структура хорошо себя зарекомендовала.

Для такого рода приложений я бы серьезно посмотрел на OpenVZ который виртуализирует системы Linux. Это не система виртуальных машин, такая как XEN или Virtualbox, потому что она не имитирует процессор. Вместо этого он создает контейнеры, которые изолируют набор процессов Linux от других процессов, запущенных на машине.

Повышение безопасности Apache Vhost с помощью mpm-itk в RHEL / CentOS 5 http://blog.lystor.org.ua/2010/04/increase-apache-vhost-security-mpm-itk.html