【问题标题】:Can containerized tools run against a local machine?容器化工具可以在本地机器上运行吗?
【发布时间】:2019-09-26 15:00:42
【问题描述】:

我对程序和应用程序进行安全测试。通常,当我想运行一个工具时,我需要将库和其他依赖项添加到我正在测试的系统中,以使该工具正常工作。此外,测试环境无法访问 Internet,这使得安装这些依赖项更加困难。

我正在考虑将多个工具容器化,以便我可以将它们放到我正在测试的系统中,并且它们将拥有所有依赖项。我正在考虑在 Docker 中执行此操作,因此任何时候您看到对容器的引用都意味着它是一个 Docker 容器。

我想使用的一些工具是 nmap、strace、wireshark 和其他用于监控网络流量、进程和内存的工具。

我的问题是:

  1. 我可以在“本地”运行这些工具,还是需要联网,就好像它们来自不同的机器一样?
  2. 是否需要将任何东西放到测试系统上才能使容器正常运行?

【问题讨论】:

    标签: docker containers


    【解决方案1】:

    Docker 允许您连接到主机本身using the --privileged flag 上的设备。

    此外,您可以添加--network=host 标志,表示your docker container network stack is no longer isolated from the host

    使用上面的标志应该允许你在 docker 中运行你的工具,而不需要对主机(除了 Docker 运行时 + 你的 docker 容器)有额外的要求。

    但是,这确实意味着您需要将 Docker 容器加载到主机中。通常下载 docker 容器需要联网。但是您可以做的是使用docker save tar 一个docker 映像并使用docker import 导入该tar

    【讨论】:

    • 太棒了,感谢您的快速响应并主动解决更多问题!
    【解决方案2】:

    Docker 首先是一个隔离系统,它将主机系统的详细信息从容器环境中隐藏起来。您描述的所有工具都需要对主机网络和进程空间进行低级别访问:您主动不希望 Docker 在这里提供的隔离。

    举两个具体的例子:没有特殊设置,你不能tcpdump宿主机的网络接口,因为容器有自己隔离的网络栈;并且您不能strace 托管进程,因为容器有自己的进程 ID 空间和不允许它的受限 Linux 功能。

    (从安全的角度来看,还要考虑任何可以运行任何docker 命令的人都可以轻松地root 主机,并且有一个相当常见的错误配置来将此功能发布到网络。您不希望如果您对保护现有系统感兴趣,则需要安装 Docker。)

    我可能会将这组工具放在 USB 驱动器上(如果您的环境允许的话)并直接从那里运行它们。如果更容易传输,工具的 tar 文件也可以。将它们构建到静态二进制文件中或提供chroot 环境将使它们独立于主机环境中安装的内容,但也不会阻止您观察您尝试观察的所有事物。

    【讨论】:

      猜你喜欢
      • 2012-04-02
      • 2020-02-06
      • 2019-06-09
      • 1970-01-01
      • 2018-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多