Potresti provare a scrivere una regola udev per dare ai dischi rigidi supplementari nomi sufficientemente univoci.
Un'altra idea: ogni volta che puoi definire un requisito di sicurezza come "Non è chi lo sta facendo, è come lo stanno facendo" stai parlando dell'applicazione del tipo, e nella maggior parte delle distro Linux TE viene fatto a livello MAC. Gran parte della mia esperienza MAC è con "SELinux"
Non è possibile bloccarlo a livello di DAC, altrimenti non si sarebbe in grado di eseguire I / O sul dispositivo (non necessariamente un fallimento del DAC come modello di sicurezza, è solo la politica DAC corrente è basata esclusivamente sull'identità, quindi tutti i programmi in esecuzione con una determinata identità ottenere diritti identici senza alcuna ulteriore espressione amministrativa possibile). Il blocco a livello MAC può essere effettuato in modo che i normali componenti dello spazio utente non possano fare nulla con il file di blocco, ma le tue utilità di root e alcune parti della piattaforma possono farlo. Su Fedora questo è già il caso con i dispositivi a blocchi mostrati con il tipo SELinux di fixed_disk_device_t
e grub che bootloader_exec_t
vedono il seguente esempio:
[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 ~]#
Considerando che dd
ha un'etichetta bin_t normale:
[root@localhost ~]# ls -lhZ $(which dd)
-rwxr-xr-x. root root system_u:object_r:bin_t:s0 /bin/dd
bin_t
(a quanto pare) può ancora scrivere per bloccare i dispositivi ma la creazione di un nuovo tipo di contesto di file per fdisk
e dd
e la scrittura di una regola selinux per impedire l'accesso al nuovo tipo fixed_disk_device_t
non dovrebbe essere troppo difficile. Avresti solo bisogno di renderlo così i ruoli utente regolari non possono farlo ma gli utenti con sysadm_t
possono farlo, quindi ricorda di fare solo un newrole -r root:sysadm_r
prima di provare a ricomporre il disco o fare un dd
dispositivo over the block (che non dovrebbe essere un affare enorme dal momento che non è come correre fdisk
tutti i giorni tutto il giorno).
Probabilmente più lavoro di quello che stavi cercando, ma TE è il meccanismo che risolve il problema generale in cui ti imbatti. Personalmente, la udev
regola è probabilmente la scommessa più sicura. Cito solo le cose di TE nel caso in cui tu sia interessato a risolvere una serie più ampia di problemi simili a questo.