限制Docker容器的网络访问

Dan*_*l S 15 security ssh sftp docker

我正在创建一个仅限 SFTP 的Docker容器,该容器将由多人使用,其唯一目的是在他们自己的chrooted 环境中上传和管理文件。

从理论上讲,它非常安全:我将禁用所有形式的bash登录,并且不会在其中运行任何其他进程。但是,我想再加强一点:

我想阻止这个容器从内部访问 Internet,除了它作为 SFTP 服务器的目的。

澄清一下:我知道如何防止外部世界访问我的容器——我可以设置传入iptables规则,并且我只能在我的 docker run 命令中公开 SFTP 端口。

但是,当容器运行时,我想让以下命令(作为示例)失败:

curl google.com
Run Code Online (Sandbox Code Playgroud)

我的目的是减少被黑容器可能造成的损害(不能用于发送垃圾邮件等)。

Ran*_*ith 1

这实际上并不是 docker 特定的问题。有几种方法可以解决这个问题。

  1. 使用有状态iptables规则允许入站连接和相关/已建立的流量,然后阻止其他所有流量。

  2. 使用仅 sftp 服务,例如无法运行 shell 的ProFTPD 。

一般来说,如果您不允许用户获得 shell,也不允许他们从容器内运行程序,则无需担心。