阻止设备进行所有网络流量,但有特定例外

阻止设备进行所有网络流量,但有特定例外

我有一个运行 Tomato 的路由器,因此我可以访问iptables。我的网络上有一个设备的 IP 地址为 192.168.1.100。除了非常特殊的情况外,我不希望它将数据发送到互联网。

具体来说,我根本不希望它将传出数据发送到互联网除了安全 SMTP(TCP 端口 587 或 465),即使这样,也只能连接到一个 SMTP 服务器。传入流量也是一个问题,但阻止出站流量更为重要。它应该继续允许 LAN 流量,因此来源和目的地为 192.168.1.0/24 的数据包是没问题的。

我对此了解不多,iptables所以我不确定如何去做,或者这是否iptables是最好的方法。我之前设置过丢弃数据包的规则,但我从未设置过阻止一切的规则符合特定要求的数据包。

您建议我怎样做这件事?

答案1

如果您没有允许 ESTABLISHED,RELATED 流量的规则,则流量可能根本无法通过。

iptables -I INPUT 1 -m conntrack -j ACCEPT  --ctstate RELATED,ESTABLISHED
iptables -A OUTPUT -m tcp -p tcp -m multiport --dports 587,465 -d <ipaddress of smtp> -j ACCEPT
iptables -A OUTPUT -s 192.168.1.100 -j DROP
iptables -A FORWARD -s 192.168.1.0/24 -d 192.168.1.0/24 -m tcp -p tcp -m multiport --dports 587,465 -j ACCEPT 
iptables -A FORWARD -s 192.168.1.100 !-d 192.168.1.0/24,<ipaddress of smtp> -j DROP

允许、允许,然后拒绝所有其他流量。

但是,如果不知道您还有什么其他规则,我就无法告诉您将它们放在哪里。

规则的顺序至关重要

规则是按顺序处理的,如果将我的规则添加到现有规则集的末尾,它们可能无法正常工作。

答案2

您只需要使用如下规则删除来自主机的出站流量:

iptables -A FORWARD -s 192.168.1.100 -p tcp --dports 80 -j ACCEPT 
iptables -A FORWARD -s 192.168.1.100 -j DROP

第一条规则将允许您的设备对任何主机使用 HTTP 协议,第二条规则将禁止家庭网络之外的任何其他流量。

如果您需要允许所有流量到壮观的主机,那么您将需要使用类似这样的方法:

iptables -A FORWARD -s 192.168.1.100 -d 8.8.8.8 -j ACCEPT 
iptables -A FORWARD -s 192.168.1.100 -j DROP

您的设备将能够使用任何协议连接到 IP 8.8.8.8,但所有其他协议的连接将被拒绝。

您可以寻找更多示例这里

相关内容