Privileges

如果使用者正在使用磁碟組,如何防止提權?

  • March 13, 2017

一個基本的 Centos7 安裝:

[root@teszt ~]# lsblk
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda           8:0    0  100G  0 disk 
├─sda1        8:1    0    1G  0 part /boot
└─sda2        8:2    0   99G  0 part 
 ├─cl-root 253:0    0   50G  0 lvm  /
 ├─cl-swap 253:1    0    2G  0 lvm  [SWAP]
 └─cl-home 253:2    0   47G  0 lvm  /home
sr0          11:0    1 56.6M  0 rom  
[root@teszt ~]# ls -lah /dev/sda1
brw-rw----. 1 root disk 8, 1 Mar 12 09:25 /dev/sda1
[root@teszt ~]# useradd -m tesztuser
[root@teszt ~]# id tesztuser
uid=1000(tesztuser) gid=1000(tesztuser) groups=1000(tesztuser)
[root@teszt ~]# usermod -a -G disk tesztuser
[root@teszt ~]# id tesztuser
uid=1000(tesztuser) gid=1000(tesztuser) groups=1000(tesztuser),6(disk)
[root@teszt ~]# su - tesztuser
[tesztuser@teszt ~]$ id
uid=1000(tesztuser) gid=1000(tesztuser) groups=1000(tesztuser),6(disk) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[tesztuser@teszt ~]$ dd if=/dev/sda1 of=copy-of-boot-fs
2097152+0 records in
2097152+0 records out
1073741824 bytes (1.1 GB) copied, 5.33951 s, 201 MB/s
[tesztuser@teszt ~]$ ls -lah copy-of-boot-fs 
-rw-rw-r--. 1 tesztuser tesztuser 1.0G Mar 12 09:28 copy-of-boot-fs
[tesztuser@teszt ~]$ 

問題:如果我們需要將“普通”使用者分配給“磁碟”組,我們如何防禦提權等攻擊?使用者可以讀取/寫入 RAW 磁碟,從而為所欲為,例如:在下次重新啟動時木馬核心或將其 uid/gid 修改為 god 0/0。

例如,需要將普通使用者添加到磁碟組:普通使用者正在使用 VirtualBox,並且由於性能原因,它想為來賓使用 RAW LV,而不是 FS 之上的文件。

如果我們需要將“普通”使用者分配給“磁碟”組,我們如何防禦提權等攻擊?

你不能。解決方案是不要將使用者放入disk組中。這不是為了那個。

要授予使用者對原始卷的訪問權限,請將該卷放在不同的組中,並且僅將該卷放在該組中。這樣做的方法是添加一個udev規則。請參閱為特定設備授予組權限未設置組的 Udev 規則允許非 root 使用者讀/寫 /dev 文件,…

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