2005 年,花旗银行、Ameritrade、时代华纳和美国银行在几个月内相继报告,包含客户个人信息的备份磁带失踪,而这些公司没有任何一家能够排除被盗的可能性。在未加密的备份磁带丢失导致个人信息泄漏的120 万名美国银行客户中,有几位正好是美国参议员。毫无意外,这几位参议员提出加强立法,规范银行和其它金融机构对备份介质的处理,要求一些机构的磁带备份数据必须加密。
其实,上述只是数据泄露事故列表中的案例之一,每年,因为数据泄露造成企业财产经济损失的案例不计其数。很多企业都发生过因为员工恶意破坏、或者其他人为疏漏而导致的磁带丢失,为加密的数据外泄出去,给企业带来不同程度的损失。
如今当我们谈论存储安全话题时,往往会涉及到数据在存储、备份以及归档过程中,是否具备很高的安全性,这也就是我们常常说起的数据的加密,能够应用到这个领域的加密解决方案主要有磁带加密、备份软件加密以及专用设备加密。
给数据加上保护锁
尽管在目前比较先进的传统磁带设备中有很多强制的加密功能,它会帮助你,使你现有的备份处理更加坚固、更加真实。如果你想拥有这些新的功能的话,你需要升级你的磁带介质、升级你的驱动器类型,并且当一个新的驱动器或介质连入到你的备份系统你还需要改变你备份管理软件的一些配置信息,这都将给你带来很多额外的工作量。而通过专用设备的加密方式更是百花齐放,它采用内置的处理器来处理加密和管理密钥,只不过其需要增加的成本也是比较大的,所有这部分不在本文的讨论范围之内。
笔者发现很多公司或组织单位都宁愿选择备份管理软件附带的加密功能,它可以作为一个功能选项在备份服务器上执行加密工作。如果你的版本足够新的话或许你现在就可以在你的备份服务器上设置此项功能,如果版本低你也可以升级目前的版本到一个具备加密功能的版本,这样做的好处就是你可以免去对备份策略或者处理过程的大量修改。
来自赛门铁克公司的备份软件NetBackup(简称NBU)同样也提供了加密备份的选项,被称为NetBackup Encryption,鉴于赛门铁克NBU在企业级备份软件市场上占有大部分的市场份额,如何应用赛门铁克NetBackup Encryption对企业备份数据进行加密同样十分重要。
本文旨在说明如何应用NetBackup Encryption进行加密备份。不过仅仅是笔者整理的一个草稿,根据Encryption手册,罗列一切有关知识,然后加入自己的经验。用于今后建成标准文档。下面将重点介绍NetBackup Encryption中的相关概念:
DES加密算法与密码文件
DES加密算法是一个国际标准算法,据说当密码长达512位时,一个人穷尽一生也无法破解。对于加密/解密,并不是我专长。但需要知道的是,生成加密文件所使用的密码,决定了加密文件的最终状态。因此,在相同计算机上生成的加密文件,可以分给不同的计算机来使用。这使得我们得到了一个穿越防火墙的极好办法。这个问题在后面还会有叙述。
密钥的长度
40位,56位,128位都是不同的密钥长度。很明显,选择长度越大的密钥则破解难度越高。在Netbackup 5.0中提供了40和56两种密钥。而5.1则增加了128位密钥。在6.0则再次增加了256位密钥。
密码
在创建密码文件时,需要输入一个密码。请注意,这并不是加密算法的密码,因此没必要把他设定到256位。这个密码决定了密码文件中的数据,而密码文件才最后生成DES密码。
加密备份的设定
在策略中,可以选择加密还是不加密。同时,还有一个CRYPT_OPTION参数在起作用。
当CRYPT_OPTION的值为allow的时候,策略选择加密或者不加密都可以通过
当CRYPT_OPTION的值为required的时候,策略必须选择加密才能通过
当CRYPT_OPTION的值为denied的时候,策略则不能进行加密备份
恢复的过程
服务器首先根据映像确认该备份是否被加密。然后,服务器连接客户端的bpcd启动恢复。
加密与解密过程都是在客户端上完成的,服务器本身不参与数据的加密与解密。因此,不管是备份还是恢复,其数据流都是被加密的。
加密备份与恢复的理论过程
当主服务器根据日程表发起备份后,bpcd接受备份发起指令后,利用密码文件为即将发送的数据加密。因此,从客户端到服务器的数据流是已经加密的。而服务器端则完全按照标准的方法来保存加密数据流。而当得到恢复请求后,服务器端不会进行解密处理,而是直接将数据发送给客户端。当客户端收到数据后,再通过密码文件对数据进行解密。因此,恢复的数据流也同样是加密的。
安装
必须在主服务器上安装ENCRYPTION组件。这个组件存在于DB Option光盘上。属于Add ON软件。
ENCRYPTION组件需要单独License,没有Tier级别限制
标准安装过程
1。以root身份登录主服务器
2。确认License
3。将DB Option光盘放入光驱
4。切换至光盘目录
5。执行安装脚本
./install
在提示版本时,回答y
6。集群环境必须在每个节点上各自执行
7。在客户端安装ENCRYPTION软件
推送软件的过程
bpinst命令并不是一个专门用于加密的安装命令。他适用于几乎所有的NetBackup软件的安装。
-ENCRYPTION指示bpinst命令去推送加密软件。
而其实在windows客户端,这一步是不需要的。因为Windows版本的NetBackup一旦安装,就包括了所有DB Agent和AddON软件。
推送软件的同时,可以设定密码。但我个人不推荐这样做。因为这样做不仅命令非常长,且并不是非常有利于保护密码。
推送密码
bpkeyutil命令可以向客户端推送密码文件。密码文件存在于客户端上,是为客户端加密提供算法的。
在windows环境里,密码文件位于VERITAS_DIR
etbackupvarkeyfile.dat。关于这一点,手册中指明的路径是错误的,要注意。
在Unix环境里,密码文件位于/usr/openv/netbackup/keyfile
在5.1文档中,推送密码的命令是bpkeyfile,在6.0文档中,推送密码的命令是bpkeyutil。而其实,5.1也一样是bpkeyutil命令推送密码。bpkeyfile我总是失败,不知道是bug还是其他什么原因。
推送密码的命令
bpkeyutil -client 客户端名
推荐的办法
大部分应用NetBackup加密的用户,都会有非常严格的安保措施,对防火墙的控制也非常严格。而bpkeyutil并不使用bpcd或者vnetd这些端口,具体使用什么端口,在手册中没有说明。即便知道,我们也不得不要求用户多开放一个端口。而一旦密码文件推送成功,这个端口就没有作用了。给用户留下这样一个无用端口,是会引起很多不必要的问题的。
解决的办法其实很简单。我在与主服务器同网段的机器中找了一个客户端,用bpkeyutil命令向其推送密码,密码生成后,将其改名。再推送其他密码文件。他们的区别就是推送时设定的密码。然后将这些密码文件复制到目标客户端的相应位置上,密码文件就算推送完成了。这样就可以完全绕过那个我们不必要知道的端口。
保护密码文件
密码文件是加密备份与恢复所必需的钥匙。一旦被人取道,则很有可能被人非法恢复用户的备份。因此,密码文件的安全性是非常重要的。
在Unix环境中,可以通过修改访问权限的方法来保护。
在Windows环境中,则一定要注意密码文件所在分区的访问权限。
重要警告
密码文件的生成密码是具有历史性的。如果你中途修改过密码文件的密码,那么,你就必须记住包括原先密码在内的所有密码。因为,一旦密码文件遗失,你需要重建密码文件的时候,要根据该密码文件的历史,重新输入所有密码,才能生成对应的密码文件。
保护密码
密码文件的生成依赖于密码。因此,VERITAS建议将密码写在纸上,装入信封,并封入保险柜内。当然,根据用户数据安全级别的不同,我们可以采用很多方法来保护这些密码的秘密,不一定非得这样大动干戈。