安全烤肉串

作者:Marcel Gagné

啊,弗朗索瓦。过来看看这个。本期杂志的主题是安全,我围绕这个主题开发了一份菜单。 什么? 当然,这不是关于网络的。你知道,我的朋友,经营一家成功的餐厅最重要的是什么吗? 当然,一个藏酒丰富的酒窖很重要——我同意你的看法,但我在想的是食物,弗朗索瓦。你看,我们的客人,他们渴望很多东西,而我们作为餐馆老板的职责是确保他们的味蕾不断受到他们意想不到的方式的刺激。

你在说什么?弗朗索瓦,安全是用 Linux 烹饪的许多方面。网络安全只是其中一项,毫无疑问,每个人都会想到网络安全。通过选择不同的食材,我们保持味觉的警觉和清新。例如,看看这第一道菜。你不能否认它的安全含义,然而——弗朗索瓦,你为什么不专心听讲?嗯?啊,对不起,我看到我们的客人到了。请大家坐下。我要弗朗索瓦立刻去拿些酒 马上

弗朗索瓦!我们酒窖里有一瓶 1998 年的伏旧园特级园,我想它今晚会满足每个人的味蕾,并增添一种特殊的 难以言喻的魅力。 一款可爱的勃艮第葡萄酒,我的朋友们快点,弗朗索瓦。 快点

弗朗索瓦和我正在讨论看待安全概念的不同方式。当我们使用 Linux 烹饪时,我们都习惯于将“安全”视为网络安全,但正如拜访罗热先生和他著名的词库会告诉你的那样,安全可以意味着很多其他事情。你会发现诸如债券、债券证书、存款、保释金、人质、困境、身份验证和收据之类的词,仅举几例。你在知道你定期备份时所享受的安全感又如何呢?你确实定期备份,不是吗?然后,我们有工作保障,你体验到的那种知道你定期备份的安全感。一个小笑话,不是吗

说真的,丢失文件仍然可能发生,如果你的最后一次备份是昨晚甚至两小时前呢?尽管有良好的习惯和对工作保障的健康追求,你仍然丢失了你的文件。你能做什么?俗话说,常识告诉我们,如果我们从 Linux 系统中删除一个文件,那就完了,我的朋友们。它永远消失了。然而,这只是部分事实。有可能找回一个文件。请看。

在我的测试系统中,我有一个小驱动器挂载在 /mnt/tinydrive 上。如果我使用命令

df /mnt/tinydrive

我会得到以下信息

/dev/hdd6   42913   9063    31634  22% /mnt/tinydrive
我告诉过你它很小,不是吗?在这个小驱动器上,我创建了一些目录和文件。其中一个文件名为 cabernet,它包含我家卡百内葡萄酒的秘密。实际上,它不包含任何此类东西,但听起来很神秘。说到卡百内葡萄酒,弗朗索瓦带着勃艮第葡萄酒回来了。

现在,如果我列出这个文件,它会像这样显示

$ ls -l
-rw-r--r--  1 marcel  wines  77 Jun 21 04:38 cabernet

77 个字节,你知道这个秘密很优雅。现在,如果我用 rm cabernet 删除这个文件,它就彻底消失了,无法读取。然而,只要有一点毅力和运气,你就可以像我将向你展示的那样找回这个文件。重要的是立即卸载有问题的驱动器(或者如果文件在你的根驱动器上则关机)

umount /mnt/tinydrive
从你删除文件的时间开始,时间流逝得越多(因此,写入磁盘的数据越多),你完全恢复它的机会就越渺茫。

为了尝试抢救有问题的数据,我使用了一个名为 debugfs 的程序。别害怕,我的朋友们。你会在你的系统上找到这个命令。它是 e2fsprogs 包的一部分

# debugfs /dev/hdd6
debugfs 1.14, 9-Jan-1999 for EXT2 FS 0.5b, 95/08/09
debugfs:

如果我在 debugfs 提示符下输入 lsdel,我会得到一个看起来像这样的列表

7665    0 100644  5248   6/  6 Thu Apr 19 18:05:30 2001
  32  500 100600 12288  12/ 12 Thu Jun 21 04:38:39 2001
 158  500 100644    78   1/  1 Thu Jun 21 04:38:39 2001
 157  500 100644    77   1/  1 Thu Jun 21 04:40:25 2001
第一列是文件的 inode。第二列是所有者的 UID。由于我的 UID 是 500,并且我的意外删除发生在星期四的 21 号,所以看起来我的文件可能是列表中列出的文件之一。此外,我记得我的文件是 77 字节长。没有列出文件名,所以你可以想象,你对原始文件了解的细节越多,就越好。仍然在 debugfs: 提示符下,我输入以下内容
debugfs: dump <157> /home/marcel/cabs
157 是 inode 号码,/home/marcel/cabs 是另一个(仍然)挂载的文件系统上的文件。通过使用 debugfs 的 dump 命令,我可以将 inode 157 的内容重定向到一个名为 cabs 的新文件。现在,让我们看看这个操作的结果
$ cat /home/marcel/cabs
Why try making fine Cabernets when you can buy them
from Henri's Fine Wines?
不会吧!秘密泄露了!

你可能会发现另一个有用的工具来恢复那些丢失的文件是一个名为 recover 的小程序。recover 由 Tom Pycke 编写,使尝试浏览可能非常长的已删除 inode 列表的整个过程变得更加容易,可以说几乎毫不费力。要获取 recover 的副本,请访问 recover.sourceforge.net/linux/recover。下载最新的源代码,然后解压并构建它。这一切都非常容易

tar -xzvf recover-1.3.tar.gz
cd recover-1.3
make
make install

要使用该程序,你可以简单地输入 recover,它将扫描你系统上可用的各种文件系统。你也可以通过在命令行上指定文件系统来让它从适当的文件系统开始。接下来是一个问答环节,旨在缩小你的已删除文件范围,而无需浏览庞大的列表。recover 程序为你整理数据。这是一个例子

# recover /dev/hdd6
Recover v1.3 by Tom Pycke <Tom.Pycke@advalvas.be>
Getting inodes (this can take some time)...
debugfs 1.14, 9-Jan-1999 for EXT2 FS 0.5b, 95/08/09
In what year did you delete the file? (eg. 1999): 2001
然后程序会询问月份,然后是日期和时间范围以及可能的文件大小范围。当所有问题都回答完毕后,我收到了以下输出
=> 158 78 JUN THU 21 4:38:39 2001
=> 157 77 JUN THU 21 4:40:25 2001
2 inodes found. Where shall i dump them?
(directory):  /tmp
这些文件将被命名为 dump157 和 dump158。剩下的就是用 cat 查看它们的内容。如果这些可能是二进制文件,那么首先使用 file 命令可能更有意义。

正如我们所知(以及罗热先生也发现的),安全还有另一方面。我们可能确信我们可以从 ext2fs 文件系统中恢复已删除的文件,但另一方面呢?如果文件中的信息是绝密性质的,而我不想冒任何人再次看到这个文件的风险呢?如果我宁愿让这个文件消失在一些完全不适合适当葡萄栽培的黑暗区域呢?如果这些信息泄露出去,可能会产生国际安全影响。

如果你的系统包含最新版本的 fileutils 包(其中包含 cp、mv 等程序),那么解决方案就在手边。你会找到一个名为 shred 的程序,它会获取你的文件并将其,嗯,粉碎掉

$ shred secret_instructions

如果我像上面那样使用命令,文件 secret_instructions 将确实是秘密的,但它不会被删除。但是,它将被打乱,很像一份充分搅拌的煎蛋卷。对于真正注重安全的人来说,最好使用此版本的命令

$ shred -z -u secret_instructions
除了打乱之外,程序还将用空字符覆盖该文件(-z 标志),然后完全删除它(-u)。你的秘密是安全的,我的朋友们

我们今天的烹饪探索从备份的轻微暗示开始。那么,假设你定期将数据存档到磁带上(这是一个非常好的主意——我必须称赞你,我的朋友们)。然后将这些磁带安全地移动到异地存储。你很可能已经备份了那些你非常希望从系统中删除的秘密文件。让我们假设我已经使用 tar 存档了 /etc/profile 文件

tar -cvf /tmp/profile.tar /etc/profile

这个简单的 tar 文件非常透明

$ more /tmp/profile.tar
etc/profile01006440000000000000000000001163072353 262310117170
ustar  rootroot
# /etc/profile
正如你所看到的,存在的文件或文件的内容在存档中是可见的。但是当然,我的朋友们,我知道我可以简单地用以下命令解压文件
tar -xvf filename.tar
但我想说明一个问题。如果我们所有的 tar 存档都被加密了呢?这就是 sectar 背后的想法,它是 Brian Wagener 和 Katrina Illari 编写的 GNU tar 的安全扩展。你可以从 sourceforge.net/projects/star 获取最新的 sectar。

你需要两个软件包。一个是 GNU tar 发布的补丁版本。第二个是 sectar。首先解压 tar 包并构建它

tar -xzvf tar_sectar.tar.gz
cd tar-1.13
make
make install

这几乎与你系统上的原始 tar 包相同,只是有一个非常有趣的选项。如果你输入

/usr/local/bin/tar --help
你会注意到以下内容
-e, --encrypt   filter the archive through encryptor
啊,神秘...但要使用此功能,你必须首先构建 sectar 包。使用最新的源代码,我按照以下步骤操作
tar -xzvf sectar-1.02.tar.gz
cd sectar-1.02
make
make install
使用这种新发现的加密能力,我将重新创建我的绝密存档
$ tar -ecvf /tmp/profile.tar /etc/profile
The 256 bit key created is keyfile.993515072
我现在可以取出这个密钥文件(它位于我的工作目录中)并将其保存到软盘或安全位置,以备我需要恢复文件之日使用。如果密钥文件到位,那么从 tar 文件中提取数据就轻而易举了。但是,在没有密钥文件的情况下,你的信息仍然是秘密的。当我们再次查看这个存档时(没有 密钥文件,当然),我们看到的是乱码、无法读取和 当然 无法打印的内容。

再一次,我的朋友们,时间不早了,我们都必须开始考虑回家了。你也一样,弗朗索瓦。但在你这样做之前,请为我们的客人续杯。所有这些阴谋无疑并没有减轻他们的口渴。不像邦德先生,轻轻地倒酒,不要搅拌也不要摇晃。太棒了。 谢谢,弗朗索瓦。

我的朋友们,很高兴再次在 Chez Marcel 为您服务。请记住下次再次光临。弗朗索瓦会为您准备好桌子。

祝您健康祝您胃口好

资源

Brochettes de Sécurité
Marcel Gagné (mggagne@salmar.com) 是 Salmar Consulting, Inc. 的总裁,这是一家系统集成和网络咨询公司。他是《Linux 系统管理:用户指南》的作者,该书将于 2001 年 9 月由 Addison Wesley 出版。你可以从他的网站 www.salmar.com/marcel 了解更多信息。
加载 Disqus 评论