如何通过 arp 表阻止 ubuntu 网关上的网络流量

如何通过 arp 表阻止 ubuntu 网关上的网络流量

我有一个网络,其中有 80 台 PC 和一台 ubuntu 12.04 作为网关。出于安全原因,我想使用 ARP 预编译表来限制连接到此网络的计算机。换句话说,我想要一个工具,它只允许在对进行ARP --> [IP-MAC]预配置的情况下访问互联网,并忽略所有其他组合。使用这种技术,我想阻止用户更改从 DHCP 保留分配的 IP 地址,然后访问无限的网络和escape from iptable规则。谢谢

答案1

您真正需要的是 802.1x 网络访问控制。它基于 RADIUS 运行,并且要求在网络访问之前进行客户端身份验证。有几种基于 Linux 的解决方案,包括:

对于客户:

对于 NAC 服务器:

假设您没有能够运行 VLAN 的托管交换机,您可能希望使用 PacketFence 的内联模式,如文档中所述。这用于ipset修改防火墙规则以允许流量,但需要特定的拓扑分离(DNS 与主机位于不同的网段上)。PacketFence 可以使用的交换机如下所列这里


更正!:Linux 中还有另一种内置方法来管理 arp 表,请参阅man 5 ethers。您可以以 的形式添加条目ethernet ip,然后/etc/ethers运行arp -f以根据此更新表。man arp有关详细信息,请参阅,以及http://gwallgofi.com/static-arp-linux/了解更详细的操作方法。


为了回答有关 arp 表的具体问题,请创建一个static-arp.conf包含如下条目的文件:

10.0.0.6 00:0c:29:c0:91:bf
10.0.0.7 00:0c:29:c0:92:bf
10.0.0.8 00:0c:29:c0:93:bf
10.0.0.9 00:0c:29:c0:94:bf

然后运行:

while read -u 10 arpentry ; do arp -s $arpentry ; done 10<static-arp.conf

由于某种原因,它不起作用,我不得不切换到 read -u 来设置文件描述符,不知道为什么……但这会添加列出的条目。然后,您可以通过 nfs、git、rsync 等以任何您想要的方式分发它。for I in cat static-arp.confstatic-arp.conf

不过,VLAN 可能是一个更好的主意。linux-pure vlan use 中的信息位于这里

答案2

您正在寻找像这样简单的东西吗?

iptables -A FORWARD -m mac --mac-source 00:01:11:11:11:11 -j ACCEPT

这样,您就可以设置仅允许 mac 地址访问互联网(您也可以包括 ip 地址,并且很可能需要一个好的脚本来维护它)。其他解决方案已在评论中讨论过。

编辑:我无法解决否定问题(没有用),但您可以这样做:

iptables -P 转发删除

iptables -A FORWARD -s 192.168.1.1 -m mac --mac-source 00:01:02:03:04:05 -j ACCEPT

“此规则是否会丢弃来自 192.168.1.1 的所有数据包,并且这些数据包的 MAC 与规则中指定的不同”我想这就是您所要求的。

请注意一些变化 - 缺少“!”和“-p tcp” - 它们只会丢弃 tcp 数据包。

注意 2:请记住,所提及的具有不同 MAC 的 IP 地址仍然能够 ping 路由器。为防止这种情况,您需要在 INPUT 链中执行相同操作。

答案3

我已经测试过了,它似乎有效

iptables -A FORWARD -s 192.168.1.1 -m mac !--mac-source 00:01:02:03:04:05 -j DROP

如果数据包来自与规则中输入的 MAC 不同的 IP,则丢弃数据包唯一的问题是我必须手动添加每个我必须“保护”的 IP。目前我只有 2 个

*A illusion of protect since exist MAC spoofing无论如何,这会阻止用户尝试

相关内容