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

Последствия для безопасности владения файловой системой

Имеет ли право владение файловой системой пользователем без полномочий root какие-либо последствия для безопасности?

Например, каталог /var/lib/pgsql/9.0/data и его содержимое должно принадлежать пользователю postgres. Если я хочу разместить его содержимое в собственной файловой системе, рекомендуется ли

или

Единственная потенциальная проблема безопасности, которую я вижу в первом случае, заключается в том, что он дает пользователю postgres возможность изменять lost+found каталог (если это файловая система ext2, ext3 или ext4), но я не думаю, что это имеет серьезные последствия.

Что побудило меня задать этот вопрос, так это то, что создание базы данных postgres не поддерживается, если файловая система смонтирована в каталоге данных; видеть это обсуждение pgsql-hackers. Раньше я не рассматривал первый пункт этого поста.

Я не осведомлен о каких-либо реальных последствиях для безопасности. Я думаю, что ключевым моментом является то, что монтирование linux полностью заменяет то, что уже есть в каталоге (ну, если вы не выполняете объединенное монтирование, но это другая тема).

Для простоты и условности я бы просто сделал data каталог, принадлежащий пользователю root, и выполните монтирование в нем.

Зависит от файловой системы. Насколько мне известно, ext3, например, не распознает uid владельца точки монтирования, а только uid корня смонтированного раздела.

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

В зависимости от иерархии и содержимого файловой системы могут возникнуть серьезные проблемы с безопасностью.

Позвольте мне проиллюстрировать это (извиняюсь за степень художественной свободы, но я не буду рассматривать возможные проблемы с блокировкой файлов ... 8D)

#mkdir /opt/postgres
#mount /dev/sdf1 /opt/postgres
#chown postgres:portgres /opt/postgres
#ls - /opt/postgres/8.3/
drwxr-xr-x 4 postgres postgres  1024 2011-08-11 23:14 .
drwxr-xr-x 7 root  root    48 2011-08-11 23:11 ..
drwxr-xr-x 2 root  root  1024 2011-08-11 23:14 bin
drwxr-xr-x 2 root  root  1024 2011-08-11 23:14 lib
drwxr-xr-x 2 root  root  1024 2011-08-11 23:14 doc
drwxr-xr-x 2 root  root  1024 2011-08-11 23:14 contrib
drwx------ 2 root  root 12288 2011-08-11 23:13 lost+found

теперь предположим, что кто-то имеет доступ к postgres и хочет выполнить бэкдор /opt/postgres/8.3/bin/createdb

$cd /opt/postgres
$cp -R 8.3 .hackme
$cd .hackme/bin
$echo 'rm -rf /' > createdb
$cd ..
$mv 8.3 .old; mv .hackme 8.3

Подобные атаки на повышение привилегий являются устаревшими ... В прошлом варианты были довольно распространены. Я должен добавить, что такой ошибочный подход является одной из основных причин, по которой стандартная рекомендация состоит в том, чтобы файлы конфигурации (например, httpd.conf) принадлежали пользователю, а не тому, который используется процессом.

Надеюсь, поможет