iptables不能防止arp欺骗,因其仅处理网络层及以上流量,而arp属数据链路层,不经过netfilter链;它可辅助限制攻击得手后的横向行为、禁用ip转发、封锁异常端口,并需配合静态arp绑定、交换机dai及vlan隔离等多层防护。

iptables 本身不能防止 ARP 欺骗,因为它不处理 ARP 协议——ARP 属于数据链路层(OSI 第二层),而 iptables 只过滤网络层及以上的 IP 流量。ARP 包根本不会经过 netfilter 链(如 INPUT、FORWARD),所以任何 iptables -A INPUT -p arp ... 类规则都无效,也不被内核接受。
真正能起作用的,是配合系统级加固与网络架构控制,让 iptables 发挥辅助防御作用:它无法拦 ARP,但可限制攻击者得手后的横向行为、敏感服务暴露和异常流量特征。
明确 iptables 的定位:不拦 ARP,但管住后续动作
- ARP 欺骗成功后,攻击者主机通常需开启 IP 转发,并用 iptables 做 NAT/端口重定向(比如把 SSH 流量转给 ssh-mitm);
- 正常终端设备不该转发流量,也不该监听全网段端口或开放非必要服务;
- iptables 可强制关闭这些“异常行为出口”,提高攻击门槛。
建议配置如下:
-
禁用 IP 转发(除非你确实是网关):
echo 0 > /proc/sys/net/ipv4/ip_forward
并在
/etc/sysctl.conf中设net.ipv4.ip_forward = 0 -
默认丢弃 FORWARD 链所有包(非网关设备):
iptables -P FORWARD DROP
-
限制仅允许本机主动发起的出站连接,拒绝未经请求的入站新连接:
iptables -P INPUT DROP iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT # 可选
-
封锁常见中间人工具依赖的监听端口(如 ssh-mitm 默认用 2222):
iptables -A INPUT -p tcp --dport 2222 -j REJECT --reject-with tcp-reset
静态 ARP 绑定:终端最简单有效的防线
这是防御 ARP 欺骗最直接、开销最低的方式。绑定后,即使收到伪造 ARP 响应,系统也不会更新对应条目。
-
Linux 上永久绑定网关(示例):
echo "192.168.1.1 00:11:22:33:44:55" > /etc/ethers arp -f /etc/ethers
成功后
arp -a显示PERM标记。 -
Windows 上等效命令:
netsh interface ipv4 add neighbors "以太网" 192.168.1.1 00-11-22-33-44-55
建议对所有关键通信对象(网关、DNS 服务器、核心业务服务器)都做静态绑定。
检测混杂模式与可疑抓包行为
混杂模式是嗅探前提,虽不能靠 iptables 阻断,但可结合系统检查+权限管控降低风险:
-
查看是否有网卡处于混杂模式:
ip link show | grep -A1 PROMISC
-
限制普通用户使用抓包工具:
groupadd pcap usermod -a -G pcap alice setcap cap_net_raw+ep /usr/bin/tcpdump chmod 750 /usr/bin/tcpdump chgrp pcap /usr/bin/tcpdump
-
禁用非必要协议栈功能(减少可嗅探载荷):
sysctl -w net.ipv6.conf.all.disable_ipv6=1 sysctl -w net.ipv6.conf.default.disable_ipv6=1
网络侧协同:单靠主机不够,需基础设施支持
- 在接入交换机启用 DAI(Dynamic ARP Inspection) + DHCP Snooping,可验证 ARP 包合法性(仅限 Cisco、华为等企业设备);
- 划分 VLAN,缩小广播域,让欺骗无法跨子网传播;
- 启用端口安全(Port Security),限制每端口学习 MAC 地址数量(如设为 1),防 MAC 泛洪导致交换机降级为广播;
- 关闭闲置端口,禁用未授权设备接入(如 802.1X 认证)。
不复杂但容易忽略。











