如何防止数据/tmp
泄露ramfs
?tmpfs
有没有一种简单的方法可以配置/tmp
启动期间的自动安装,以便文件在计算机关闭后写入磁盘而不留下可恢复的数据?例如ecryptfs
使用随机密钥...
我正在使用 Ubuntu 10.10。
我不使用全盘加密,因为无人值守启动对我来说很重要。我可以接受系统文件不加密。我担心的是个人数据、互联网浏览等最终会以未加密的形式接触磁盘,因为/tmp
某些应用程序会写入这些文件。
我无法使用tmpfs
或ramfs
因为我的 RAM 不足(我不想使用交换)。
应用程序级解决方案是不可接受的,因为我无法保证(也不想保证)每一个应用程序都配置为不写入/tmp
。
答案1
可能有效也可能无效,但是……您可以尝试将 /tmp 设置为用户不可写入,并设置export TMPDIR="$HOME/tmp"
(假设 $HOME 已加密)将在所有会话的环境中使用的位置(例如 /etc/profile,也许?)。我认为许多事情都应该尊重 TMPDIR 环境变量,但并非所有事情都一定会遵守它。
答案2
您可以尝试在 selinux 中运行 Firefox沙箱这不仅会阻止其他用户访问 /tmp,还会阻止 Firefox 访问您的主文件 :-)
不确定这在 Ubuntu 上有多大用处,但经过一些定制后在我的 Fedora (15) 上运行良好。
答案3
所有应用程序的行为都相同,只是它们写入 /tmp 的内容不会到达我的磁盘
为了使数据/tmp
不到达磁盘,您需要将其放在 RAM 中(ramfs 或 tmpfs)。另一方面,由于这些不是您的选择,您还有两个选择(数据在磁盘上):
更改默认快捷方式或为您担心泄露信息的命令创建别名,例如:
alias vi='sandbox -M -H sehome/ -T tmp/ vi'
因此用户(或您)不应该记得在每次启动应用程序时运行沙盒。
/tmp
当其中没有更多锁定文件时自动清空(一个 cron 作业,可以每 1 到 30 分钟运行一次)或注销时。这是我的个人选择:
http://www.linuxquestions.org/questions/linux-general-1/script-to-empty-tmp-folder-415361/
将此行添加到您的 ~/bash_logout 文件中。rm -rf /tmp/* 2>& /dev/null
或者,你可以使用 /dev/zero 和 dd 来真正擦除 /tmp 中的数据
答案4
您可以使用 overlayfs、绑定挂载等。
此外,如果在创建并挂载 /tmp 之后,您只需在其上挂载任何加密容器的路径,就可以了。
您还可以做一些非常奇怪的事情,甚至可能进入恐慌模式。
您可以将 /dev/null 挂载到 /tmp 上,这样对 /tmp 的任何写入都不会发生。
为什么很多人想出的方案如此复杂,却不能满足人们真正的需求……
你说你希望数据不要到达硬盘...只需挂载在 /dev/null 路径上
当然,数据写入后将无法读取...写入后就会丢失...这就是 /dev/null 的设计。
但是如果您希望数据进入磁盘,但不是以纯文本(即加密)的形式...只需执行以下操作:
- 创建一个文件来保存数据
- 在其上创建一个 LUKS 容器(参见--header 参数)
- 将其安装在路径上
因此任何写入都将进入磁盘,但会被加密。
我必须警告你这一点:
- 您是否知道在 PC 上运行的所有部分(内核、应用程序等)的每行源代码?如果答案是否定的,您需要一个 100% 磁盘加密解决方案(包括 /boot 等)... Grub2 + LUKS(多层)真的很棒,了解如何编辑 initramfs 脚本来挂载此类 LUKS,并准备在每次启动时输入两次密码... 不要做愚蠢的事情,将 KEY 文件存储在 initramfs 中以避免输入两次... 酷炫的启动攻击会以纯文本形式看到它,并且很容易找到它。
如果您确定所有应用程序都只写入“受控”路径,请首先尝试使用 mount 在其上安装的路径上进行安装(它会覆盖安装,直到卸载)。
有时,人们会寻找复杂的解决方案,却找不到简单的解决方案。
我的意思是,这会起作用:
- 挂载 /dev/sda1 /mnt/MyHDD
- 挂载 /dev/sdb2 /mnt/MyHDD
- 卸载/mnt/MyHDD
- 卸载/mnt/MyHDD
1 之后,/mnt/MyHDD 上看到的文件/文件夹位于第一个分区的 sda 驱动器上;2 之后,/mnt/MyHDD 上看到的文件/文件夹位于 sdb 分区 2 上;3 之后,/mnt/MyHDD 上看到的文件/文件夹位于第一个分区的 sda 驱动器上;4 之后……这取决于 1 之前安装在那里的内容。
因此你可以安装:
- /dev/null --- 将导致所有数据丢失
- /dev/mapper/crypto --- 或者任何你称之为 LUKS 的东西(数据将被加密)
希望能帮助到你。