РЕДАКТИРОВАНИЕ № 2 23 июля 2015 г .: Ищите новый ответ, который идентифицирует важный элемент безопасности, пропущенный в приведенной ниже настройке, или может дать основания полагать, что все покрыто.
РЕДАКТИРОВАНИЕ № 3 29 июля 2015 г. Я особенно ищу возможную неправильную конфигурацию, например, непреднамеренное разрешение чего-либо, что может быть использовано для обхода ограничений безопасности или еще хуже, оставляя что-то широко открытым.
Это настройка многосайтового / общего хостинга, и мы хотим использовать общий экземпляр Apache (то есть работает под одной учетной записью пользователя), но с PHP / CGI, работающим как пользователь каждого сайта, чтобы гарантировать, что ни один сайт не сможет получить доступ к файлам другого сайта, и мы хотим убедитесь, что ничего не пропущено (например, если мы не знали о предотвращении атак по символическим ссылкам).
Вот что у меня так далеко:
- Убедитесь, что PHP-скрипты выполняются как учетная запись пользователя и группа Linux на веб-сайте и либо находятся в тюрьме (например, с использованием CageFS), либо, по крайней мере, должным образом ограничены с помощью разрешений файловой системы Linux.
- Используйте suexec, чтобы гарантировать, что CGI-скрипты не могут быть запущены как пользователь Apache.
- Если вам нужна поддержка включения на стороне сервера (например, в файлах shtml), используйте
Options IncludesNOEXEC
для предотвращения возможности запуска CGI, когда вы этого не ожидаете (хотя это не должно вызывать особых опасений при использовании suexec). - Обеспечьте защиту от атак по символическим ссылкам, чтобы хакер не смог обмануть Apache, предоставив файлы другого веб-сайта в виде открытого текста и раскрывая доступную для использования информацию, такую как пароли БД.
- Настройте
AllowOverride
/,AllowOverrideList
чтобы разрешить только те директивы, которые хакер не мог использовать. Я думаю, что это меньше беспокоит, если вышеуказанные пункты выполнены правильно.
Я бы пошел с MPM ITK, если бы он не был таким медленным и не работал от имени root, но мы специально хотим использовать общий Apache, но убедитесь, что это сделано безопасно.
Я нашел http://httpd.apache.org/docs/2.4/misc/security_tips.html , но он не был исчерпывающим по этой теме.
Если это полезно знать, мы планируем использовать CloudLinux с CageFS и mod_lsapi.
Есть ли что-нибудь еще, чтобы убедиться, что делать или знать?
РЕДАКТИРОВАТЬ 20 июля 2015: Люди представили несколько хороших альтернативных решений, которые в целом ценны, но, пожалуйста, обратите внимание, что этот вопрос нацелен только на безопасность общей установки Apache. В частности, есть ли что-то, что не было рассмотрено выше, что могло бы позволить одному сайту получить доступ к файлам другого сайта или как-то скомпрометировать другие сайты?
Спасибо!