如何在 Debian 上沙盒 Iceweasel (Firefox)?

信息安全 linux 网页浏览器 火狐 沙盒
2021-09-03 00:21:33

是否有任何工具可以在 Debian 系统上对 Iceweasel (Firefox) 进行沙盒处理?我最感兴趣的是 Debian 分发的工具。(同样值得信赖的来源将是第二好的。)

(我想安装VirtualBox并在其中运行Iceweasel(或Firefox)可以有效地将浏览器沙箱化,但是VirtualBox实例会占用大量磁盘空间,而且我的机器驱动器并不大。我希望找到一种方法以更小的磁盘占用空间实现相同的结果。)

3个回答

您可以使用使用 Linux 容器的 docker。

这是如何做到的:

从这里下载并安装 docker

创建一个名为“Dockerfile”的文件,其中包含创建 docker 映像的命令。以下文件基于 Ubuntu 创建一个映像,其中将安装 firefox 和 OpenSSH 服务器。创建了一个用户“noone”(将 [您的公钥] 替换为您的公钥),稍后将使用该用户启动 Firefox。

FROM ubuntu:14.04 RUN apt-get update RUN apt-get -y install openssh-server firefox RUN mkdir /var/run/sshd RUN useradd -m -U --shell=/bin/bash noone RUN sed -ri 's/noone:!/noone:*/g' /etc/shadow RUN sed -ri 's/UsePAM yes/UsePAM no/g' /etc/ssh/sshd_config RUN mkdir /home/noone/.ssh RUN chown noone:noone /home/noone/.ssh RUN echo 'ssh-rsa [your public key] xxx' > /home/noone/.ssh/authorized_keys EXPOSE 22 CMD ["/usr/sbin/sshd", "-D"]

使用 启动 docker 守护进程docker -d

进入 Dockerfile 所在的目录并运行docker build -t sandboxfirefox. 这将创建图像 sanboxfirefox。

从上面创建的镜像启动一个 docker 容器docker run -d -p 127.0.0.1:5001:22 sandboxfirefox (容器的 22 端口导出到主机的 5001 端口)

现在您可以使用 X 转发和用户“noone”通过 SSH 启动 Firefox,如下所示:

ssh -o "UserKnownHostsFile /dev/null" -t -X -p 5001 noone@localhost firefox

对文件系统的更改只会影响容器而不影响图像。如果您停止容器,所有更改都将丢失。

我用于“沙盒化”应用程序(例如游戏服务器、网络应用程序等)的一种方法是为每个应用程序创建一个特定用户。例如:

sudo adduser firefoxuser # create a user for browsing the web

然后退出并以新用户身份登录。然后运行您需要运行的任何应用程序。如果用户不需要sudo访问,则确保用户不能使用sudo.

在您的情况下,每次您想浏览网页时,只需以该用户身份登录即可。这样,如果攻击者能够进入您的系统,他们将无法立即访问管理员帐户。如果您想进一步限制访问,您还可以考虑将它们从某些默认组中删除。


虚拟盒子

正如您在问题中所说,Virtual Box(VM Ware 等)有很多缺点:

  1. 使用大量 RAM
  2. 使用大量磁盘空间
  3. 慢得多

但是,使用它也有很多优点。您可以创建虚拟机,然后创建快照。我通常称之为“工厂状态”。然后,当您使用完虚拟机后,恢复到快照。任何可能安装在您的虚拟机上的恶意软件都将被删除。

您应该查看沙盒软件arkose这是一个写时复制沙箱,旨在在进程终止后保持文件系统完好无损。

Afaik,arkose 中没有限制对文件的读取访问权限的控件,因此以其他用户身份运行浏览器可能是个好主意。

这种沙盒的一个缺点是,从浏览器中更新的插件将无法在沙盒中存活。您应该定期正常运行浏览器以让插件更新。