linux - 阻止 VM 特定端口上的所有流量

标签 linux virtual-machine iptables

我想阻止流向在我的计算机上运行的虚拟机的流量(某些端口除外)。我向虚拟桥添加了一些规则,以接受 FORWARD 链中过滤器表中端口 80 上的流量,因为虚拟桥被设置为转发来自虚拟机的流量。

我写了以下内容:

sudo iptables -F sudo iptables -I FORWARD -o [bridge_iface] -p tcp --dport 80 -m state --state 新,已建立 -j 接受 sudo iptables -I FORWARD -i [bridge_iface] -p tcp --sport 80 -m state --state 新,已建立 -j 接受 sudo iptables -I FORWARD -o [bridge_iface] -p tcp --dport 53 -m state --state 新,已建立 -j 接受 sudo iptables -I FORWARD -i [bridge_iface] -p tcp --sport 53 -m state --state 新,已建立 -j 接受 sudo iptables -P 转发丢弃 当我连接到桥上的虚拟机时,我无法连接到外部网站。如果我删除最后一行,当然,一切正常,但一切也都打开了。所以这不太正确。

最佳答案

如果您想减少虚拟机的流量,为什么还要过滤另一个方向,您真的想阻止您的虚拟机访问互联网吗?

iptables -I FORWARD -o [bridge_iface] -m state --state NEW,ESTABLISHED -j DROP
iptables -I FORWARD -o [bridge_iface] -p tcp -m state --state NEW,ESTABLISHED --dport 80 -j ACCEPT
iptables -I FORWARD -o [bridge_iface] -p udp -m state --state NEW,ESTABLISHED --dport 53 -j ACCEPT

请注意:DNS 主要使用 UDP,而不是 TCP,因此您应该过滤 UDP。

我的设置的整体想法:您应该允许您的计算机转发任何内容,默认情况下仅删除与特定接口(interface)的连接,并在该设备上打开特定端口。

我怀疑您在由虚拟机提供服务的端口 80 和 53 上的传入连接上使用端口转发,对吗? 如果你想拒绝你的虚拟机访问互联网,除了我们刚刚设置的2个端口之外,你必须在脚本中将-o更改为-i。

关于linux - 阻止 VM 特定端口上的所有流量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26001406/

相关文章:

linux - Linux 中的 $ip 和 iptables 有什么区别?

linux - 在 Linux 中搜索包含关键字的文件或文件夹

linux - 在服务器端 Swift 上计算表达式

linux - 汇编中的 %gs 是什么

c# - 如何查看我的windows服务器是虚拟机还是物理机

linux - more, less 表现得像猫

docker - 基于alpinelinux在docker容器中安装iptables

linux - 通过 bash 自动将 iptables 中的 IP 地址列入白名单

除非从脚本的根目录打开脚本,否则 Python 将访问外部配置文件

linux - 从虚拟盒子中删除已安装的linux系统