FreeBSD 中有所谓的 Security Level,它掌控了系统核心的行为运作。只有超级使用者可以使用指令提高 Secruity
Level,但不能降低它。如果要降低它必须在 rc.conf 中设定,并重开机。以下为各 Secruity Level 的意义:
- -1:永远不安全模式。这是默认值,如果设为 -1,它将永远以 level 0 的模式执行。
- 0:不安全模式。使用者或 root 可以使用 chflags 来移除「不可更动 ( immutable)」及 「只能附加
(append-only)」的 flags。所有的装置只能依其权限来存取。
- 1:安全模式。不可以移除「不可更动 ( immutable)」及 「只能附加 (append-only)」的 flags。不可以手动加载或移除
LKM,使用, /dev/mem, and /dev/kmem 只能为只读,且不能 newfs 已挂上的档案系统。
- 2:高度安全模式。除了和安全模式同样的限制外,不管硬盘是否挂上,都不可以 newfs。另外,kernel time
的改变限制在一秒内,如果超过,会记录 "Time adjustment clamped to +1 second"。
- 3:网络安全模式。除了和安全模式同样的限制外,还有 IP 封包过滤的规则 (参考 ipfw 及 ipfirewall),而且不可以调整
dummynet 的设定。
我们可以使用 sysctl 来显示或设定 Security Level:
# sysctl kern.securelevel
如果要将 Security Level 设为 1:
# sysctl -w kern.securelevel=1
当我们将 Security Level 设为 1 以上时,我们会发现没有办法安装新的 kernel (因为不能移除 schg flag),也没有办法使用
big5con 、X Window 等软件。如果我们的 FreeBSD 只作为服务器,而不使用 big5con 或 X Window 的话,可以将
Security Level 的值调高一点。
如果要在开机时设定 Security Level,可以在 /etc/rc.conf 中以下面二行来设定:
kern_securelevel_enable="YES" # 是否启动 Security Level
kern_securelevel="1" # level 从 -1 到 3
|