Ограничьте запуск PHP только в фактической папке и подпапках

У меня есть несколько веб-сайтов, размещенных в одной папке public_html на моем сервере Linux. Я хочу, чтобы каждая папка не имела доступа к другим папкам, а включала только некоторые определенные файлы.

Вот структура моего сервера:

-> public_html
---> site1 folder
---> site2 folder
---> site3 folder
---> common scripts folder

Если, например, хакер взломает нужный мне сайт2, он не сможет просмотреть содержимое папки public_html или получить доступ и запустить сценарии из других папок. Но в то же время мне также нужно, чтобы, например, site2 мог включать и запускать некоторые определенные файлы, включенные в папку «общие сценарии».

Можно ли добиться этого только с помощью правила htaccess?

Спасибо за помощь.


person Pinonirvana    schedule 10.12.2019    source источник
comment
Что именно вы подразумеваете под хакерскими взломами site2? Получили ли они логин пользователя ssh? Они получили ваши учетные данные БД? Воспользовались XSS-уязвимостью?   -  person Patrick Q    schedule 10.12.2019
comment
Помогает ли добавление Options -Indexes в ваш .htaccess файл, присутствующий в public_html?   -  person nice_dev    schedule 10.12.2019
comment
@PatrickQ нет, конечно, если хакер получит мой логин пользователя ssh, мне пиздец :-). Я имею в виду, что если пользователь устанавливает скомпрометированный плагин и ему удается установить, например, файл php в одну из этих папок, тогда он фактически может получить доступ ко всему моему серверу... и мне нужно предотвратить это, есть ли решение для ограничения PHP в каким-то образом?   -  person Pinonirvana    schedule 10.12.2019
comment
Вы хотите сказать, что разрешаете пользователям загружать произвольные файлы?   -  person Patrick Q    schedule 10.12.2019
comment
@PatrickQ Если в WordPress есть утечка ... это может произойти очень легко ... вам просто нужно установить скомпрометированный плагин   -  person Pinonirvana    schedule 10.12.2019


Ответы (2)


нет, вы не можете добиться этого только с помощью правила htaccess

все зависит от php handler, если это dso или cgi, то вы не сможете изолировать веб-сайты, простая оболочка php сможет получить доступ ко всем веб-сайтам и их данным.

FCGI, suPHP или PHP-FPM можно использовать для безопасного запуска php с отдельным UID для каждого веб-сайта. .

вы также можете проверить chroot

person ehmad11    schedule 10.12.2019

Во-первых, через htaccess этого не добиться. потому что, если хакер взломает сайт, то этот хакер может контролировать все пространство сервера, где текущая учетная запись пользователя (учетная запись, через которую проходит хакер, например: учетная запись пользователя www) имеет доступ и разрешения.

Если вам нужно полное конкретное решение, создайте несколько пользователей для вашего сервера vps и определите правила доступа и разрешения для каждого пользователя, а также разрешите развертывание их сайтов в соответствующем пользовательском пространстве, например

/home/user1/sites/site1
.
.
/home/user1/sites/site10

/home/user2/sites/site1

Этот вышеприведенный сценарий прост, как сервер, виртуально разделенный и проданный нескольким пользователям. Пример: покупка общего хостинга у godaddy или hostgator, где godaddy виртуально отделяет свой сервер и продает их нескольким пользователям. каждый пользователь может просматривать и получать доступ только к своему собственному пространству и не может получить доступ к пространству других пользователей, даже если они оба находятся на одном облачном сервере.

person Ganeshkumar K    schedule 10.12.2019