Назад | Перейти на главную страницу

Разрешения веб-сервера Linux - передовой опыт

На частном сервере с одним веб-сайтом есть ли причина, по которой файлы / каталоги в / var / www не могут принадлежать группе www-data?

Я понимаю, что риски безопасности с www-данными, имеющими доступ для записи, возникают только в том случае, если у вас есть несколько веб-сайтов, работающих на одном компьютере.

Я написал простой скрипт для своего сайта WordPress. Этот скрипт предоставляет Apache доступ на запись только к тому, что ему нужно для записи. Все остальное в корневом веб-каталоге доступно только для чтения. Я думаю, что это хороший шаг к более безопасному сайту, и его следует практиковать.

#!/bin/bash

PATH=/bin:/usr/bin
WEBROOT="/var/www/www.example.com"

UPLOADS="${WEBROOT}/wp-content/uploads"

chown -R nobody:nogroup ${WEBROOT}
find ${WEBROOT} -type d -exec chmod 0555 {} \;
find ${WEBROOT} -type f -exec chmod 0444 {} \;

chown nobody:www-data ${WEBROOT}/sitemap.xml ${WEBROOT}/sitemap.xml.gz
chmod 0464 ${WEBROOT}/sitemap.xml ${WEBROOT}/sitemap.xml.gz

chown -R nobody:www-data ${UPLOADS}
find ${UPLOADS} -type d -exec chmod 2575 {} \;
find ${UPLOADS} -type f -exec chmod 0464 {} \;

Применяется принцип наименьших привилегий. Предоставляйте пользователям только те права, которые им нужны, и не более того.

В этом случае, если apache обслуживает только страницы, не дайте пользователю acct прав на редактирование. Возможные риски включают: изменение содержимого файла или загрузку нового; добавление исполняемого кода в файлы и т. д. Эти риски существуют независимо от того, является ли это одним или несколькими сайтами. Если приложению необходимо отредактировать конкретный файл, ограничьте изменения разрешений для этого файла.

Я не понимаю, почему бы и нет. Если есть один сайт, это должно быть нормально. Но учтите, что вы можете разрешить только чтение некоторым файлам. (хорошо, если им нужен доступ для записи :))

Даже если у вас только один веб-сайт, скомпрометированный пользователь apache позволит хакеру изменить файлы под /var/www если папка доступна для записи пользователем apache.