РЕДАКТИРУЙТЕ №2 23 липня 2015 року: шукаєте нову відповідь, яка визначає важливий елемент безпеки, пропущений у нижченаведених налаштуваннях, або може дати підстави вважати, що все охоплено.
EDIT № 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.
Чи є ще щось, щоб переконатися в тому, щоб зробити чи знати?
EDIT 20 липня 2015 року: люди подали кілька хороших альтернативних рішень, які загалом цінні, але зауважте, що це питання спрямоване лише на безпеку спільної установки Apache. Зокрема, є щось, що не висвітлено вище, що могло б дозволити одному сайту отримати доступ до файлів іншого сайту або якось компрометувати інші сайти?
Дякую!