我对程序和应用程序进行安全测试。通常,当我想运行一个工具时,我需要在要测试的系统上添加库和其他依赖项,以使该工具正常工作。此外,测试环境无法访问Internet,这使得安装这些依赖项变得更加困难。
我当时正在考虑将多个工具进行容器化,以便将它们放到我正在测试的系统上,并且它们将具有所有依赖性。我正在考虑在Docker中执行此操作,因此,只要您看到对容器的引用,就意味着它是Docker容器。
我想使用的一些工具是nmap,strace,wireshark和其他用于监视网络流量,进程和内存的工具。
我的问题是:
答案 0 :(得分:2)
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
压缩docker映像,并使用docker import
答案 1 :(得分:0)
首先,Docker是一个隔离系统,该隔离系统从容器环境中隐藏主机系统的详细信息。您描述的所有工具都需要对主机网络和进程空间的低级别访问:您实际上不希望Docker在此处提供隔离。
举两个具体的例子:如果没有特殊设置,您将无法tcpdump
主机的网络接口,因为容器具有自己的隔离网络堆栈;并且您不能strace
托管进程,因为容器具有其自己的进程ID空间和受限制的Linux功能,禁止这样做。
(从安全性的角度来看,还应考虑到任何可以运行任何docker
命令的人都可以轻易地使主机成为root,并且存在合理的常见配置错误,无法将此功能发布到网络。您更喜欢如果您有兴趣保护现有系统,则无需安装Docker。)
我可能会将这组工具放在USB驱动器上(如果您的环境允许),然后直接在那里运行它们。如果更易于传输,则tar文件的工具也可以使用。将它们构建到静态二进制文件中或提供chroot
环境都可以使它们独立于主机环境中安装的内容,但是也不会阻止您观察所有试图观察的内容。