IBM®
跳转到主要内容
    中国 [选择]    使用条款
 
 
Select a scope:Search for:    
    首页    产品    服务与解决方案     支持与下载    个性化服务    
跳转到主要内容

developerWorks 中国  >  AIX and UNIX  >

探索 AIX 6:AIX 6 加密文件系统配置指南(上)

developerWorks
文档选项

未显示需要 JavaScript 的文档选项


张 利新, 技术支持工程师, IBM

2008 年 2 月 28 日

本文通过介绍 EFS 的组成结构,对文件或目录的加密和解密以及对用户和组的管理,让您对 EFS 有一个基本的了解。

您可以通过以下的资源了解更多的 AIX 6 的新特性:

概述

EFS(Encrypting File System,加密文件系统)是 AIX 6 新增加的功能之一。EFS 提供了细粒度级别的文件加密支持,用户可以选择对某个文件或者目录进行加密,文件在写入磁盘时自动加密,从磁盘读入到内存时自动解密。只有持有密钥的用户,才被允许访问加密后的数据。在需要对敏感数据进行保护的环境中,EFS 可以提供很好的保护。

被加密过的文件对用户是透明的。也就是说,如果你加密了一些数据,那么你对这些数据的访问将是完全允许的,并不会受到任何限制。而其他非授权用户试图访问加密过的数据时,就会收到“访问拒绝”的错误提示。





回页首


EFS 的组成

JFS2 文件系统(enhanced journaled file system /J2 File System)

增强型日志文件系统(JFS2)是基本文件系统之一,它支持整个文件系统命令集合,它最初是在 AIX 5.1 中引入的文件系统,可存储比现有日志文件系统(JFS)更大的文件,在 AIX 6 中,设 JFS2 为默认的文件系统,在创建逻辑卷时可选 JFS2 无日志特性,以提高了 JFS2 文件系统的效率。JFS2 文件系统默认是不启用 EFS,需要 AIX 系统安装完成后启用。

用户和组密钥 (User and Group Key Stores )

用户密钥(User key stores)在启用 EFS 后由 AIX 系统自动创建和管理,用户可以使用 efsmgr 命令管理密钥和加密文件或目录,也可以将加密文件的访问权限授予其他用户或组。若系统新增加一个用户,当用户设置完成密码后,用户的密钥库将自动被生成。

组密钥 (Group key stores),可以被授予组成员或其他组,这样成员或其他组就具有组的访问权限。它的管理类似于用户密钥,不同的是组密钥生成和授权访问方式不同,可以使用 efskeymgr 命令才管理和维护组密钥,具体参考下面的用户和组管理。

加密函数库 (Crypto Lib)

在 AIX 6 中使用的加密函数库是 CLiC(Crypto Lib in C),它提供了 EFS、NFSv4 和 Trusted 系统的所需要的支持函数库。它不仅具有灵活的开放接口和嵌入支持而且提供 RSA 签名支持。CLiC 加密函数库支持更多的系统平台,具体支持的平台如下:

  • Windows 95/98/Me/NT/2000/XP/Vista,
  • Linux
  • AIX
  • OS/400 ?and Mac OS

EFS 的逻辑结构图如下:


图表 1 EFS 逻辑结构图

从图中可以看到,“加密文件系统”使系统上的各个用户通过其各自的密钥库加密数据,密钥与每个用户关联,每个用户的密钥存储在受保护的密钥库中;在用户成功登陆后,用户的密钥与其进程凭证相关联并装入内核中。当进程需要打开受 EFS 保护的文件时,将对这些凭证进行测试,如果发现了与文件保护相匹配的密钥,进程将能够自动载入该文件密钥进行解密,从而获取文件内容。





回页首


EFS 的配置

详细 EFS 的配置请参照如下步骤,并将讲解如何对文件或目录进行加密或解密。

安装要求

在 AIX 6 上配置 EFS 需要首先安装所需的加密函数库 CLiC,CLiC 函数库包含附加在 AIX 6 的扩展 CD 中。另外需要有基于角色访问控制(RBAC)的支持;默认在 AIX6.1 系统下,已经启用 RBCA 的支持。如果已经在 AIX 6.1 系统上安装了 CLiC 函数库,请参照如下命令对系统进行检查。

具体检查安装和结果显示如下:

 [root@ / =>]oslevel -s
6100-00-00
[root@ / =>]lslpp -l clic*
 Fileset Level State Description
 ----------------------------------------------------------------------------
Path: /usr/lib/objrepos
 clic.rte.includes 4.3.0.0 COMMITTED CryptoLite for C Library
 Include File
 clic.rte.kernext 4.3.0.0 COMMITTED CryptoLite for C Kernel
 clic.rte.lib 4.3.0.0 COMMITTED CryptoLite for C Library
 clic.rte.pkcs11 4.3.0.0 COMMITTED PKCS11 Software Token Support
Path: /etc/objrepos
 clic.rte.kernext 4.3.0.0 COMMITTED CryptoLite for C Kernel

以上列表可以看出,加密的函数库 CLiC 已经被安装在系统中,加密函数库主要由内核支持加密库、C 语言函数加密库、PKCS 11# 公共密码标准库等支持库组成。





回页首


启用 EFS

EFS 是 AIX 6 操作系统的基本组成部分,要启用 EFS,root( 或任何具有 RBCA aix.security.efs 权限的用户 ) 用户必须使用 efsenable 命令来激活 EFS 环境。一旦系统激活 EFS 系统将永久支持 EFS,不能取消,以后也不需要重复运行。

以 root 用户身份运行命令“efsenable -a”,按照提示输入密钥库的密码。确认完成后,在 AIX 6 系统上启动 EFS 的支持。

具体运行的命令和输入如下:

[root@ / =>] efsenable -a
Enter password to protect your initial keystore:
Enter the same password again:
[root@ / =>]efskeymgr –o ksh
[root@ / =>]genkex -d | grep -i crypto
 4467000 39000 4497000 8780 /usr/lib/drivers/crypto/clickext
[root@ /efs =>]ls -al /var/efs
total 8
drwxr-xr-x 5 root system 256 Dec 25 15:25 .
drwxr-xr-x 29 bin bin 4096 Dec 20 17:17 ..
drwx------ 2 root system 256 Dec 20 11:11 efs_admin
-rw-r--r-- 1 root system 0 Dec 20 11:11 efsenabled
drwx------ 5 root system 256 Dec 20 14:59 groups
drwx------ 5 root system 256 Dec 24 14:24 users
[root@ /efs =>]ls -ls /var/efs/users/root
total 4
 0 -rw------- 1 root system 0 Dec 20 11:11 .lock
 4 -rw------- 1 root system 2128 Dec 20 11:11 keystore

注意:

在运行 “efsenable –a” 命令后,需要 root 用户或已登陆的用户重新登陆才能加载的密钥库或运行 “efskeymgr –o ksh” 命令来加载,如果 root 用户密钥库的密码和登陆密码不同,系统将提示输入密钥库的密码;同样如果要移除已加载的密钥库,可使用 “efskeymgr –c ksh” 命令。

使用“genkex -d”命令来查看当前加载到内核的扩展模块,可以看到已加载的加密的进程 ID 以及加载加密模块的位置。

注:

这里运行“efsenable –a”命令将启用 EFS 默认的设置,可指定相关参数更改默认设置。





回页首


加密和解密文件

创建支持 EFS 的 JFS2 文件系统

以下示例将详细讲解如何对文件进行加密和解密。首先需要创建一个新的逻辑分区 fslv00,mount 点设为 /efs,分区大小为 300MB,开启 JFS2 文件系统的 EFS 属性。

具体的命令如下:

[root@ / =>] crfs -v jfs2 -g rootvg -m /efs -A yes -a size=300M -a efs=yes
File system created successfully.
393000 kilobytes total disk space.
New File System size is 786432
[root@ / =>] mount /efs
[root@ / =>]lsfs -q /efs
Name Nodename Mount Pt VFS Size Options Auto Accounting
/dev/fslv00 -- /efs jfs2 786432 -- yes no
(lv size: 786432, fs size: 786432, block size: 4096, sparse files: yes, inline log: no,
inline log size: 0, EAformat: v2, Quota: no, DMAPI: no, VIX: yes, EFS: yes,
 ISNAPSHOT: no)
[root@ / =>]

也可使用 SMIT 菜单方式创建文件系统,使用 smit crfs =>Add an Enhanced Journaled File System=>Add an Enhanced Journaled File System 选择 rootvg 卷组,设置 enable EFS?选项为 yes 即可。

通过使用 lsfs 命令可以查看文件系统的相关信息。可以看到加密文件系统的扩展属性 (EA) 的版本是 2.0,EFS 的属性值已经设置为 yes 开起状态。如果其他 JFS2 的文件系统需要打开 EFS 属性,只需要使用 smit chfs 开启即可。

注意:

在 AIX6 中 /、/usr 、/var 、/opt 等文件系统是不能开启 EFS。在文件共享时,加密文件系统不支持 NFS 方式共享加密文件。

文件的加密或解密

在 AIX 6 中对加密文件或加密文件系统的管理是通过 efsmgr 命令来进行的,对文件的加密使用“-e”参数,后面跟要加密的文件即可。如果要解除文件的加密状态,可以使用“-d”参数来解除。查看文件是否是加密文件,可使用 ls 命令加“-U”参数来查看,如果是加密文件或加密目录,可以看到文件权限后多出字母“e”属性,用以标识是加密文件或目录。

具体的操作命令如下图所示:


图表 2 文件的加密

由上面的操作,blue 用户使用 efsmgr 命令加密了文件 blue_file,root 用户想查看此文件,由于 blue_file 已经被 blue 用户加密,无法访问此文件。root 用户试图使用 efsmgr 来解密 blue_file 文件,提示 blue_file 文件的安全验证拒绝了他的请求。可以使用 getea 命令可以查看当前文件是否具有加密扩展属性,可以看到 blue_file 文件已被加密过。

查看 blue_file 的加密信息,可以看如下结果:


图表 3 查看密钥信息

使用“efsmgr –v”命令查看当前 blue 用户的密钥信息及组密钥的访问属性,可以看到 blue 用户以及拥有了 staff 组的访问密钥。使用“efsmgr –l”命令来查看加密文件 blue_file 的密钥信息。

解除加密文件 blue_file 的加密属性后,blue_file 将变成普通的文件。其他用户就可以任意读取。


图表 4 文件的解密

用户 blue 使用“efsmgr –d ”命令解除 blue_file 文件加密状态,使用 getea 命令查看其扩展属性,可以看到 blue_file 文件没有了加密扩展属性。root 用户可以访问它了,但 root 用户如果想对此文件进行加密操作,由于其属主是 blue 用户,系统将拒绝其加密请求。

注意:

对文件进行加密或解密时,efsmgr 命令不支持通配符“*”,“%”等同时对多个文件进行加密或解密操作。

目录的加密或解密

使用 efsmgr 命令对目录进行加密或解密时,目录原始的文件将保持其原来属性,不会被加密,新创建的文件将继承目录的加密属性。可使用“efsmgr –E”命令对目录进行加密,使用“efsmgr –D”命令来解除目录的加密。

对目录 inh_dir 进行加密,操作如下:


图表 5 目录的加密

从以上例子中可以看到,目录 inh_dir 被加密后,其目录里原来的文件 file1、file2、file3 并不没有被自动加密,新创建的文件 file4 被加密了。可见只有新创建的文件会自动继承了加密目录的加密属性,目录内的原来的文件并不受其影响。

对目录 inh_dir 进行解密,操作如下:


图表 6 目录的解密

由上图可以看出,当解除 inh_dir 目录的加密属性时,目录内的加密文件并不会受到目录加密属性解除的影响,新创建的文件自动继承了目录新的属性,不再被加密。





回页首


用户和组管理

EFS 提供的命令可以很方便的添加指定的用户或组访问指定的加密文件。以下分别介绍 EFS 对用户和组的管理。

用户管理

AIX 6 系统上的用户很方便的管理属于自己的加密文件,其中对用户或组的授权访问是文件管理最常用的操作。具体如下:

  • 授权用户

授权是文件的属主授予指定用户可以访问加密文件的操作。这种授权并不会改变加密文件的属主,只是被授权用户的公共密钥被添加到文件加密属性中,以后就可以查看加密文件,没有被授权的用户是不能访问加密文件的。

以下将演示 root 用户授权 blue 用户访问加密文件 root_file 的过程。


图表 7 授权访问加密文件

由上图可以看到在没有授权时,blue 用户是不能访问加密文件 root_file。root 用户通过执行“efsmgr –a root_file –u blue”命令授权后,blue 用户可以看 root_file 的内容。通过查看 root_file 的密钥库,可以看到 blue 用户的密钥被添加到加密文件的属性中。使用命令“efsmgr –a <filename> –g <groupname>”来添加某个组可以访问 <filename> 文件,授权后,<groupname> 组内成员将可以访问文件。

  • 撤消授权

撤销授权是文件的属主撤销已授权用户的访问权限,撤销访问权限后,以后将不能访问加密文件。

以下将演示 root 用户撤销 blue 用户访问加密文件 root_file 权限的过程。


图表 8 撤销授权加密文件

由上图可以看出,blue 用户原来可以正常的访问 root_file,root 用户使用“efsmgr –r root_file –u blue”命令撤销了 blue 用户的访问权限,blue 用户对 root_file 文件的访问被拒绝,查看 root_file 的密钥库,blue 用户的密钥信息已经被移除,只包含有 root 用户的密钥信息。

使用命令“efsmgr –r <filename> –g <groupname>”来撤销某个组访问 <filename> 文件的权限,撤销授权后,<groupname> 组内成员将不能访问此文件。

组管理

EFS 同样也支持对组的管理,缺省情况下,EFS 的管理密钥组是 security 组,root 用户被授予管理密钥的用户。在 AIX 6 中启用 EFS 有两种可选的模式,一种是 Root Admin 模式。另外一种模式是 Root Guard 模式,EFS 缺省启用的模式是 Root Admin 模式。关于这两种模式的说明我们将在 AIX 6 加密文件配置指南(下)中讲解。

  • 组密钥的产生

生成组的密钥需要满足一定的条件:

    • 组必须有成员;
    • 组成员都已设定密钥库的密码;
    • 使用“efskeymgr –C <groupname>”命令生成组密钥库。

具体演示如下:


图表 9 生成组密钥库


图表 10 查看密钥信息

由图表 8 生成组密钥库、图表 9 查看密钥信息可以看到,新创建的组 group2 在没有任何用户的情况下,运行“efskeymgr –C”命令报错,提示 group2 组内没有包含任何成员。添加新用户 user2 到 group2 组后,还是不能生成组密钥,由于新用户 user2 没有设置初始化密码,用户的密钥为空;在设置用户 user2 的密码后,成功生成了组 group2 的密钥。查看 user2 用户的密钥信息,可看到 group2 组的访问密钥已经被添加到 user2 的密钥库。

  • 授权或撤销组密钥

组的密钥可以被授权给用户或其他用户组作为访问密钥,这样其他用户或组就可以访问目标组的加密文件。在 EFS 缺省模式下,root 用户可以将自己加入到目标组中,具有目标组的访问权限。

下面将演示授权 group1 组的密钥给用户 blue 的过程。


图表 11 授权组密钥

从上面演示中可以看到,用户 blue 属于 group1 组,但没有 group1 的访问密钥。以 root 用户身份使用“efskeymgr –k group/group1 -s user/blue”命令来授予 blue 用户可以访问 group1 组的相关文件。使用“efskeymgr –v”命令可以看到用户 blue 的密钥里面已经包含 group1 组的访问密钥。使用“efskeymgr –v –k group/group1”命令来查看当前 group1 组的密钥信息。

下面将演示撤销 blue 用户对 group1 组的访问密钥。


图表 12 撤销组密钥

由上图可以看出,root 用户使用“efskeymgr –k user/blue –S group/group1”命令撤销 blue 用户对 group1 的访问密钥,group1 组的访问密钥已从 blue 用户的密钥中移除。同样也可以授权一个组获得目标组的访问密钥。

以下将创建新的组 group5 被授权访问 group2 组的密钥的过程。

具体如下:


图表 13 组密钥的授权

从上图可以看出,组与组之间的授权同样也是使用命令“efskeymgr –k group/group2 –s group/group5”,与组授权用户所不同的是参数“-s”后面是被添加的组。另外如果新创建的组没有生成其密钥,是不能被加入目标组访问密钥信息,必须生成组的密钥后,才可以正常加入目标组访问密钥信息。

撤销 group5 组对 group2 组密钥的访问权限,具体操作如下:


图表 14 撤销组密钥

使用命令“efskeymgr –k group/group5 –S group/group2”撤销 group5 组的访问密钥。撤销组的访问密钥后,目标组 group2 的访问密钥从 group5 组的密钥库中移除。

注意:

只有 root 用户可以授权或撤销组的访问密钥操作,其他用户没有权限操作。





回页首


5. 总结

通过以上的讲解和演示,可以看到在 AIX 6 系统下 EFS 的管理和操作都非常的简单,几乎所有的 EFS 操作都可以使用“efsmgr”和“efskeymgr”两个命令来完成。同时,对加密文件的访问,EFS 提供了授权用户或组的功能,系统的用户在没有授权的情况下是不能访问加密文件(包含 root 用户在内),只有授权的用户才能访问加密文件,从而有效的保护用户的隐私。对于 EFS 的加密继承、密钥的管理以及 EFS 的备份与恢复的操作说明,我们将在本指南的第二部分进行讲解。



参考资料

学习

讨论


关于作者

张利新,就职于IBM科技产品(深圳)有限公司,技术支持部。主要负责IBM System p5/POWER Blade 产品的技术支持及解决方案的可行性分析、测试和IBM商业合作伙伴的技术培训等工作,对IBM DB2数据库,WebSphere中间件在AIX、Linux操作系统上有一定的经验。您可以通过 nelsonz@cn.ibm.com 与他联系。




对本文的评价

太差! (1)
需提高 (2)
一般;尚可 (3)
好文章 (4)
真棒!(5)

建议?







回页首


IBM 和 AIX 是 International Business Machines Corporation 在美国和 / 或其他国家 / 地区的注册商标。 Java 和所有基于 Java 的商标都是 Sun Microsystems, Inc. 在美国和 / 或其他国家 / 地区的商标。 Linux 是 Linus Torvalds 在美国和 / 或其他国家 / 地区的注册商标。 UNIX 是 Open Group 在美国和其他国家 / 地区的注册商标。 其他公司、产品或服务的名称可能是其他公司的商标或服务标志。

IBM 公司保留在 developerWorks 网站上发表的内容的著作权。未经IBM公司或原始作者的书面明确许可,请勿转载。如果您希望转载,请通过 提交转载请求表单 联系我们的编辑团队。
    关于 IBM 隐私条约 联系 IBM 使用条款