Как ограничить доступ к файлам PHP до DOCUMENT_ROOT - PullRequest
3 голосов
/ 19 марта 2012

Можно ли ограничить доступ файла PHP к его корню документа?В основном на сервере моей работы наши домены имеют файловую структуру, такую ​​как:

/home/something/domains/domain1/
/home/something/domains/domain2/
/home/something/domains/domain3/

Прямо сейчас, любой скрипт в домене1 имеет доступ на чтение и запись ко всему в / home / что-то / domains / включая все нашидругие домены.Я хотел бы ограничить доступ к файлу для скрипта в домене 1 только этим доменом.

Сервер размещен с mediatemple и является их сетевым сервисом, поэтому у меня нет доступа с правами root или даже с конфигурацией vhost.Мы можем изменить php.ini, и я знаю, что он предлагает open_basedir, но, похоже, это не решает мою проблему, так как я могу ограничить доступ к файлу только / domians /, а не отдельным доменам.Любая помощь приветствуется.

Что я действительно пытаюсь сделать:

Этот сервер был недавно взломан, и хакеры перезаписывали домены / .htaccess, которые затронули все наши сайты.У нас есть тонны сайтов, и на многих из них много плохого кода.Они загрузили WSO, хакерский бэкдор / оболочку, который дал им полный доступ ко всему.Я не знаю, как они получили доступ, наверное, это было либо из эксплойта Timthumb, одной из миллионов строк плохого кода, либо они просто каким-то образом получили наш пароль FTP.Мы обновили старые Timthumbs, изменили пароль и удалили все плохие файлы, которые мы нашли, но, так как есть хороший шанс, что обнаруженный ими эксплойт все еще находится на сервере, или что мы пропустили какой-то черный ход, я по крайней мере хотел бы ограничить их доступк фактическому домену, который содержит эксплойт или необнаруженный бэкдор.

1 Ответ

3 голосов
/ 19 марта 2012

Моей первоначальной мыслью было установить open_basedir для каждого из виртуальных хостов (даже если вам нужно попросить администратора вашего хоста сделать это за вас), но я сомневаюсь, что это сработает, потому что Я вполне уверен, что внешние команды / команды оболочки, которые выполняются в PHP / скриптах, будут по-прежнему работать с каталогами за пределами обозначенного дерева. .

После более подробного рассмотрения, самый близкий способ настроить вашу установку и получитья хотел бы подумать о том, чтобы настроить учетные записи пользователя в chroot-тюрьме для каждого vhost и заставить ваш веб-сервер использовать эти учетные записи пользователей с помощью механизма, подобного Apache 2 MPM ITK , который я могутолько предполагайте, что у вашего хостинг-провайдера возникнут проблемы с настройкой.

...