相关疑难解决方法(0)

限制Docker容器的网络访问

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

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

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

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

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

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

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

security ssh sftp docker

15
推荐指数
1
解决办法
1万
查看次数

使用iptables转发,同时妥善保留源IP

我有一台运行 Wireguard 的服务器(因此需要masquerade)和一个在端口 2525 上运行的容器。

我有以下iptables规则:

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 25 -j DNAT --to-destination 172.18.0.1:2525
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Run Code Online (Sandbox Code Playgroud)

直接连接时server:2525,Docker 容器能够看到我的真实 IP 地址 ( 1.2.3.4)。当连接到 port 时server:25,Docker 容器会看到由以下内容提供的本地 IP docker network

Apr 07 12:45:46 mx postfix/smtpd[87]: lost connection after CONNECT from unknown[172.18.0.1]
Apr 07 12:45:46 mx postfix/smtpd[87]: disconnect from unknown[172.18.0.1] commands=0/0
Run Code Online (Sandbox Code Playgroud)

如何确保 Docker 容器在连接到端口 25 时(而不仅仅是在连接到端口 2525 时)正确地看到公共 IP …

iptables port-forwarding forwarding docker

5
推荐指数
1
解决办法
4196
查看次数

标签 统计

docker ×2

forwarding ×1

iptables ×1

port-forwarding ×1

security ×1

sftp ×1

ssh ×1