使用 SLES Encrypt File Container 保护远程 AIX V6.1 静止数据

AIX® V6.1 广泛地作为文件服务器的操作系统,它支持 IBM® General Parallel Filesystem (GPFS) 和 Network Filesystem Version (NFS) V4。因此,让 Linux® 客户机远程访问 AIX 系统上的数据已经成了普遍的需求。考虑到在远程服务器上保存静止数据的高安全风险,对数据进行加密看起来是合适的解决方案。Encrypted File System 负责保护静止数据,但是通常必须在安装期间进行配置,而且文件服务器必须提供相应的支持。SLES (SUSE Linux Enterprise Server,Novell 提供的一种流行的 Linux 发行版)支持 Encrypt File Container,它在功能方面与 Encrypted File System 相当,但是也可以在正在运行的系统上配置,而且独立于文件服务器提供的支持。本文讨论如何在基于 AIX 的文件服务器环境中集成它以保护静止数据。

Sandeep Patil, 软件工程师, IBM

Sandeep Patil 的照片Sandeep Ramesh Patil 是 IBM India Software Lab 的软件咨询工程师。他已在 IBM 工作了七年,着重研究分布式技术,包括 DCE、SARPC 以及安全产品,比如 IBM Network Authentication Services (IBM Kerberos)。目前,他正在开发新的特性,并在为 IBM Network Authentication Services 实现与安全有关的 RFC 及其产品支持。Sandeep 拥有 University of Pune,India 的计算机科学与工程学士学位。


developerWorks 大师作者

Bhushan Pradip Jain, 软件工程师, IBM  

/developerworks/i/p-bpjain.jpgBhushan Pradip Jain 是在 IBM India Software Labs 工作的助理软件工程师。他在 alphaWorks 上发布了一种名为 “Policy-Driven File Encryption Explorer Based on OpenPGP” 的技术,当前从事 IBM Unified Scalable Storage。他还参与过开发 Intrusion Detection System 和实现多天线望远镜操作系统的一部分。Bhushan 在 Pune 的 College of Engineering (COEP) 获得了计算机工程学士学位。



2009 年 11 月 19 日

简介

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 特性保护它们。本文研究一个示例并详细解释涉及的步骤。

场景:保护由 AIX 导出并由 SLES 访问的数据

图 1 说明示例设置,其中有一个 AIX 系统作为文件服务器,它使用 NFS 协议导出文件。SLES 系统配置为 AIX 系统的 NFS 客户机,最终用户从这里访问他们的文件。作为管理员,您必须确保使用 SLES 系统的用户访问的所有文件安全地存储在远程 AIX 文件服务器上。

图 1. 示例设置
AIX 系统作为文件服务器,使用 NFS 协议

AIX 6.1 作为文件服务器:使用 NFS 导出

AIX V6.1 的特性非常丰富,包括虚拟化特性、存储管理功能以及对集群文件系统(比如 GPFS)和分布式文件系统(比如 NFS V4)的支持。这使 AIX 系统非常适合保存文件和提供文件导出功能。在这个演示场景中,使用 NFS 协议导出一个名为 “/storage/enduser” 的目录。这个设置使用 JFS2 (Enhanced Journaled File System) 作为底层文件系统,但是很容易替换为 GPFS 等管理存储机器集群的文件系统。关于 AIX 上的 GPFS 和 NFS V4 支持的更多信息,请参见 参考资料


使用 NFS 协议从 AIX 导出目录

步骤 1:创建要导出的目录

清单 1. 创建要导出的目录
# hostname
fsaix010

# mkdir /storage

# mkdir /storage/enduser

步骤 2:导出创建的目录

现在导出创建的目录,让所有用户具有读写权限,让将挂载这个共享的机器(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

步骤 3:设置 NFS 服务

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.

步骤 4:检查导出是否成功以及共享是否可见

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 导入

SLES 也支持 NFS 协议和与 AIX NFS 互操作。通常,从 AIX 导出的共享可以挂载在您的文件系统中的任何目录。把共享挂载在 “/mnt/remote_storage” 下面。

在 SLES 上使用 NFS 导入

清单 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 特性帮助保护远程数据。


配置 Encrypted File 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

步骤 2:使用 YaST 工具创建容器文件

按 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. 确认框
成功地创建 efc

应用修改之后,新的基于文件的循环设备将挂载在指定的挂载点上。可以使用 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 使用的静止数据进行保护。

参考资料

学习

获得产品和技术

讨论

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=AIX and UNIX, Linux
ArticleID=448041
ArticleTitle=使用 SLES Encrypt File Container 保护远程 AIX V6.1 静止数据
publish-date=11192009