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 内存来再次获得访问权限。
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
软件包随附的工具可帮助进行此类配置。
创建允许用户装入和弹出移动设备的用户组,例如 mmedia_all:
tux >
sudo
groupadd mmedia_all向新组添加特定用户
tux
:tux >
sudo
usermod -a -G mmedia_alltux
创建包含以下内容的
/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
返回值。重启动
udisks2
:root #
systemctl restart udisks2重启动
polkit
root #
systemctl restart polkit