我面临以下问题:我想阻止从网络访问端口 8000(阻止除 127.0.0.1 之外的所有连接)。因此,为了简化我的问题,作为第一步,我决定使用以下规则阻止对端口 8000 的所有访问:
iptables -A INPUT -p tcp --dport 8000 -j DROP
Run Code Online (Sandbox Code Playgroud)
现在,我知道我应该采取相反的方法,即删除除受信任的连接之外的所有连接,但我决定出于教育目的而这样做。
iptables -L
显示了这个输出:
Chain INPUT (policy ACCEPT)
target prot opt source destination
DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:8000
Chain FORWARD (policy ACCEPT)
target prot opt source destination
DOCKER all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain DOCKER (1 references)
target prot opt source destination
ACCEPT tcp -- 0.0.0.0/0 172.17.0.1 tcp dpt:80
Run Code Online (Sandbox Code Playgroud)
不幸的是,我仍然成功地从端口 8000 访问服务器。你能告诉我我必须做什么吗?执行 drop Rule 命令后我没有执行任何操作。
看起来您正在使用 Docker。当公开容器端口时,Docker 将创建规则以将数据包转发到容器。这些数据包从不经过 INPUT 链。请参阅: http: //www.faqs.org/docs/iptables/traversingoftables.html
您可以使用 FORWARD 链进行过滤。
iptables -I FORWARD -p tcp -d 172.17.0.1 --dport 80 -j DROP
Run Code Online (Sandbox Code Playgroud)
请注意,这不会删除来自本地主机的连接,并且您必须使用重写的目标(即容器中的侦听端口)。
如果您想要更多控制,您可以使用 运行 Docker 守护进程--iptables=false
,但您必须手动管理转发到容器的数据包。
归档时间: |
|
查看次数: |
4215 次 |
最近记录: |