Ограничения файловой системы
Одним важным элементом защиты вычислительной среды являются опции, указываемые при монтировании локальных файловых систем. Причина, по которой создается несколько файловых систем, заключается в раздельном контроле доступа к ним посредством опций команды mount в файле /etc/fstab.
Стандартное содержимое файла /etc/fstab показано ниже. Подробное описание синтаксиса этого файла можно найти в документации.
/dev/hdal / ext3 defaults 1 1 /dev/hda5 /usr ext3 defaults 1 2 /dev/hdbl /home ext3 defaults 1 2 /dev/hda6 /var ext3 defaults 1 2 /dev/hda7 swap swap defaults 0 0 /dev/fdO /mnt/floppy ext3 noauto 0 0 /dev/cdrom /mnt/cdrom iso9660 noauto,ro 0 0 none /proc proc defaults 0 0 |
Ниже описан ряд опций, доступных для выбора в четвертом поле (они же могут быть указаны в строке вызова команды mount с помощью флага -о). Эти опции важны с точки зрения безопасности.
- defaults – устанавливает стандартные параметры монтирования: rw (чтение/запись), suid (разрешается использование битов SUID и SGID), dev (разрешается создавать файлы устройств символьного или блочного доступа), exec (разрешается выполнение программ), auto (разрешается команда mount -a), nouser (монтировать файловую систему может только суперпользователь) и async (асинхронный ввод-вывод);
- nodev – запрещается создавать файлы устройств символьного или блочного доступа;
- nоехес – запрещается выполнять программы и сценарии;
- ro – доступ к файловой системе только для чтения;
- user – файловую систему могут монтировать рядовые пользователи. При этом автоматически включаются опции nоехес, nosuid и nodev, которые можно переопределить явным образом;
- nosuid – не разрешается выполнение программ с установленным битом SUID и/или SGID;
- noatime – нe разрешается обновлять информацию о времени доступа к файлам и каталогам. Эта опция доступна в ядре версии от 2.2 и выше.
Прежде чем инсталлировать систему, нужно подумать, какой доступ необходим пользователям. Тем самым станет понятно, какие файловые системы следует создавать. Исходя из этого следует руководствоваться следующими правилами:
- Начальные каталоги пользователей не должны быть “полигоном” для запуска программ и сценариев с установленным битом SUID. В них не должны храниться файлы устройств символьного и блочного доступа.
- Любая файловая система, каталоги которой доступны для записи не только суперпользователю, должна как минимум иметь установленной опцию nosuid. Одна из таких файловых систем – /var.
- Любая файловая система, запись в которую осуществляется лишь изредка, должна монтироваться в режиме “только для чтения”.
Таким образом, если вернуться к выше описанному файлу /etc/fstab, есть смысл применения правила 2 к файловой системе /var и правила 1 к файловой системе /home. Для удобства пользователей можно добавить опцию user к файловой системе /mnt/cdrom. Это позволит пользователям самостоятельно монтировать дисковод CD-ROM без вмешательства суперпользователя. Дополнительные ограничения, связанные с опцией user, а именно nosuid, noехес и nodev, компенсируют данное послабление.
Предположим, в файловой системе /usr есть подкаталоги /usr/local/bin и /usr/local/lib, которые содержат исполняемые файлы и библиотеки, используемые многими пользователями. Если эти файлы меняются нечасто, можно создать отдельные файловые системы /usr/local/bin и /usr/local/lib, монтируемые с опцией ro. Когда возникнет необходимость внести какие-либо изменения, придется смонтировать файловую систему с опцией rw (возможно, в однопользовательском режиме). Это подтверждает правило, гласящее, что безопасность достигается за счет производительности или удобства работы. Более безопасная версия файла /etc/fstab будет выглядеть так:
/dev/hdal / ext3 defaults 1 1 /dev/hdb4 /usr/local/bin ext3 ro,nosuid 1 2 /dev/hdb9 /usr/local/lib ext3 ro,nosuid 1 2 /dev/hda5 /usr ext3 defaults 1 2 /dev/hdbl /home ext3 noexec,nodev,nosuid 1 2 /dev/hda6 /var ext3 nosuid 1 2 /dev/hda7 swap swap defaults 0 0 /dev/fdO /mnt/floppy ext3 noauto 0 0 /dev/cdrom /mnt/cdrom iso9660 noauto,ro,user 0 0 none /proc proc defaults 0 0 |
познавательно