16.5.安全等级
安全等级是内核实现的一个安全机制。当安全等级设置为正值时,内核会限制某些任务的执行;即使是超级用户(root)也无法进行这些操作。
安全等级机制限制了以下操作的能力:
取消某些文件标志,例如
schg
(系统不可变标志)。通过 /dev/mem 和 /dev/kmem 写入内核内存。
加载内核模块。
修改防火墙规则。
16.5.1. 安全等级定义
内核运行时有五个不同的安全等级。任何超级用户进程可以提升级别,但没有进程可以降低它。
安全等级定义如下:
-1 永久不安全模式 - 始终在不安全模式下运行系统。这是默认初始值。
0 不安全模式 - 可以关闭不可变标志和追加-only 标志。所有设备可以根据权限进行读写。
1 安全模式 - 系统不可变和系统追加-only 标志不能关闭;不能为挂载的文件系统、/dev/mem 和 /dev/kmem 打开写入;/dev/io(如果平台支持)不能被打开;不能加载或卸载内核模块。不能使用 debug.kdb.enter sysctl 进入内核调试器。无法通过
debug.kdb.panic
、debug.kdb.panic_str
等 sysctl 强制触发 panic 或陷阱。3 网络安全模式 - 与高安全模式相同,另外,IP 包过滤规则(见 ipfw(8)、ipfirewall(4) 和 pfctl(8))不能被更改,不能调整 dummynet(4) 或 pf(4) 配置。
技巧
总结:在 FreeBSD 安全等级中,
永久不安全模式
和不安全模式
之间的关键区别是它们提供的安全性程度。永久不安全模式
完全解除所有安全限制,而不安全模式
放松了一些限制,但仍然维持一定的控制和安全性。
16.5.2. 修改安全等级
要更改系统的安全等级,首先需要通过执行以下命令启用 kern_securelevel_enable
:
然后设置 kern_securelevel
的值为所需的安全等级:
要检查正在运行的系统的安全等级状态,可以执行以下命令:
输出将包含当前的安全等级值。如果它大于 0,则至少启用了某些安全等级的保护措施。
最后更新于