Рейтинг:0

Небезопасная конфигурация Apache + mod_userdir

флаг de

TL;DR: Как я могу включить mod_userdir безопасным способом? (имеется в виду: каждый пользователь должен иметь возможность создавать и обслуживать свой контент в ~/public_html, но им не должно быть разрешено читать контент друг друга или напрямую - кот /home/userX/public_html/файл- ни через функции PHP (file_get_contents('/home/userX/public_html/файл'))

Подробности: Я настроил Apache с mod_userdir, чтобы предложить своим пользователям возможность обслуживать их содержимое, удаляя файлы в их папке ~/public_html. Чтобы защитить доступ к файлам и избежать того, чтобы любой пользователь мог читать чужие файлы, я настроил следующие разрешения:

/home/userA user.user drwx--x--x (711)  
/home/userA/public_html user.user drwxrwx--x (771)

я добавил www-данные для каждой группы пользователей: usermod -a -G пользовательские www-данные (также может работать создание группы и добавление всех пользователей, включая www-данные, к нему)

Вся конфигурация работает как положено. Любой пользователь может получить доступ к его содержимому с https://server/~user и не может читать чужие файлы:

userA@ubuntu:/home$ cat userB/public_html/index.php 
cat: userB/public_html/index.php: Отказано в доступе

Все идет нормально. Но проблема в том, что, поскольку Apache работает как www-данные и он имеет групповой доступ к любому файлу внутри /home/*, любой пользователь может создать файл PHP для чтения чужого контента, используя такие функции, как исполнитель, система, file_get_contents, и т.д.

Я знаю, что могу запретить выполнение таких функций, добавив их в отключить_функции заблокировать php.ini но я вижу в этом патч, а не решение. Поэтому мне кажется, что должен быть другой, более безопасный способ настройки этой конфигурации Apache с поддержкой userdir. Я искал способ сделать это правильно, но не нашел правильного решения.

Alex avatar
флаг us
Может стоит перенести этот вопрос на форум по информационной безопасности? https://security.stackexchange.com/
Juanan avatar
флаг de
Дать согласие. Я не знаю, могу ли я сам переместить вопрос или у меня должно быть больше очков репутации, чтобы сделать это?
Alex avatar
флаг us
Если вы считаете, что это хорошая идея, отметьте свой пост, как описано здесь: https://meta.stackexchange.com/questions/184657/how-do-i-transfer-this-question-asked-on-stack-overflow-to -the-math-stack-exchan

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.