AIX V6.1 支持 NFS V4,可以使用各种虚拟化特性,支持 IBM General Parallel Filesystem,这些特点让它成为在各种存储和数据云系统中广泛使用的文件服务器。通常情况下,最终用户在各种 UNIX® 系统上通过 NFS 客户机访问基于 NFS 的 AIX 文件服务器导出的文件。SUSE Linux Enterprise Server (SLES) 是广泛使用的 Linux 发行版之一,它提供与 AIX 兼容的 NFS 客户机。
尽管使用文件服务器集中地管理数据是一种很受欢迎的做法,但是保护静止数据是非常重要的,这不仅是为了满足各种法律法规的需求,而且是为了向用户保证他们保存在中心存储库中的数据是安全的。保护静止数据有许多不同的方法。AIX V6.1 提供 Encrypted File System 来保护静止数据,但是当前限制了通过 NFS 协议使用它。SUSE Linux Enterprise Server 提供 Encrypted File Container,它使用各种有助于保护静止数据的选项(见 参考资料)。本文讲解管理员和用户如何通过 NFS 协议在 AIX 上保存远程文件,以及如何使用 SLES 提供的 Encrypted File Container 特性保护它们。本文研究一个示例并详细解释涉及的步骤。
图 1 说明示例设置,其中有一个 AIX 系统作为文件服务器,它使用 NFS 协议导出文件。SLES 系统配置为 AIX 系统的 NFS 客户机,最终用户从这里访问他们的文件。作为管理员,您必须确保使用 SLES 系统的用户访问的所有文件安全地存储在远程 AIX 文件服务器上。
图 1. 示例设置
AIX V6.1 的特性非常丰富,包括虚拟化特性、存储管理功能以及对集群文件系统(比如 GPFS)和分布式文件系统(比如 NFS V4)的支持。这使 AIX 系统非常适合保存文件和提供文件导出功能。在这个演示场景中,使用 NFS 协议导出一个名为 “/storage/enduser” 的目录。这个设置使用 JFS2 (Enhanced Journaled File System) 作为底层文件系统,但是很容易替换为 GPFS 等管理存储机器集群的文件系统。关于 AIX 上的 GPFS 和 NFS V4 支持的更多信息,请参见 参考资料。
清单 1. 创建要导出的目录
# hostname fsaix010 # mkdir /storage # mkdir /storage/enduser |
现在导出创建的目录,让所有用户具有读写权限,让将挂载这个共享的机器(IP 地址为 9.122.118.153,主机名为 linux-r4pv)具有根权限,然后检查在 /etc/exports 中是否创建了相应的条目。
清单 2. 导出创建的目录
# hostname fsaix010 # mknfsexp -d /storage/enduser -t rw -r 9.122.118.153 # cat /etc/exports /:/testdir -vers=3,rw,root=punter.in.ibm.com /:/user_new -vers=2,rw,root=punter.in.ibm.com /storage/enduser -rw,root=9.122.118.153 |
NFS 服务通常会在引导时自动地启动。但是,如果它没有启动,可以按以下步骤启动 NFS 服务。如果服务已经启动,以下步骤没有作用。
清单 3. 设置 NFS 服务
# hostname fsaix010 # mknfs 0513-029 The portmap Subsystem is already active. Multiple instances are not supported. Starting NFS services: 0513-029 The biod Subsystem is already active. Multiple instances are not supported. exportfs: /:/testdir: No such file or directory exportfs: /:/user_new: No such file or directory 0513-029 The nfsd Subsystem is already active. Multiple instances are not supported. 0513-029 The rpc.mountd Subsystem is already active. Multiple instances are not supported. 0513-029 The rpc.statd Subsystem is already active. Multiple instances are not supported. 0513-029 The rpc.lockd Subsystem is already active. Multiple instances are not supported. Completed NFS services. 0513-095 The request for subsystem refresh was completed successfully. |
exportfs 命令显示导出的路径和分配给它们的用户权限。可以使用 showmount 命令再次检查导出是否成功,这个命令显示指定地址的机器的导出列表。
清单 4. 检查导出是否成功以及共享是否可见
# hostname fsaix010 # exportfs /storage/enduser -rw,root=9.122.118.153 # showmount -e localhost export list for localhost: /storage/enduser (everyone) |
SLES 也支持 NFS 协议和与 AIX NFS 互操作。通常,从 AIX 导出的共享可以挂载在您的文件系统中的任何目录。把共享挂载在 “/mnt/remote_storage” 下面。
清单 5. 在 SLES 上使用 NFS 导入
linux-r4pv:~ # hostname linux-r4pv linux-r4pv:~ # mount -t nfs 9.182.192.250:/storage/enduser/ /mnt/remote_storage/ |
在前面的命令中,-t nfs 指定使用的协议或要挂载的文件系统类型。服务器地址是导出 NFS 共享的服务器的 IP 地址(或 FQDN),在这里是 9.182.192.250 或 fsaix010。导出的路径 /storage/enduser/ 是作为 NFS 共享导出的服务器上的本地路径。目标路径 /mnt/remote_storage/ 是挂载 NFS 共享的客户机机器上的本地路径。
注意,只有当这两台机器(服务器和客户机)属于不同的域时,才必须使用完全限定域名 (FQDN)。如果机器属于相同的域,指定短名称/主机名就够了。但是,在这两种情况下都可以使用 IP 地址和 FQDN。
现在,可以使用 mount 命令检查挂载操作是否成功,这个命令列出挂载的所有共享以及它们的类型和路径。
清单 6. 检查挂载是否成功完成
linux-r4pv:~ # hostname linux-r4pv linux-r4pv:~ # mount /dev/hda2 on / type reiserfs (rw,acl,user_xattr) proc on /proc type proc (rw) sysfs on /sys type sysfs (rw) debugfs on /sys/kernel/debug type debugfs (rw) udev on /dev type tmpfs (rw) devpts on /dev/pts type devpts (rw,mode=0620,gid=5) securityfs on /sys/kernel/security type securityfs (rw) /dev/hdc on /media/SLED100_001 type iso9660 (ro,nosuid,nodev,utf8,uid=0) 9.182.192.250:/storage/enduser/ on /mnt/remote_storage type nfs (rw,addr=9.182.192.250) |
在 SLES 上使用 Encrypted File Container
我们的目标是,确保在挂载的系统上创建并通过 NFS 在 SLES 上共享的所有用户文件是安全的。也就是说,确保使用 SLES 系统的最终用户创建的文件的静止数据是安全的。SUSE Linux Enterprise Server 通过分区加密和文件加密提供不同的数据保护方法。SLES 允许在安装期间或在正在运行的系统上设置 Encrypted File System (EFS) 以创建加密的分区,或者作为容器创建加密的文件(更多信息请参见 参考资料)。
在这三种方法中,前两个可以无缝地保护数据,但是必须为这种设置指定专用的分区。对磁盘进行分区需要执行格式化,这会导致现有数据丢失。另外,对分布式文件系统执行这种操作可能会导致问题。但是,实际上不需要重新分区,而是可以使用 Encrypted File as a Container 特性,通过创建容器文件无缝地保护数据。这个文件包含所有加密的数据,它可以作为创建的新文件和目录的容器。因此,如果您有一个正在运行的系统,那么只需创建一个新的容器文件并作为新的文件系统使用它,这会在把数据写到磁盘之前执行加密。在这个示例中,我们通过 NFS 使用 Encrypted File as a Container 特性帮助保护远程数据。
下面是在 SLES 上配置 Encrypted File Container 的详细步骤,可以通过这些步骤保护 NFS 共享上的数据。
步骤 1:创建将挂载 Encrypted File Container 的目录(例如 /mnt/encrypt)
Encrypted File Container 形成一个循环(loop)设备,它将挂载在 /mnt/encrypt。现在,当在这个路径中创建新文件时,所有数据实际上都会加密并存储在容器文件中,而容器文件驻留在 NFS 共享上。所有数据块并不存储在本地文件系统中,而是存储在通过 NFS 挂载的共享(/mnt/remote_storage,它映射到 AIX 机器上的 /storage/enduser)上。因此,数据实际上以加密的形式驻留在远程 AIX 机器上。
清单 7. 创建目录(例如 /mnt/encrypt)
linux-r4pv:~ # hostname linux-r4pv linux-r4pv:~ # mkdir /mnt/encrypt |
按 SLES 文档中的说明使用 YaST 工具创建容器文件(见 参考资料)。通常,通过 Computer->Control Center 启动 YaST 工具。选择 System 组,然后双击 YaST 图标。它会要求输入根密码。输入根密码并单击 Continue。在工具窗口中,从左边的边栏选择 System。双击 Partitioner 图标并选择 Yes 以响应警告消息。Expert Partitioner 窗口打开之后,从窗口底部的 “Crypt File” 下拉框中选择 Create Crypt File。
图 2. 创建新的循环设备设置
在 Create New Device Loop Setup 窗口中(见 图 2),必须输入将包含加密数据的容器文件的路径。因为已经通过 NFS 把 AIX JFS2 共享挂载在 /mnt/remote_storage 目录,所以指定容器文件的路径为 /mnt/remote_storage/secure_container。不需要在这个位置显式地创建此文件;这会自动地完成。选中 Create Loop File 选项。输入要创建的容器文件的大小(以 MB 为单位)。这是容器文件的容量,它保存的数据量不能超过这个值。选择 Format 单选按钮并选择容器文件上要使用的文件系统类型。这里显示的示例选择了 Ext2 File System。另外,选中 Encrypt file system 复选框。指定前面创建的目录 (/mnt/encrypt) 作为挂载点。可以修改 Fstab 选项和文件系统的选项,但是建议新手不要这么做。单击 OK 按钮,出现一个新的窗口,要求输入数据加密和解密所用的密码。在两个文本框中输入密码(长度必须大于等于 8 个字符),然后单击 OK 按钮关闭窗口。
一定要记住这个密码。
图 3. Expert Partitioner 表中的新条目
表中会出现一个设备名为 /dev/loop0 的新条目,见 图 3。现在配置完成了,但是在这个窗口中单击 Apply 之后修改才会生效。单击 Apply 之后,要求您确认应用修改,见图 4。再次单击 Apply 之后,修改持久化,Encrypted File Container 就准备好了。
图 4. 确认框
应用修改之后,新的基于文件的循环设备将挂载在指定的挂载点上。可以使用 mount 命令检查它:
清单 8. 检查循环设备是否成功挂载了
linux-r4pv:~ # hostname linux-r4pv linux-r4pv:~ # mount /dev/hda2 on / type reiserfs (rw,acl,user_xattr) proc on /proc type proc (rw) sysfs on /sys type sysfs (rw) debugfs on /sys/kernel/debug type debugfs (rw) udev on /dev type tmpfs (rw) devpts on /dev/pts type devpts (rw,mode=0620,gid=5) securityfs on /sys/kernel/security type securityfs (rw) /dev/hdc on /media/SLED100_001 type iso9660 (ro,nosuid,nodev,utf8,uid=0) 9.182.192.250:/storage/enduser/ on /mnt/remote_storage type nfs (rw,addr=9.182.192.250) /dev/loop0 on /mnt/encrypt type ext2 (rw) |
首先使用 NFS 在 SLES 机器上挂载了 AIX 导出的目录,然后在一个本地目录上挂载在这个 NFS 共享上创建的 Encrypted File Container。因此,在这个本地目录 (/mnt/encrypt) 中创建的所有文件实际上以加密的形式驻留在 Encrypted File Container 中,而 Encrypted File Container 驻留在远程 AIX 机器上,这样就实现了静止数据保护。
现在,已经成功地完成了设置,SLES 机器上的用户通过挂载的设备 (/mnt/encrypt) 创建的所有文件将安全地存储在 AIX 导出的 NFS 共享中,从而确保静止数据的安全性。在挂载的设备上创建的所有文件将由 /mnt/remote_storage/secure_container 文件中的 Encrypted File Container 安全地存储。我们来测试一下。
清单 9. 登录 SLES 机器并访问 NFS 挂载的共享
linux-r4pv:~ # hostname linux-r4pv linux-r4pv:~ # cd /mnt/remote_storage/ linux-r4pv:/mnt/remote_storage # ll total 1024 -rw-r--r-- 1 root root 1048576 Jul 28 21:27 secure_container |
清单 10. 创建示例测试文件
linux-r4pv:/mnt/remote_storage # hostname linux-r4pv linux-r4pv:/mnt/remote_storage # cd /mnt/encrypt/ linux-r4pv:/mnt/encrypt # ll total 12 drwx------ 2 root root 12288 Jul 29 02:47 lost+found linux-r4pv:/mnt/encrypt # echo Hello,This is a test file>test.txt linux-r4pv:/mnt/encrypt # ll total 13 drwx------ 2 root root 12288 Jul 29 02:47 lost+found -rw-r--r-- 1 root root 26 Jul 29 02:54 test.txt |
清单 11. 读取刚创建的文件,确认可以以解密的格式得到文件
linux-r4pv:/mnt/encrypt # hostname linux-r4pv linux-r4pv:/mnt/encrypt # cat test.txt Hello,This is a test file |
清单 12. 检查 AIX 和 SLES 系统是否对 NFS 共享中的容器文件执行了加密
linux-r4pv:/mnt/encrypt # hostname linux-r4pv linux-r4pv:/mnt/encrypt # cd /mnt/remote_storage/ linux-r4pv:/mnt/remote_storage # ll total 1024 -rw-r--r-- 1 root root 1048576 Jul 28 21:34 secure_container linux-r4pv:/mnt/remote_storage # cat secure_container <garbage output> |
secure_container 文件采用加密的格式,只有垃圾数据。因为文件大小为 1MB,这里没有给出 cat secure_container 命令的实际输出。但是,在输出中确实看不出这是一个容器文件以及它包含加密格式的 test.txt 文件。
# hostname fsaix010 # cd /storage/enduser # ls secure_container # cat secure_container <garbage output> |
这样,通过使用 SLES Encrypted File Container,我们在由 AIX 管理的远程位置上成功地存储了静止数据,数据采用加密的格式存储,由一个密码无缝地保护。
关于在生产环境中使用 Encrypted File Container 的方法,请参考 SLES 文档和版本说明。
本文讲解了如何使用 SLES 提供的 Encrypted File Container 特性对由 AIX 导出并由 SLES 通过 NFS 使用的静止数据进行保护。
学习
-
IBM Redbook Implementing NFS Version 4 in the Enterprise Planning and Migration Strategies 介绍在企业中实现 NFS Version 4 的方法,详细讨论如何以它作为基于 AFS 和 DCE/DFS 的遗留企业文件系统的迁移目标。
-
详细信息请参考文档 Encrypting Partitions and Files in SLES 10。
-
了解关于 IBM General Parallel File System 的更多信息。
-
IBM Redbook Securing NFS in AIX:
An Introduction to NFS Version 4 in AIX 5L Version 5.3 全面介绍 NFS Version 4 和 AIX NFS Version 4 的实现细节。
- AIX and UNIX 专区:developerWorks 的“AIX and UNIX 专区”提供了大量与 AIX 系统管理的所有方面相关的信息,您可以利用它们来扩展自己的 UNIX 技能。
- AIX and UNIX 新手入门:访问“AIX and UNIX 新手入门”页面可了解更多关于 AIX 和 UNIX 的内容。
- AIX and UNIX 专题汇总:AIX and UNIX 专区已经为您推出了很多的技术专题,为您总结了很多热门的知识点。我们在后面还会继续推出很多相关的热门专题给您,为了方便您的访问,我们在这里为您把本专区的所有专题进行汇总,让您更方便的找到您需要的内容。
- developerWorks 技术活动和网络广播:随时关注 developerWorks 技术活动和网络广播。
-
AIX Wiki:访问这个交流 AIX 相关技术信息的协作环境。
获得产品和技术
讨论
-
参与 AIX 和 UNIX 论坛:
- AIX 论坛
- 针对开发人员的 AIX 论坛
- Cluster Systems Management
- IBM Support Assistant 论坛
- 性能工具论坛
- 虚拟化论坛
- 更多 AIX 和 UNIX 论坛
- 加入 My developerWorks 社区。

