如何防止用户将文件复制到另一个硬盘?

信息安全 linux 访问控制 权限 selinux
2021-08-29 18:57:08

我有一台包含敏感文件的 Linux 机器。用户在使用计算机时应该能够访问(读取)它们,但不能将它们复制到另一个硬盘驱动器(USB 记忆棒或可能已添加到同一台机器上的另一个硬盘驱动器)。

主硬盘已被加密,以防止有人提取它并窃取文件。

我可以自由地使用 SELinux 或其他方法来实现目标。

更新:

阅读答案后,我想澄清一下:

  • 我不是很在意可能对屏幕拍照的用户。保护实际文件是我的主要目标。

  • 尽管保护每个文件都是最佳的,但我最关心的是保护整个数据集(它非常大)。即使一些文件被泄露,损害也是可控的。此外,由于文件量大,以低效的方式逐个提取它们是不切实际的。

  • 计算机的用户不会被授予管理权限。

4个回答

您可以通过将模块列入黑名单来禁用 Linux 上的 USB 存储。

modprobe -r usb-storage
echo blacklist usb-storage >> /etc/modprobe.d/10-usbstorage-blacklist.conf
echo blacklist uas >> /etc/modprobe.d/10-usbstorage-blacklist.conf

如果您的用户可以物理访问机器并且知道加密密钥,那么无论您在软件方面做什么,游戏都会结束。

我的建议是限制对机器物理接口的访问。把它锁在盒子里,只让用户通过键盘、鼠标和屏幕进行交互。

您还应该注意,您不能阻止用户复制某些内容。最差的情况?拿起手机,在他们筛选文件时为屏幕拍照。在我看来,数据丢失防护应该旨在阻止意外复制到不受信任的设备。

客户端-服务器架构

这是另一种可能使复制文件变得更加困难的方法,但它需要您投入更多的精力。

可以在客户端-服务器架构的基础上设置对信息的访问,信息存储在安全位置的远程服务器上的数据库(例如 MySQL 或 PostgreSQL)中。

然后,提供可以运行客户端应用程序的访问站,该应用程序从服务器检索信息并将其显示给用户。

因此,与其让用户直接访问信息,不如将其提供给他们。

您可以通过限制桌面环境的功能、禁用 USB 端口等来使用户更难复制数据。此外,您的应用程序可以将信息显示为图像而不是文本,但这取决于这是否是从可用性方面适当。

但是所有这一切都假设可以访问数据库的唯一主机是为用户提供的锁定客户端站点,并且它们处于受控环境中,因此他们无法篡改访问站或将自己的设备插入网络。

这是否适合您的用例取决于您的威胁模型,以及您准备投入多少精力。

除了阻止 USB(请参阅上面的其他答案):

禁用网络,因为...

  • ...否则用户将使用远程访问您的机器,例如通过scpftp,并从您的机器复制文件。
  • ...否则登录的用户将能够通过 net 从您的机器通过scpftpsambahttp将文件传输到其他机器。

好的,我完全不是安全专家,也许这完全不合时宜(在评论中告诉我!),但是......

如果您可以物理地保护盒子(否则所有赌注都关闭),那么也许您可以让用户仅使用 user 登录A但是,所有敏感文件都属于 userB并且user无法访问A除了也属于 user 的一个程序“PDF Viewer” B,但setuid设置位,因此在运行时,它将在 user 的上下文中运行B并能够访问文件。由于它是一个查看器,它可以显示文件,但不能复制它们。

或类似的东西。诀窍是setuid一点。