Linux

保護設備免受 dd 和 fdisk 命令的影響

  • May 27, 2013

我想知道是否有某種方法可以防止某些特定設備成為命令的輸出文件和dd命令的目標fdisk。我目前正在使用這兩個操作在 SD 卡上設置寫入引導載入程序、核心和根文件系統,顯示為/dev/sdd. 我總是有點擔心我會混淆sdd,sdb或者sda因為字母AD靠近鍵盤,我想找到一種方法來防止這種格式的命令:

dd if=/dev/sd[a-zA-Z0-9]* of=/dev/sd[ab]

或者

fdisk /dev/sd[ab]

您可以嘗試編寫 udev 規則來為補充 HDD 提供足夠唯一的名稱。

另一個想法:只要您可以將安全要求表述為“不是誰在做,而是他們如何做”,您就是在談論類型強制,並且在大多數 Linux 發行版中,TE 是在 MAC 級別完成的。我的大部分 MAC 經驗都與“SELinux”有關

您不能將其鎖定在 DAC 級別,否則您將無法在設備上執行 I/O(不一定是 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(顯然)仍然可以寫入塊設備,但創建一個新的文件上下文類型fdiskdd編寫一個 selinux 規則以禁止新類型訪問fixed_disk_device_t應該不會太困難。您只需要使其正常使用者角色無法執行此操作,但具有該權限的使用者sysadm_t可以執行此操作,然後記住newrole -r root:sysadm_r在嘗試重新分區磁碟或dd通過塊設備執行之前只執行沒什麼大不了的,因為這不像你fdisk整天都在跑步)。

可能比您尋找的工作更多,但 TE 是解決您遇到的一般問題的機制。就個人而言,udev規則可能是你最安全的賭注。我只提到 TE 的東西,以防您有興趣解決與此類似的大量問題。

引用自:https://unix.stackexchange.com/questions/77299