То, что Вы попросили, является хорошей идеей, но на практике может быть очень трудно реализовать.
Нет действительно никакого способа мешать взломщику видеть файлы, которые доступны для веб-сервера..., потому что нападение происходит на пути веб-сервер, Вы не можете блокировать доступ, не делая файлы абсолютно недоступными. Можно защитить другие уязвимые данные в системе путем проверки, что к этому могут только получить доступ определенные группы..., например, удостоверьтесь, что только "почтовая" группа может получить доступ к нашему mailq. Это означает (a) создавать необходимые группы, (b) устанавливать необходимые полномочия файла/каталога и (c) гарантировать что любые демоны, выполненные с корректными учетными данными.
При поиске большего надежного решения можно использовать своего рода легкое решение для виртуализации (например, Контейнеры Linux, http://lxc.sourceforge.net/) для создания виртуальных частных серверов для каждого сайта, но это - и больше времени и интенсивно использующий ресурсы.
Вы могли выполнить каждый веб-сайт как идентификатор отдельного пользователя. Это немного хитро; самое легкое должно выполнить один экземпляр Apache для каждого сайта на определенном порте и затем использование модуля Apache Прокси для делегирования доступа с основного сервера на порте 80. Так как это решение включает один экземпляр Apache на сайт, это также имеет последствия ресурса. Существуют модули, которые позволят Вам выполнить это в единственном экземпляре Apache, видеть http://blog.andreaolivato.net/open-source/running-apache2-virtualhost-with-different-users.html для примера.
Я рекомендовал бы использовать chroot'ed среду с mod_security
. Таким образом, любой компромисс демона Apache (или chroot пользовательские выполнения Apache как) только выставит chroot'ed дерево, не сам весь сервер.
Документация здесь: http://www.modsecurity.org/documentation/apache-internal-chroot.html