张 利新, 技术支持工程师,
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 与他联系。 |
对本文的评价
|