跳到内容跳到页面导航:上一页 [access key p]/下一页 [access key n]
documentation.suse.com / SUSE Linux Enterprise Server 文档 / 安全和强化指南 / 本地安全性 / 物理安全性
适用范围 SUSE Linux Enterprise Server 15 SP3

10 物理安全性

物理安全应予以最大限度的关注。Linux 生产服务器应安放于加锁的数据中心之内,只有通过安全检查的人员才能访问。您也可以考虑使用引导加载程序口令,具体视环境和情况而定。

此外,还要考虑如下问题:

  • 哪些人拥有主机的直接物理访问权限?

  • 他们是否应拥有这些权限?

  • 是否可以保护主机不被篡改,以及是否应进行此保护?

特定系统上所需的物理安全措施数量视情况而定,并且根据可用资金,安全措施也可能会有很大差别。

10.1 系统锁

数据中心内的大部分服务器机架都包含锁定功能。通常是位于机架正面的搭扣锁/圆筒锁,可让您转动插入锁定(或未锁定)位置的钥匙,以允许(或拒绝)进入。笼锁可防止有人篡改或窃取服务器的设备/介质,或者开箱直接操作/破坏硬件。防止系统重引导或从替代设备(例如 CD、DVD、闪存盘等)引导也很重要。

一些服务器还配有箱锁。根据系统供应商的设计和构造,这些锁可以发挥不同的作用。许多系统都设计为当尝试打开未开锁的系统时进行自我禁用。其他配有设备保护盖的系统将不允许插入或拔下键盘或鼠标。虽然有时锁是一项很实用的功能,但它们通常质量较差,很容易会被怀有不良意图的攻击者破坏。

10.2 锁定 BIOS

提示
提示:安全引导

本节仅介绍确保引导进程安全的基本方法。要了解使用 UEFI 和安全引导功能的更高级引导保护的相关信息,请参见第 13.1 节 “安全引导”

BIOS(基本输入/输出系统)或其继承者 UEFI(统一可扩展固件接口)是 PC 类系统上最低级别的软件/固件。运行 Linux 的其他硬件类型(POWER、IBM Z)也配有执行与 PC BIOS 类似功能的低级别固件。当本文档提及 BIOS 时,通常指的是 BIOS 和/或 UEFI。BIOS 指示系统配置,使系统处于一个定义良好的状态,并提供访问低级别硬件的例程。BIOS 执行已配置的 Linux 引导加载程序(例如 GRUB 2)来引导主机。

大部分 BIOS 实施都可配置为阻止未经授权的用户操作系统及引导设置。通常通过设置 BIOS 管理员或引导口令来完成。只有更改系统配置时才需要输入管理员口令,但在每次正常引导时都需要引导口令。对于大多数用例,设置管理员口令并将引导限制为内置硬盘便已足够。这样,攻击者便无法仅仅引导 Linux live CD 或闪存盘等设备。虽然这并不会提供高级别的安全(BIOS 可以被重设置、去除或修改 — 假设用例访问权限),但它可以作为另一种保护措施。

许多 BIOS 固件实现都提供其他各种安全相关设置。您可以咨询系统供应商,查阅系统文档或在系统引导时检查 BIOS,来了解更多信息。

重要
重要:在设置了 BIOS 引导口令的情况下引导

如果为系统设置了引导口令,主机将不会在无人照管的情况下引导(例如当系统重引导或发生电源故障时)。这是一种权衡。

重要
重要:丢失 BIOS 管理员口令

首次设置系统时,通常不会要求提供 BIOS 管理员口令。请勿忘记该口令,否则您将需要通过硬件操作清除 BIOS 内存来再次获得访问权限。

10.3 通过引导加载程序提供的安全性

SUSE Linux Enterprise Server 中默认使用的 Linux 引导加载程序 GRUB 2 可设置引导口令。它还提供了口令功能,以便只有管理员才能启动交互操作(例如编辑菜单项和进入命令行界面)。如果指定了口令,在您按 C 键和 E 键并输入正确的口令之前,GRUB 2 将不允许任何交互控制。

有关示例,请参见 GRUB 2 手册页。

设置这些口令时请务必记住它们!此外,启用这些口令可能只会减缓入侵,而不一定能阻止入侵。同样,有些人可能会从移动设备引导,并装入您的根分区。如果您使用的是 BIOS 级别安全性和引导加载程序,较好的做法是禁用从您计算机 BIOS 中的可移动设备进行引导的功能,然后通过口令来保护 BIOS 本身。

另请注意,需要将引导加载程序配置文件的模式更改为 600(仅限 root 读取/写入)以对其进行保护,否则其他人将能够读取您的口令或哈希!

10.4 淘汰包含敏感数据的 Linux 服务器

安全策略通常包含即将被淘汰或被处置的储存媒体的一些处理过程。常常采用磁盘和媒体擦除过程,因为这会彻底销毁媒体。您可以在因特网上找到多个免费工具。搜索dod 磁盘擦除实用程序将返回多个搜索结果。要淘汰包含敏感数据的服务器,请务必确保无法从硬盘恢复数据。要确保已去除所有数据痕迹,可以使用 scrub 等擦除实用程序。许多擦除实用程序都会多次重写数据。这样可确保即使使用复杂的方法,也无法取回已擦除数据的任何部分。一些工具甚至可通过可引导移动设备进行操作,并根据美国国防部 (DoD) 标准去除数据。请注意,许多政府机构都会指定自己的数据安全标准。一些标准可能强于其他标准,但可能需要更多的实施时间。

重要
重要:擦除耗损均衡设备

一些设备(例如 SSD)使用耗损均衡功能,不一定会在同一物理位置写入新数据。此类设备通常会提供自己的删除功能。

10.4.1 scrub:磁盘重写实用程序

scrub 利用重复模式来重写硬盘、文件和其他设备,旨在让从这些设备恢复数据变得更困难。它有三种基本操作模式:针对字符或块设备、针对文件,或者针对指定目录。有关详细信息,请参见 man 1 scrub 手册页。

支持的擦除方法
nnsa

用于清理可移动和不可移动硬盘的 4 轮 NNSA Policy Letter NAP-14.1-C (XVI-8),需要使用伪随机模式重写所有位置两次,然后使用一种已知模式:random(x2)、0x00、verify。

dod

用于清理可移动和不可移动 rigid 磁盘的 4 轮 DoD 5220.22-M 第 8-306 节程序 (d),需要使用一个字符、其补充、一个随机字符重写所有可寻址位置,然后进行校验。注意:scrub 首先执行一轮随机,以使校验更容易:random、0x00、0xff、verify。

bsi

德国信息技术安全中心 (http://www.bsi.bund.de) 建议的 9 轮方法:0xff、0xfe、0xfd、0xfb、0xf7、0xef、0xdf、0xbf、0x7f。

gutmann

下面引述的 Gutmann 文献中对规范化 35 轮序列进行了说明。

schneier

Bruce Schneier 在“Applied Cryptography”(应用密码学,1996)中介绍的 7 轮方法:0x00、0xff、random(x5)

pfitzner7

Roy Pfitzner 的 7 轮随机方法:random(x7)。

pfitzner33

Roy Pfitzner 的 33 轮随机方法:random(x33)。

usarmy

US Army AR380-19 方法:0x00、0xff、random。(注意:与 DoD 522.22-M 第 8-306 节的过程 (e) 相同,用于清理磁芯内存)。

fillzero

1 轮模式:0x00。

fillff

1 轮模式:0xff。

random

1 轮模式:random(x1)。

random2

2 轮模式:random(x2)。

old

6 轮预发行版 1.7 擦除方法:0x00、0xff、0xaa、0x00、0x55、verify。

fastold

5 轮模式:0x00、0xff、0xaa、0x55、verify。

custom=string

1 轮自定义模式。字符串可能包含 C 样式数字转义符:\nnn(八进制)或 \xnn(十六进制)。

10.5 限制对可移动媒体的访问

在某些环境中,需要对可移动媒体的访问,例如 USB 储存设备或光学设备。udisks2 软件包随附的工具可帮助进行此类配置。

  1. 创建允许用户装入和弹出移动设备的用户组,例如 mmedia_all

    tux > sudo groupadd mmedia_all
  2. 向新组添加特定用户 tux

    tux > sudo usermod -a -G mmedia_all tux
  3. 创建包含以下内容的 /etc/polkit-1/rules.d/10-mount.rules 文件:

    tux > cat /etc/polkit-1/rules.d/10-mount.rules
    polkit.addRule(function(action, subject) {
     if (action.id =="org.freedesktop.udisks2.eject-media"
      && subject.isInGroup("mmedia_all")) {
       return polkit.Result.YES;
      }
    });
    
    polkit.addRule(function(action, subject) {
     if (action.id =="org.freedesktop.udisks2.filesystem-mount"
      && subject.isInGroup("mmedia_all")) {
       return polkit.Result.YES;
      }
    });
    重要
    重要:规则文件命名

    规则文件的名称必须以数字开头,否则将忽略该名称。

    规则文件按字母顺序进行处理。函数按其添加的顺序进行调用,直到其中一个函数返回值为止。因此,要添加在其他规则之前处理的授权规则,请将其放入 /etc/polkit-1/rules.d 中名称排序在其他规则文件之前的某个文件,例如 /etc/polkit-1/rules.d/10-mount.rules。每个函数应从 polkit.Result 返回值。

  4. 重启动 udisks2

    root # systemctl restart udisks2
  5. 重启动 polkit

    root # systemctl restart polkit