<< Back to shouce.jb51.net

4.2. BIOS 和引导装载程序的安全性

使用口令保护 BIOS(或相当于 BIOS 的系统)和引导装载程序可以防止那些可以在物理上接近系统的未经授权的用户使用可移介质来引导或通过单用户模式来获得根权限。但是防御这类攻击的安全措施既依赖于工作站上信息的保密程度,也依赖于机器的地点。

例如,如果机器在展销会上被使用,并且不包含任何保密信息,可能防御这类攻击就不那么重要。然而,如果在同一个展销会上,某个雇员的便携电脑无人看管,但是其中含有公司网络的未加密的 SSH 密钥,它就可能会导致影响整个公司的重大安全问题。

从另一方面考虑,如果工作站位于只有被授权或被信任的人员才能进入的地方,那么保卫 BIOS 或引导装载程序的安全性可能就根本不必要。

4.2.1. BIOS 口令

以下是使用口令来保护计算机 BIOS[1]的两个主要原因:

  1. 防止对 BIOS 设置的改变 — 如果入侵者可以进入 BIOS,他们就可以把它设置为从软盘或光盘引导。这就使他们能够进入救援模式或单用户模式,从而允许他们在系统上放置恶意程序或复制保密数据。

  2. 防止系统被引导 — 某些 BIOS 允许你使用口令来保护引导进程。当激活时,攻击者在 BIOS 启动引导装载程序前就不得不输入口令。

因为设置 BIOS 口令的方法因计算机厂商而各有不同,请参考你的计算机手册来获得特有说明。

如果你忘记了 BIOS 口令,它可以通过母板上的跳线或断开 CMOS 电池的连接来重设。由于这个原因,在可能的时候最好能锁住电脑。不过这么做之前,请先参考一下计算机或母板的说明手册。

4.2.1.1. 保护非 x86 平台的安全

其它平台使用不同的程序来执行和 x86 系统上的 BIOS 基本相似的低级任务。例如,Intel® Itanium™ 计算机使用可扩展固件界面(Extensible Firmware InterfaceEFI)Shell。

关于使用口令来保护其它体系上的 BIOS 类程序的说明,请参阅厂商的说明。

4.2.2. 引导装载程序口令

以下是使用口令来保护 Linux 引导装载程序的主要原因:

  1. 防止进入单用户模式 — 如果攻击者能够引导入单用户模式,他就可以在不被要求输入根口令的情况下成为根用户。

  2. 防止进入 GRUB 控制台 — 如果机器使用 GRUB 作为引导装载程序,攻击者可以使用 GRUB 编辑界面来改变它的配置或使用 cat 命令来收集信息。

  3. 防止进入非安全的操作系统 — 如果它是双引导系统,攻击者可以在引导时选择操作系统,例如 DOS,它会忽略存取控制和文件权限。

红帽企业 Linux 为 x86 平台包括了 GRUB 引导装载程序。要详细查看这个引导装载程序,请参考《红帽企业 Linux 参考指南》中的“GRUB 引导装载程序”这一章。

4.2.2.1. 用口令保护 GRUB

GRUB 可以通过在它的配置文件中添加一个口令(password)指令来解决第 4.2.2 节中列举的前两个问题。要这么做,首先决定要使用什么口令,然后打开 shell 提示,登录为根用户,键入:

/sbin/grub-md5-crypt

在提示时,键入 GRUB 口令,然后按[Enter]。这会返回一个口令的 MD5 散列。

下一步,编辑 GRUB 配置文件 /boot/grub/grub.conf。打开文件,在主体的 timeout 行下添加以下行:

password --md5 <password-hash>

<password-hash> 替换成 /sbin/grub-md5-crypt[2] 返回的值:

下次系统引导时,如果你不首先按 [p] 和 GRUB 口令,GRUB 菜单就不会允许你进入编辑器或命令界面。

不幸的是,这个办法并不能防止攻击者在双引导环境中引导不安全的操作系统。要解决这个问题,你必须编辑 /boot/grub/grub.conf 文件中的另一个部分。

寻找不安全操作系统的 title 行,然后紧跟在下面添加一行 lock

对于 DOS 系统,该实例应该和以下的启动方式相似:

title DOS
lock

警告警告
 

/boot/grub/grub.conf 文件的主体中必须有 password 行才能使这种方法正确运行。否则,攻击者就可以进入 GRUB 编辑器界面,然后删除 lock 行。

要为某个特定内核或操作系统创建不同的口令,在那个实例中添加一个 lock 行,再紧跟一个password行。

每个使用独特口令来保护的实例开头都应该和以下相似:

title DOS
lock
password --md5 <password-hash>

[1]

因为系统 BIOS 因厂商而各异,某些可能不支持任何类型的口令保护,某些可能会只支持一种而不支持另一种。

[2]

GRUB 还接受不加密的口令,但是推荐你使用 md5 散列来增加其安全性。