数据泄露频发,加密文件系统能否成为移动办公的安全基石?
相信大家都不止一次看到过类似这样的新闻头条:“某公司泄露三千万用户社保号及财务数据,责任竟在‘承包商’?”通常的剧情是,某位外部人员(注意,极少是内部员工)在一台似乎装载了海量数据的笔记本电脑上,存储了所有敏感信息,随后设备遗失或被盗,且无人能说清具体时间和地点。又或者,某家供应商在运输一整盒备份磁带时,其车辆竟然“恰好”没有配备可靠的防盗措施。
说实话,这类解释总让人觉得有些站不住脚,甚至荒诞:承包商为何能轻易获取全部核心数据?为何需要将所有数据下载到本地笔记本?又为何会委托安全措施如此薄弱的运输方来递送关乎企业命脉的备份介质?更重要的是,他们如何能确切知晓丢失了哪些数据,这些数据是否经过了加密或得到了妥善保护?
疑问实在太多了。回到正题,我们今天要探讨的,是如何利用加密文件系统在硬盘层面为敏感数据构筑防线。这套方案尤其适合移动办公用户,以及需要在服务器或工作站上守护数据安全的人员。我们将使用一款既简单又强大的工具:cryptsetup-luks。它的核心是创建一个加密分区,只需在挂载时输入密码,之后你便可以像使用普通分区一样操作它。
目前,主流的Debian、Ubuntu及Fedora发行版都已内置了对cryptsetup-luks的支持。无需修改内核或进行复杂配置,直接安装即可使用。
在Debian和Ubuntu系列上,执行:
# aptitude install cryptsetup
在Fedora上,执行:
# yum install cryptsetup-luks
准备工作:先规划,后加密
需要提前说明的是,cryptsetup无法直接对已有数据的现有分区进行加密。因此,步骤是创建一个全新的加密分区,再将数据迁移进去。在这个过程中,GParted(Gnome分区编辑器)会是一个得力助手,它能让你方便地调整分区大小、移动、删除或创建分区,并以多种文件系统进行格式化。得益于对内核所支持的所有分区类型及文件系统的兼容,即使在双系统环境下的Windows分区,它也能应对自如。如果是全新的硬盘,不妨考虑使用GParted Live CD来操作。
本文主要聚焦于为数据分区加密。虽然理论上也有方法为存有敏感信息的其他系统分区(如/var、/etc等)加密,但这些操作通常更为复杂和棘手,且难以实现启动时自动解密。因此,我们只讨论技术成熟、稳定性经过验证的方案,毕竟数据安全,稳定压倒一切。
另外有几个关键点需要注意:首先,为新分区选择何种初始文件系统并不要紧,因为后续加密过程会覆盖它,加密后的文件格式是独立的。其次,密码是守护加密分区的唯一钥匙。一旦丢失密码,数据将无法挽回,这一点务必牢记。
实战:创建并配置加密分区
当你拥有一个空白的新分区后,就可以使用cryptsetup命令为其上锁了。操作前,请务必再三确认目标分区是否正确:
# cryptsetup --verbose --verify-passphrase -c aes-cbc-plain luksFormat /dev/sda2
WARNING!
这将不可逆转地覆盖 /dev/sda2 上的所有数据。
Are you sure? (Type uppercase yes): YES
Enter LUKS passphrase:
Verify passphrase:
Command successful.
以上命令完成了分区的加密初始化。接下来,我们需要创建一个可以挂载的逻辑设备,并为其命名。本例中我们沿用sda2这个名字,当然你也可以使用任何你喜欢的名称,比如“secret_vault”或“private_data”。
# cryptsetup luksOpen /dev/sda2 sda2
Enter LUKS passphrase:
key slot 0 unlocked.
Command successful.
此时,可以通过以下命令在/dev/mapper路径下查看创建的虚拟设备:
$ ls -l /dev/mapper
total 0
crw-rw---- 1 root root 10, 63 2007-06-09 18:38 control
brw-rw---- 1 root disk 254, 0 2007-06-09 19:46 sda2
接着,在这个逻辑设备上创建文件系统:
# mkfs.ext3 /dev/mapper/sda2
现在,创建一个挂载点,以便我们能实际使用这个加密分区。记住,挂载操作的对象是/dev/mapper/下的设备。以下示例将其挂载到用户目录下,请注意区分需要root权限的操作:
$ mkdir /home/me/crypted
# mount /dev/mapper/sda2 /home/me/crypted
确认挂载成功,并写入一个测试文件:
# df -H
[...]
Filesystem Size Used A vail Use% Mounted on
/dev/mapper/sda2 7.9G 152M 7.3G 3% /home/me/crypted
# cd /home/me/crypted
# nano test
# ls
lost+found test
权限管理:让加密分区真正可用
到目前为止,加密分区已经就绪,但还有一个现实问题:目前只有root用户能访问它。为了让普通用户也能使用,我们需要在/etc/fstab中像管理普通分区一样配置这个虚拟设备。添加如下一行,允许用户在不需要特殊权限的情况下挂载和卸载:
/dev/mapper/sda2 /home/me/crypted ext3 user,atime,noauto,rw,dev,exec,suid 0 0
这样,用户“me”就可以自行挂载该分区了:
$ mount ~/crypted
但此时“me”可能仍无法写入数据。因此,我们还需要为已挂载的加密目录设置正确的本地权限:
# chown me:me /home/me/crypted/
# chmod 0700 /home/me/crypted/
至此,用户“me”已经可以自由地读写这个加密空间了。如果场景更复杂,例如需要多人协作,可以在此基础上设置更精细的目录权限,实现不同用户对不同加密文件夹的访问控制。
使用完毕后,可以手动卸载并关闭加密分区:
$ umount ~/crypted
# cryptsetup luksClose sda2
整个流程的核心在于,只有在使用`luksOpen`打开加密设备时才需要输入密码。打开并挂载之后,它的使用体验就和任何普通分区毫无二致了。请再次牢记,密码是最后的防线,一旦丢失,数据将永久锁闭。
最后,考虑到普通用户可能无法直接执行需要root权限的cryptsetup命令,我们可以通过配置sudo规则来便捷授权,这对于Ubuntu等发行版尤为方便。其他方案还包括设置为系统启动时自动挂载,或创建桌面快捷图标,让用户能根据需要一键开启或关闭这个加密空间。选择哪种方式,就取决于你的具体管理需求和使用习惯了。
