Вы можете попробовать написать правило udev, чтобы дать дополнительным жестким дискам достаточно уникальные имена.
Другая идея: всякий раз, когда вы можете сформулировать требование безопасности: «Дело не в том, кто это делает, а в том, как они это делают», вы говорите о принудительном применении типов, и в большинстве дистрибутивов Linux TE делается на уровне MAC. Большая часть моего опыта работы с MAC связана с "SELinux"
Вы не можете заблокировать его на уровне DAC, иначе вы не сможете выполнить ввод-вывод на устройстве (не обязательно сбой DAC в качестве модели безопасности, просто текущая политика DAC основана исключительно на идентификации, поэтому все программы работающие под определенным именем получают одинаковые права без дополнительного административного выражения). Можно заблокировать его на уровне MAC, чтобы обычные компоненты пользовательского пространства не могли ничего сделать с файлом блока, но ваши корневые утилиты и некоторые части платформы могут это сделать. На Fedora это уже в некотором роде, когда блочные устройства отображаются с типом SELinux fixed_disk_device_t
и grub, bootloader_exec_t
увидев следующий пример:
[root@localhost ~]# ls -lhZ $(which grub2-install)
-rwxr-xr-x. root root system_u:object_r:bootloader_exec_t:s0 /sbin/grub2-install
[root@localhost ~]# ls -lhZ /dev/sda
brw-rw----+ root disk system_u:object_r:fixed_disk_device_t:s0 /dev/sda
[root@localhost ~]# sesearch --allow | egrep bootloader | grep fixed
allow bootloader_t fixed_disk_device_t : lnk_file { read getattr } ;
allow bootloader_t fixed_disk_device_t : chr_file { ioctl read write getattr lock append open } ;
allow bootloader_t fixed_disk_device_t : blk_file { ioctl read write getattr lock append open } ;
[root@localhost ~]#
Принимая во внимание, что dd
есть обычная метка bin_t:
[root@localhost ~]# ls -lhZ $(which dd)
-rwxr-xr-x. root root system_u:object_r:bin_t:s0 /bin/dd
bin_t
(очевидно) все еще может писать на блокирующие устройства, но создание нового типа контекста файла для fdisk
и dd
и написание правила selinux для запрета доступа нового типа fixed_disk_device_t
не должно быть слишком сложным. Вам просто нужно сделать так, чтобы обычные пользовательские роли не могли этого сделать, но пользователи с этим sysadm_t
могут это сделать, затем не забудьте просто сделать newrole -r root:sysadm_r
перед тем, как пытаться переразметить диск или выполнить перезапись dd
на блочном устройстве (которое не должно это будет огромная сделка, так как ты не бегаешь fdisk
каждый день целый день).
Возможно, больше работы, чем вы искали, но TE - это механизм, который решает общую проблему, с которой вы сталкиваетесь. Лично udev
правило, наверное, ты самая безопасная ставка. Я упоминаю о TE только в том случае, если вы заинтересованы в решении более широкого круга задач, подобных этому.