我在“RH413 Red Hat Server Hardening”课程中读到了这一点,我们挂载了nodev
不允许从其中挂载特殊文件/设备的文件系统。但是,它没有显示示例。
dd
但是,我在我的 RHEL 机器上做了以下事情,我发现当文件系统使用 nodev 选项挂载时,我们无法将特殊字符设备与命令创建的任何文件相关联。我后来删除了nodev
选项,并且能够将字符设备与新创建的文件与dd
命令相关联。
这是我们使用nodev
选项安装 FS 时预期的行为,还是我缺少其他东西?
这里去命令:
[root@server Special]# mount | grep /Special
/dev/mapper/home on /Special type ext4 (rw,nodev,relatime,seclabel,data=ordered)
[root@server Special]#
[root@server Special]# ls -l
total 16
drwx------. 2 root root 16384 Feb 20 01:40 lost+found
crw-r--r--. 1 root root 1, 5 Feb 21 04:53 spFile
[root@server Special]#
[root@server Special]# dd if=spFile of=newDev bs=1K count=20000
dd: failed to open ‘spFile’: Permission denied
[root@server Special]#
nodev
通过添加删除exec
。
[root@server ~]# mount | grep /Special
/dev/mapper/home on /Special type ext4 (rw,relatime,seclabel,data=ordered)
[root@server ~]#
[root@server Special]# dd if=spFile of=newDev bs=1K count=20000
20000+0 records in
20000+0 records out
20480000 bytes (20 MB) copied, 0.527708 s, 38.8 MB/s
[root@server Special]#
[root@server Special]# ls -l
total 20016
drwx------. 2 root root 16384 Feb 20 01:40 lost+found
-rw-r--r--. 1 root root 20480000 Feb 21 05:10 newDev
crw-r--r--. 1 root root 1, 5 Feb 21 04:53 spFile
[root@server Special]#
[root@server Special]# mkdir /spDev
[root@server Special]# mount newDev /spDev/
[root@server Special]# df -h /spDev/
Filesystem Size Used Avail Use% Mounted on
/dev/loop0 18M 326K 17M 2% /spDev
[root@server Special]#
首先...
您展示的实验不会使用 .创建文件
dd
,它会尝试使用 . 写入特殊字符设备dd
。1) 什么是设备文件?
设备文件可以被认为是内核中设备的链接。虽然它们存储在磁盘上,但它们描述的实际设备与存储的文件系统无关。在这方面,将它们视为类似于指向内核内部某些东西的符号链接。
文件名无关紧要;就像符号链接可以任意命名并放置在任何位置一样,设备文件可以任意命名并存储在仍然指向同一设备的任何位置。
2) 为什么它们是安全问题?
出于显而易见的原因,不仅仅是任何人都可以直接连接到设备。例如,您不希望普通用户只读取您的硬盘驱动器,而忽略文件系统及其权限。
如果您将驱动器插入计算机并仅安装它,则该磁盘上存在具有不安全权限的设备文件的风险。这些可能指向一些应该被保护的东西。因此,通过插入磁盘,您可能会错误地让某人访问设备。
3)
nodev
做什么?这堵住了安全漏洞。它告诉操作系统禁止任何程序通过存储在该文件系统上的设备文件访问设备。
在您的实验中,您使用 DD 尝试使用设备文件(链接到该设备)写入设备。因为在第一种情况下,您安装
nodev
的操作系统被禁止dd
(以及所有其他程序)使用该设备文件。编辑:关于设备文件的更多信息
上面我提到设备文件类似于符号链接。对于设备文件,主要和次要编号用于指定它们链接到的内容。如果我们举一个由操作系统自动创建的示例:
所以在我的系统上,如果我打电话,
mknod foo c 1 8
我应该得到一个与/dev/random
. 需要明确的是,它是同一个设备,只是指向它的不同文件。根据您问题中的打印输出,它具有 major number
1
minor number5
。在我的系统上,这是/dev/zero
.nodev
只是意味着该文件系统上的设备节点不起作用。它们可以从以前存在,你可以创建它们,但你不能打开它们。这与您尝试打开时相同
spFile
。当然,如果你删除它确实有效nodev
。(exec
与此无关,它控制在文件系统之外执行程序,这是另一回事。)至于“将特殊字符设备与 dd 创建的文件关联”是什么意思,我不知道你的意思。