分类:
2008-05-10 22:11:23
加密文件系统(EFS)是 AIX 6 的安全新特性之一。它实现了对单个文件的加密功能,从而提供了对文件系统更加精细地管理。本系列文章将比较详细地向您介绍这个新特性的详细内容,本文是系列文章的第 1 部分,主要介绍 EFS 的基础概念和一些简单的管理操作。本文是摘自 IBM 红皮书《AIX V6 Advanced Security Features Introduction and Configuration》。
|
EFS 是为使用唯一密钥加密每个文件而设计的。加密信息保存在每个文件的文件扩展属性中。EFS 使用 EA(扩展属性)版本 2。
每个文件在写入磁盘之前都会被加密。在将文件从磁盘读取到内存时对文件解密,因此文件数据能够以明文格式保存在内存中。它的优点是只需解密数据一次。尽管文件数据已经以明文格式保存在内存中,但是当另一个用户需要访问该文件时,在授予其访问该数据之前会验证其安全凭据。如果用户无资格访问该文件,则会拒绝访问。
文件加密不但不排除传统访问权限的角色,而且增加了更高的粒度和灵活性。
EFS 的内部功能也集成到了 fdb(file descriptor block,文件描述符块)中。
为支持加密文件系统中的操作,已对用于文件操作的传统命令(如 mv 或 cp)添加了新标志。
|
为了在系统上能够创建和使用启用 EFS 的文件系统,需要满足以下几个先决条件:
需要安装 C (CliC) 加密库中的 CryptoLite。
必须启用 RBAC(Role Based Access Control)。
必须显式启用使用 EFS 文件系统的系统。
为了创建和使用 EFS,您必须安装免费提供的、级别为 430.CLiC 的 CLiC 加密文件集,您可以在 V Base 光盘附带的扩展包中找到它。
安装 CLiC 文件集后,得到的输出内容应如示例 1 所示。
示例 1 CLiC 文件集的成功安装摘要
Installation Summary -------------------- Name Level Part Event Result ------------------------------------------------------------------------------- clic.rte.lib 4.3.0.0 USR APPLY SUCCESS clic.rte.kernext 4.3.0.0 USR APPLY SUCCESS clic.rte.includes 4.3.0.0 USR APPLY SUCCESS clic.rte.kernext 4.3.0.0 ROOT APPLY SUCCESS |
为了使系统能够使用加密文件系统,您必须运行 efsenable 命令。
可以按以下方式启用文件系统加密:
示例 2 在不安装 CLiC 的情况下,尝试为系统启用 EFS
# efsenable -a
/usr/lib/drivers/crypto/clickext: A file or directory in the path name does not exist.
无法加载 CLiC 内核扩展。请检查您的安装。
重要说明:如果登录密码和密钥存储库密码相同,则在登录时将自动打开用户密钥存储库,并且用户安全凭据与用户进程关联。对于 root 用户,此功能允许将安全权限与所有系统管理命令无缝集成。
运行 efsenable 命令可完成以下任务:
efs_admin 目录,它包含 efs_admin 密钥存储库和一个锁定文件(lock file)。
用户目录:此目录包含用于获取对 /var/efs/users 目录独占访问的锁定文件。对系统上定义的每个用户,创建名称与用户名相同的子目录。每个子目录包含相应的用户密钥存储库和锁定文件。锁定文件用于获取对 /var/efs/users/username 目录的独占访问。安装时,创建的子目录、密钥存储库和锁定文件与运行 efsenable 命令的用户(通常为根用户)对应。
组目录:此目录包含用于获取对 /var/efs/groups 目录独占访问的锁定文件。对系统上定义的每个组,创建名称与组名相同的子目录。每个子目录包含相应的组密钥存储库和锁定文件。锁定文件用于获取对 /var/efs 目录的独占访问。安装时,创建的子目录、密钥存储库和锁定文件与组安全对应。
在示例 3 中,我们介绍如何为系统启用 EFS,具体如下:
示例 3 启用文件系统加密
# id uid=0(root) gid=0(system) groups=2(bin),3(sys),7(security),8(cron),10(audit),11(lp) # efsenable -a Enter password to protect your initial keystore: Enter the same password again: # # genkex -d|grep -i crypto 4b44000 37748 4b73000 873c /usr/lib/drivers/crypto/clickext # ls -al /var/efs total 8 drwxr-xr-x 5 root system 256 May 09 11:03 . drwxr-xr-x 29 bin bin 4096 May 09 11:03 .. drwx------ 2 root system 256 May 09 11:03 efs_admin -rw-r--r-- 1 root system 0 May 09 11:03 efsenabled drwx------ 3 root system 256 May 09 11:03 groups drwx------ 3 root system 256 May 09 11:03 users # ls -al /var/efs/efs_admin total 8 drwx------ 2 root system 256 May 09 11:03 . drwxr-xr-x 5 root system 256 May 09 11:03 .. -rw------- 1 root system 0 May 09 11:03 .lock -rw------- 1 root system 1709 May 09 11:03 keystore # ls -al /var/efs/users total 0 drwx------ 3 root system 256 May 09 11:03 . drwxr-xr-x 5 root system 256 May 09 11:03 .. -rw------- 1 root system 0 May 09 11:03 .lock drwx------ 2 root system 256 May 09 11:03 root # ls -al /var/efs/groups total 0 drwx------ 3 root system 256 May 09 11:03 . drwxr-xr-x 5 root system 256 May 09 11:03 .. -rw------- 1 root system 0 May 09 11:03 .lock drwx------ 2 root system 256 May 09 11:03 security # ls -al /var/efs/users/root total 8 drwx------ 2 root system 256 May 09 11:03 . drwx------ 3 root system 256 May 09 11:03 .. -rw------- 1 root system 0 May 09 11:03 .lock -rw------- 1 root system 2128 May 09 11:03 keystore # ls -al /var/efs/groups/security total 8 drwx------ 2 root system 256 May 09 11:03 . drwx------ 3 root system 256 May 09 11:03 .. -rw------- 1 root system 0 May 09 11:03 .lock -rw------- 1 root system 2062 May 09 11:03 keystore |
当需要在已运行此命令的系统上运行 efsenable 命令时,将收到以下消息:
# efsenable -a |
此系统上已启用 EFS。
系统运行过程中,锁定文件用于维护用户和组密钥存储库的完整性。
如果发生修改用户密钥存储库的操作,则会执行以下步骤:
提示:在 syslog.out 文件中可以找到 EFS 关联操作过程中产生的详细日志消息。
|
在本部分中,我们将讨论在启用 EFS 的文件系统上可以执行的主要操作。
我们提供了用于创建启用 EFS 的文件系统或将现有的 JFS2 文件系统转换为启用 EFS 的文件系统的接口。
您可以使用 SMIT 菜单创建加密文件系统,如示例 4 所示。创建增强的日志文件系统时,缺省情况下,禁用了以加密方式创建文件系统选项。
示例 4 使用 SMIT 创建加密文件系统
Add an Enhanced Journaled File System Type or select values in entry fields. Press Enter AFTER making all desired changes. [Entry Fields] Volume group name rootvg SIZE of file system Unit Size Megabytes + * Number of units [100] # * MOUNT POINT [/fs1] Mount AUTOMATICALLY at system restart? no + PERMISSIONS read/write + Mount OPTIONS [] + Block Size (bytes) 4096 + Logical Volume for Log + Inline Log size (MBytes) [] # Extended Attribute Format + ENABLE Quota Management? no + Enable EFS? yes + Allow internal snapshots? no + F1=Help F2=Refresh F3=Cancel F4=List F5=Reset F6=Command F7=Edit F8=Image F9=Shell F10=Exit Enter=Do |
您还可以使用命令行接口创建 EFS 文件系统。
以下命令将创建挂载在 /fs2 下的 100 MB 大小的加密文件系统:
crfs -v jfs2 -g rootvg -m /fs2 -a size=100M -a efs=yes |
您可以使用 lsfs –q 命令验证是否创建了与新建的文件系统对应的节,如示例 5 所示。
示例 5 使用 lsfs 命令显示文件系统的 EFS 属性
# lsfs -q /efs Name Nodename Mount Pt VFS Size Options Auto Accounting /dev/fslv00 -- /efs jfs2 212992 rw no no (lv size: 212992, fs size: 212992, block size: 4096, sparse files: yes, inline log: no, inline log size: 0, EAformat: v2, Quota: no, DMAPI: no, VIX: no, EFS: yes, ISNAPSHOT: no) |
请注意,用于加密文件系统的 EA 格式是版本 2,并且 EFS 属性的值设置为“是”。
您可以使用 SMIT 面板或 chfs 命令为现有 JFS2 文件系统启用加密。您需要将 efs 属性的值设置为“是”。
此操作自动将 EA 格式从版本 1 更改为版本 2。将以前在 EA 版本 1 中存储的数据(如 ACL)转换为在 EA 版本 2 中存储。
在撰写本文时,尚未提供任何 WebSM 接口来创建启用 EFS 的文件系统或将常规 JFS2 文件系统转换为启用 EFS 的文件系统。
重要说明:文件系统 /、/usr、/var 和 /opt 不能启用 EFS。
因为在设计 JFS2 文件系统时,完全集成了 EFS 功能,所以可以在常规 JFS2 文件系统上执行的所有操作也可以在启用 EFS 的文件系统上执行。这操作包括:
限制:由于文件安全信息保存在文件元数据中,所以无法通过 NFS 导出 EFS 文件系统,并且无法通过 NFS 本地装入该文件系统。
加密继承这一概念指示文件或目录是否可以从其父目录继承加密的属性和所有加密参数。
最初,刚创建 EFS 文件系统后,还没有立即打开继承。您需要使用 efsmgr 命令相应地激活它。打开继承后,创建的所有文件将继承此属性,并隐式加密该属性。目录本身从不加密;它们仅继承加密。
您可以选择在文件系统级别或在目录级别设置继承。打开继承的效果如下所示:
如果同时在文件系统级别和目录级别设置继承,但又设置为在文件系统级别使用一个密码,在目录级别使用另一个密码,则使用目录密码加密文件。
禁用目录或文件系统的继承后,创建的所有新文件将成为明文格式。禁用继承不影响以加密格式创建的文件。它们将保留加密。
在示例 6 中,我们展示了如何以文件系统级别打开继承,及其在目录和文件上的效果,如下所示:
示例 6 在文件系统级别设置和使用继承
# crfs -v jfs2 -g rootvg -m /efs -a size=100M -a efs=yes File system created successfully. 106288 kilobytes total disk space. New File System size is 212992 # efsmgr -s -E /efs /efs: Error setting EFS attributes: The media is not formatted or the format is not correct. # mount /efs # efsmgr -s -E /efs # efskeymgr -o ksh root's EFS password: #mkdir dir1 # efsmgr -E dir1 # getea dir1 EAName: øSYSTEMø_NRE EAValue: # efsmgr -L dir1 EFS inheritance is set with algorithm: AES_128_CBC # cd dir1 # touch file1 # efsmgr -l file1 EFS File information: Algorithm: AES_128_CBC List of keys that can open the file: Key #1: Algorithm : RSA_1024 Who : uid 0 Key fingerprint : 569ae24b:c2da3415:6e7e651e:b7d2f29f:1dda5ab9 # efsmgr -D dir1 # efsmgr -L dir1 Error getting EFS attributes: Cannot find the requested security attribute. # getea dir1 dir1 does not have any extended attributes. # touch file2 # ls -U file2 -rw-r--r--- 1 root system 0 May 14 13:19 file2 # efsmgr -d file1 # efsmgr -e file2 # ls -U file* -rw-r--r--- 1 root system 0 May 14 13:22 file1 -rw-r--r--e 1 root system 0 May 14 13:22 file2 |
当需要启用已设置继承的文件系统的加密继承时,将显示以下消息:
# efsmgr -s -E /efs1 /efs1: The EFS attribute is already defined |
|
这是系列文章的第 1 部分,我们向您介绍了加密文件系统(EFS)的一些基本概念,以及如何让您的系统启用 EFS。当然,我们还介绍了一些接单的 EFS 的操作,让您对它有一个初步的认识。在后面的文章中,我们会向您陆续介绍一些 EFS 的高级管理知识,希望能对您的工作有所帮助。
学习
Brad Gough 是 IBM 悉尼全球服务部门的一名 AIX 技术工程师,他从1987年进入 IBM,最开是一名 RS/6000 的硬件工程师,2000年他转做 AIX 的支持工作,主要擅长于AIX,NIM和HACMP。他目前主要负责澳大利亚和新西兰地区的 P 系列主机的安装以及实施工作。他拥有多个 IBM 的 P 系列认证。 |