如何在linux下以沙箱模式运行一个程序?
网友回复
可以使用Jailkit
Jailkit 实际上是在指定的目录(下文称“监狱”)中,组建了一个小型的、完备的linux环境,涵盖了linux运行所最基础的文件(不包括引导和启动),用户登陆时,使用chroot将根目录设置成“监狱”目录,从而隔离与主机的联系,所做的操作都是在“监狱”中进行。当然,登陆的用户不可以拥有root权限。 以下分三个步骤介绍 Jailkit 的使用 一、安装与部署Jailkit 1、从官网 http://olivier.sessink.nl/jailkit/ 下载最新的Jailkit,安装过程非常简单,完全通用的步骤:解压缩并进入目录、./configure、make、make install。
2、安装完毕,就可以部署Jailkit 路径了(建立“监狱”)。以下操作均使用root用户进行。
...
点击查看剩余70%
还可以使用linux的命令空间unshare
Mount Namespace 是 Linux 内核实现的第一个 Namespace,从内核的 2.4.19 版本开始加入。它可以用来隔离不同的进程或进程组看到的挂载点。
通俗地说,就是可以实现在不同的进程中看到不同的挂载目录。使用 Mount Namespace 可以实现容器内只能看到自己的挂载信息,在容器内的挂载操作不会影响主机的挂载目录。 下面我们通过一个实例来演示下 Mount Namespace。我们使用一个命令行工具 unshare。unshare 是 util-linux 工具包中的一个工具,
CentOS 7 系统默认已经集成了该工具,使用 unshare 命令可以实现创建并访问不同类型的 Namespace。 首先我们使用以下命令创建一个 bash 进程并且新建一个 Mount Namespace: unshare --mount --fork /bin/bash 执行完上述命令后,这时我们已经在主机上创建了一个新的 Mount Namespace,并且当前命令行窗口加入了新创建的 Mount Namespace。下面我通过一个例子来验证下,在独立的 Mount Namespace 内创建挂载目录是不影响主机的挂载目录的。 执行完上述命令后,这时我们已经在主机上创建了一个新的 Mount Namespace,并且当前命令行窗口加入了新创建的 Mount Namespace。下面我通过一个例子来验证下,在独立的 Mount Namespace 内创建挂载目录是不影响主机的挂载目录的。 首先在 /tmp 目录下创建一个目录。 [root@centos7 centos]# mkdir /tmp/tmpfs 创建好目录后使用 mount 命令挂载一个 tmpfs 类型的目录。命令如下: [root@centos7 centos]# mount -t tmpfs -o size=20m tmpfs /tmp/tmpfs 然后使用 df 命令查看一下已经挂载的目录信息: [root@centos7 centos]# df -h Filesystem Size Used Avail Use% ...
点击查看剩余70%
还可以用Firejail
Firejail是一个SUID(设置所有者用户ID)应用程序,它通过使用Linux命名空间和seccomp-bpf限制不受信任程序的运行环境来减少安全漏洞的暴露。 它使一个进程及其所有后代拥有自己的全局共享内核资源的秘密视图,例如网络堆栈,进程表,挂载表。 Firejail使用的一些功能: Linux名称空间
文件系统容器
安全过滤器
网络支持
资源分配
有关Firejail功能的详细信息,请参阅官方页面。 如何在Linux中安装Firejail 可以使用git命令从项目的github页面下载最新的软件包来完成安装,如图所示。 linuxidc@linuxidc:~/www.linuxidc.com$ git clone https://github.com/netblue30/firejail.git 正克隆到 'firejail'... remote: Enumerating objects: 23, done. remote: Counting objects: 100% (23/23), done. remote: Compressing objects: 100% (18/18), done. remote: Total 38395 (delta 11), reused 11 (delta 5), pack-reused 38372 接收对象中: 100% (38395/38395), 9.82 MiB | 87.00 KiB/s, 完成. 处理 delta 中: 100% (30820/30820), 完成. linuxidc@linuxidc:~/www.linuxidc.com$ cd firejail linuxidc@linuxidc:~/www.linuxidc.com...
点击查看剩余70%
Cuckoo也可以
Cuckoo是一个开源的自动恶意软件分析系统,我们可以用它来自动运行和分析文件,并可以获取到全面的分析结果,
Cuckoo 可以获取以下类型结果:
1.追踪由恶意软件产生的所有进程执行的调用 2.恶意软件在执行中增删改查情况 3.恶意软件进程的内存输出 4.PCAP包格式的网络流量跟踪 5.在执行软件关键截图 6.机器全部内存输出Cuckoo模块和可分析样...
点击查看剩余70%
另外 Systemd 也可以
Systemd 提供了大量安全功能,可用于将服务和应用程序彼此隔离,以及与底层操作系统隔离。在很多情况下,systemd提供对 Linux 内核提供的相同机制的轻松访问,这些机制也用于为 Linux 容器创建隔离。为传统应用程序和服务提供容器式隔离的能力非常强大,因为现在可以轻松提高工作负载的安全性和隔离性,而不会产生容器所需的操作影响。值得注意的是,容器采用引发的运营和组织变革确实是健康且值得的。然而,即使在最精通容器的企业中,也有大量传统 Linux 部署将安全性放在首位。正如我们将看到的,这些系统上的工作负载可以从对相应单元文件的一些调整中受益。
一个例子
从 Red Hat Enterprise Linux 8.1 开始,我们添加了一个命令,以便更轻松地参考和检查这些选项的状态: systemd-analyze security [unit]
此命令生成系统如何利用systemd沙箱的快速快照,还可以查看每个单元的单个设置。这种设计使识别可用选项以及在粒度级别查看其使用情况变得简单。
https.service 的 systemd 沙盒状态快照。
此输出systemd-analyze security显示名称、方便的描述和...
点击查看剩余70%