我有一个网络,其中有 80 台 PC 和一台 ubuntu 12.04 作为网关。出于安全原因,我想使用 ARP 预编译表来限制连接到此网络的计算机。换句话说,我想要一个工具,它只允许在对进行ARP --> [IP-MAC]
预配置的情况下访问互联网,并忽略所有其他组合。使用这种技术,我想阻止用户更改从 DHCP 保留分配的 IP 地址,然后访问无限的网络和escape from iptable
规则。谢谢
答案1
您真正需要的是 802.1x 网络访问控制。它基于 RADIUS 运行,并且要求在网络访问之前进行客户端身份验证。有几种基于 Linux 的解决方案,包括:
对于客户:
- http://tldp.org/HOWTO/html_single/8021X-HOWTO/
- https://help.ubuntu.com/community/Network802.1xAuthentication
对于 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.conf
static-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
无论如何,这会阻止用户尝试