Это действительная проблема. Если они не разделены должным образом, уязвимость на одном сайте затронет их все.
1) Первое, что вам нужно сделать, это использовать suPHP , который заставляет приложение запускаться с правами конкретного пользователя. Эта учетная запись пользователя не должна иметь доступ к оболочке (/bin/false).
2) Все три каталога приложений должны быть chown user -R /home/user/www/
и chmod 500 -R /home/user/www/
Последние два нуля в chmod означают, что никакие другие учетные записи не имеют доступа к файлам. Это обеспечивает только права на чтение и выполнение, идеально, если права на запись запрещены для всего веб-корня.
3) Все три приложения должны иметь отдельную базу данных MySQL и отдельные учетные записи пользователей MySQL. Эта учетная запись пользователя должна только иметь доступ к своей собственной базе данных. Эта учетная запись не должна иметь привилегий GRANT
или FILE
. Где привилегия FILE
является самой опасной привилегией, которую вы можете дать учетной записи пользователя MySQL, поскольку она используется для загрузки бэкдоров и чтения файлов. Это защищает от внедрения sql на одном сайте, позволяя злоумышленнику читать данные для всех сайтов.
После того, как будут предприняты эти три шага, если один сайт, где будет взломан, остальные 2 не будут затронуты. Вы должны запустить сканер уязвимостей, такой как Sitewatch (коммерческий, но есть бесплатная версия) или Skipfish (с открытым исходным кодом). После сканирования приложения запустите phpsecinfo и измените файл php.ini, чтобы удалить как можно больше красного и желтого. Модификация вашего php.init может обмануть сканеры уязвимостей, но часто все еще существует недостаток, чтобы убедиться, что вы исправляете свой код и обновляете все.