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

Стек LAMP, доступ для чтения / записи только к определенным каталогам

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

Проблема, с которой я столкнулся с моим виртуальным хостингом, заключается в том, что некоторые из моих клиентов используют сайты Wordpress, которые иногда не обновляются до последней версии так быстро, как хотелось бы, что делает их уязвимыми для уязвимостей безопасности. Раньше, когда один из этих сайтов Wordpress был скомпрометирован, это затронуло все остальные сайты на моем общем хостинге, включая сайты, не относящиеся к Wordpress.

Я хотел бы как минимум сдержать это, если это произойдет снова. Есть ли способ на одном экземпляре Linux, чтобы у меня было несколько «пользователей» PHP (используя термин очень вольно), каждый с разрешением на чтение и запись не выше корневого каталога веб-сайта?

Я видел предложения по OpenVZ но похоже, что это сильно повлияет на производительность при небольшом выигрыше.

Приносим извинения, если об этом спрашивали раньше - это одна из тех вещей, которые сложно сформулировать достаточно лаконично для поиска в Google, но достаточно очевидно, чтобы кто-то, должно быть, спрашивал то же самое раньше.

Вы можете использовать права доступа к файлам, чтобы изолировать вещи на одной виртуальной машине (экземпляр EC2). У вас могут быть отдельные пулы PHP, и они могут работать как разные пользователи в соответствии с этим DO учебник. Это руководство в значительной степени является руководством к тому, что вам нужно делать, и, вероятно, будет лучше, чем использование ECS.

Вы должны смотреть на экземпляры t2, t2.micro может быть немного маленьким с несколькими пулами, но вам подойдет малый или средний. Вам, конечно, придется провести некоторое тестирование. Вы можете добавить виртуальную память в экземпляр EC2, но у него есть недостатки, особенно потому, что диск находится в сети на экземплярах t2. Другие типы экземпляров имеют локальные диски, экземпляры M3 / C3 предыдущего поколения, но вам, вероятно, лучше всего использовать экземпляры t2 или текущего поколения с достаточным объемом оперативной памяти.

Или посмотрите на Сервис контейнеров AWS EC2, он же управляемый докер. Это позволит вам держать вещи полностью раздельными за счет запуска нескольких копий ресурсоемких приложений, таких как PHP, которые используют тонну памяти. Микроэкземпляр, вероятно, не подойдет для многих контейнеров, но t2.large или подобное, вероятно, подходит.

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

Я размещаю 5 веб-сайтов и MySQL на t2.nano, но иногда у меня заканчивается оперативная память при большом обновлении yum. Возможно, сначала вам подойдет t2.micro, но это зависит от того, сколько у вас пулов PHP - они могут быть довольно интенсивными по памяти. у меня есть руководство по настройке MySQL для использования минимального объема ОЗУ. Начните с t2.micro и службы RDS, обе находятся на уровне бесплатного пользования, так ваша база данных будет работать на отдельном компьютере, что сэкономит оперативную память. Не удивляйтесь, если вам придется увеличить размер экземпляра из-за требований к оперативной памяти.

Обновление из комментария @tero Kilkanen отмечает следующий очень ценный момент

Если вы хотите большего разделения между работниками PHP, вы можете рассмотреть возможность использования функции chroot в PHP-FPM. С chroot каждый процесс PHP может видеть доступ только к каталогам в своем chroot. Однако для его настройки требуется гораздо больше работы, и я не знаю, есть ли какие-либо руководства для этого.