我怎样才能在 Linux 上安全地运行不受信任的可执行文件?

我怎样才能在 Linux 上安全地运行不受信任的可执行文件?

我已经下载了由第三方编译的可执行文件,我需要它在我的机器(Ubuntu 16.04 - x64)上运行,并可以完全访问硬件资源,例如 CPU 和 GPU(通过 nVidia 驱动程序)。

假设这个可执行文件包含病毒或后门,我该如何运行它?

我应该创建一个新用户,使用它来运行它,然后删除该用户本身吗?

编辑

尚未批准以下答案,因为 firejail可能不起作用

编辑2

firejail 是好的但必须非常小心地指定所有选项黑名单白名单.默认情况下不做引用的内容 Linux 杂志文章(另见一些评论来自 firejail 作者)。

使用时要格外小心,如果没有正确的选项,它可能会给你一种虚假的安全感。

答案1

首先,如果这是一个高风险的二进制文件……您必须设置一台独立的物理机器,运行该二进制文件,然后物理地破坏硬盘、主板以及基本上所有其余部分。因为在这个时代,即使是您的机器人吸尘器也能传播恶意软件。如果该程序已经使用高频数据传输通过 PC 扬声器感染了您的微波炉怎么办?!

但是,让我们摘下那顶锡箔帽,回到现实一会儿。

无需虚拟化,快速使用: 火狱

它已经在 Ubuntu 上打包好了,非常小,几乎没有依赖项。
如何在 Ubuntu 上安装:sudo apt-get install firejail

网站:https://firejail.wordpress.com/

包装信息:

Package: firejail
Priority: optional
Section: universe/utils
Installed-Size: 457
Maintainer: Ubuntu Developers <[email protected]>
Original-Maintainer: Reiner Herrmann <[email protected]>
Architecture: amd64
Version: 0.9.38-1
Depends: libc6 (>= 2.15)
Filename: pool/universe/f/firejail/firejail_0.9.38-1_amd64.deb
Size: 136284
MD5sum: 81a9a9ef0e094e818eb70152f267b0b6
SHA1: 41d73f8b9d9fd50ef6520dc354825d43ab3cdb16
SHA256: f1cbc1e2191dbe6c5cf4fb0520c7c3d592d631efda21f7ea43ab03a3e8e4b194
Description-en: sandbox to restrict the application environment
 Firejail is a SUID security sandbox program that reduces the risk of
 security breaches by restricting the running environment of untrusted
 applications using Linux namespaces and seccomp-bpf.  It allows a
 process and all its descendants to have their own private view of the
 globally shared kernel resources, such as the network stack, process
 table, mount table.
Description-md5: 001e4831e20916b1cb21d90a1306806f
Homepage: https://firejail.wordpress.com
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Origin: Ubuntu  

几天前,我不得不运行一个类似的“不受信任”的二进制文件。我的搜索找到了这个非常酷的小程序。

虚拟化: 虚拟机虚拟盒
这是最安全的选择。取决于二进制文件。但是,嘿,请参见上文。
如果它是由黑带 - 黑帽程序员“黑客先生”发送的,则二进制文件有可能逃离虚拟化环境。

恶意软件二进制文件,节省成本的方法:租一台机器!虚拟的。虚拟服务器提供商示例:亚马逊 (AWS)、微软 (Azure)、DigitalOcean、Linode、Vultr、Ramnode。你租一台机器,运行你需要的任何东西,然后他们会清除它们。大多数大型提供商按小时计费,所以真的很便宜。

答案2

来自 Firejail 手册页:

   Without  any  options,  the sandbox consists of a filesystem build in a
   new mount namespace, and new PID and UTS namespaces. IPC,  network  and
   user  namespaces  can  be  added  using  the  command line options. The
   default Firejail filesystem is based on the host  filesystem  with  the
   main  system directories mounted read-only. These directories are /etc,
   /var, /usr, /bin, /sbin, /lib, /lib32, /libx32 and /lib64.  Only  /home
   and /tmp are writable.

这是一个高级描述,还有其他事情正在发生,例如 /boot 被列入黑名单,/sbin 和 /usr/sbin 也是如此。

https://firejail.wordpress.com/features-3/man-firejail/

你也可以看看这个文档:https://firejail.wordpress.com/documentation-2/firefox-guide/- 他们对文件系统有非常好的描述。

答案3

只需在单独的安装上运行它 - 在外部驱动器或另一个硬盘驱动器上设置单独的安装,确保您的主安装的分区是不是安装(或者更好的方法是断开它们),然后测试。您可以在安装前备份它,以备再次需要时使用,完成后将其删除。

它是一种比沙盒/监狱更为强大的方法,您可以放心地将第二次安装视为一次性的和/或仅在需要时使用它。

答案4

赶紧跑居住来自 ISO

所有文件系统更改仅存储在 RAM 中,并在重启时丢失/重置(前提是未将任何内容写入任何存储驱动器)。可以直接访问裸机硬件,无需担心越狱或 VM 逃逸。您只能在/文件系统空间中写入新文件。

您还可以完全断开主硬盘驱动器(如果您担心它可能会被覆盖、读取和共享)并从 USB 驱动器(例如拇指驱动器、外部硬盘驱动器)或甚至第二个硬盘驱动器运行 ISO - 类似于 Journeyman Geek 的回答,但制作可启动 USB 要比完整安装容易得多(在我看来)。

如果您有足够的 RAM(可能 4GB+),您可能能够将整个文件系统复制到 RAM 中,然后拔下 USB 驱动器,这样即使 USB 也无法写入。

  • 如果支持,将所有内容复制到 RAM 中的启动选项通常类似于“toram”。

对于许多 ISO,甚至可以将 ISO 文件复制到当前安装的硬盘的启动分区,然后使用 grub 直接从 ISO 启动。虽然它并不适用于每个 ISO,并且可能需要一些特殊的启动参数(例如,MX-Linux 可以使用 fromiso=[iso 文件] blab=[分区标签] 等。它非常强大,具有从正在运行的系统创建 ISO 的工具,将 iso 写入 USB 驱动器(持久性可选),甚至还有“节俭安装”,其中基本上 ISO 的内容是从硬盘分区启动的)。

  • 警惕自动创建可启动 USB 的程序并坚持不懈。那些将更改保存到 USB,但即使持久性也可能会被某些启动选项禁用。

  • 如果你打算将完全控制权交给这个神秘的可执行文件,那么你的主板、存储驱动器、GPU/视频卡,当然还有网络设备中的固件可能会被损坏。Apache 在他的锡箔帽介绍。

相关内容