Ежели Апач ломают, например через дырявый скрипт, то
1. Получают доступ ко всем сервисам, которые работают от именя nobody.
2. Получают доступ к домашним каталогам пользователей (мало ли какие у них там документы не для инета интересные лежат).
=>
1. Заводим для Апача собственного узера и группу, никого больше в эту группу не включаем. Дальше я беру юзера www и группу www.
2. Делаем ему home, например:
drwxr-x--x www www /home/www
Обрати внимание на права для "остальных" - человек сложет зайти в подкаталог, но не сможет посмотреть, какие вообще сайты здесь хостятся.
3. Там делаем по каталогу для сайта:
drwxr-x--- user1 www /home/www/site1.ru
Т.е. писать туда может только владелец, но Апач может читать.
4. Создаем внутри каталоги:
drwxr-xr-x user1 users /home/www/site1.ru/cgi-bin - скрипты
drwxrwxrwx user1 users /home/www/site1.ru/data - доп. информация для скриптов
drwxr-xr-x user1 users /home/www/site1.ru/etc - пароли для сайта
drwxr-xr-x user1 users /home/www/site1.ru/html - DocumentRoot сайта
drwxr-xr-x root www /home/www/site1.ru/logs - логи
Если скрипты запускаются от имени Апача, то ставим разрешение на запись на некоторые каталоги (в моем примере data - куда писать собираемся). При этом думаем, как не пустить эти скрипты в каталоги остальных сайтов - оптимального решения еще нет (на этом сайте многократно обсуждалось).
Скрипты и пароли вынесены из документов, поэтому через http к ним доступа нет (лучше не доверять лишний раз простому апачавскому запрету на просмотр - его когда-нибудь можно и забыть написать).
Юзер может читать логи, но не может их удалить или изменить - чтоб трафик можно было считать по ним.
5. На каталог юзера ставим 700
drwx------ user1 www /home/user1
6. Делаем ему линк на сайт:
lrwxr-xr-x user1 users /home/user1/site1.ru -> /home/www/site1.ru/
7. Апач chroot-им в /home/www - если уж совсем безопастностью озабочены :)