pfsense:阻止第二个 DHCP 服务器

pfsense:阻止第二个 DHCP 服务器

在我的 LAN 中,我使用一台 PFSense 服务器,上面有一个 DHCP 服务器。

我需要阻止第二个 DHCP 服务器出现在我的 LAN 中。我想我可以使用PfSense防火墙来拒绝其他DHCP服务器IP地址。

我应该怎么办?

答案1

不幸的是,您无法阻止同一 LAN 中的第二个 DHCP(当然不能在防火墙级别,并且使用高端企业交换设备来缓解它也不是一个简单的话题); IP 请求是一种广播服务,通常在 LAN 级别运行,因此没有路由服务来阻止防火墙级别的服务。

例如,防火墙不会阻止属于同一网络块/LAN 的计算机之间的对话,但是它们确实控制/服务通过其进行路由以与其他网络进行对话。

DHCP 协议定义,无论哪一个答案首先到达请求 IP 的站点,它都将是可接受的答案。因此,根据谁获胜,工作站将从官方或流氓 IP 地址中随机获取一个 IP 地址。

可以采取的措施是缓解措施,即找到违规设备的 MAC 并在交换机中搜索它,或者在交换机/无线 AP 中阻止该 MAC。

要找到它,您有两种可能的方法:

您转到受影响的计算机,并尝试找出为该请求提供服务的 DHCP 服务器的 IP 地址。或者就此而言,释放 IP 地址,并多次询问。

一旦你得到了外部路由器的答案,获取该 IP 地址(例如,在ipconfig /allWindows 客户端中),而不是获取该 MAC 地址,然后假设恶意 DHCP 的 IP 地址是 1.1.3.200:

$ping -c1 1.1.3.200 
PING 1.1.3.200 (1.1.3.200) 56(84) bytes of data.
64 bytes from 1.1.3.200: icmp_seq=1 ttl=255 time=0.273 ms

--- 1.1.3.200 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.273/0.273/0.273/0.000 ms
$arp -a 1.1.3.200
xxxx.local (1.1.3.200) at 00:0b:fc:07:04:01 [ether] on eth0

或者我更喜欢的方式,在 Linux 盒子中,你可以用来tcpdump监听几个 DHCP 请求(该盒子有一个水平滑块可以查看所有文本)

sudo tcpdump -n -c 10 -e port 68
09:23:57.298176 00:21:97:c6:76:fc > ff:ff:ff:ff:ff:ff, ethertype IPv4 (0x0800), length 342: 1.1.3.2.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:21:97:c6:76:fc, length 300
09:23:59.034798 00:19:21:3c:2c:22 > ff:ff:ff:ff:ff:ff, ethertype IPv4 (0x0800), length 342: 1.1.3.116.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:19:21:3c:2c:22, length 300
09:24:00.191144 64:00:6a:09:58:16 > ff:ff:ff:ff:ff:ff, ethertype IPv4 (0x0800), length 342: 1.1.3.142.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 64:00:6a:09:58:16, length 300
09:24:07.325291 6c:62:6d:d0:20:f4 > ff:ff:ff:ff:ff:ff, ethertype IPv4 (0x0800), length 342: 1.1.3.2.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 6c:62:6d:d0:20:f4, length 300
09:24:31.500826 00:23:24:06:e8:0b > ff:ff:ff:ff:ff:ff, ethertype IPv4 (0x0800), length 363: 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:23:24:06:e8:0b, length 321
09:24:31.502554 00:0b:fc:07:04:00 > ff:ff:ff:ff:ff:ff, ethertype IPv4 (0x0800), length 342: 1.1.3.254.67 > 255.255.255.255.68: BOOTP/DHCP, Reply, length 300
09:24:31.502812 00:0b:fc:07:04:01 > ff:ff:ff:ff:ff:ff, ethertype IPv4 (0x0800), length 342: 1.1.3.200.67 > 255.255.255.255.68: BOOTP/DHCP, Reply, length 300
09:24:32.098505 00:0f:fe:fd:6c:27 > ff:ff:ff:ff:ff:ff, ethertype IPv4 (0x0800), length 342: 1.1.3.10.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:0f:fe:fd:6c:27, length 300
09:24:49.340908 64:00:6a:09:05:6d > ff:ff:ff:ff:ff:ff, ethertype IPv4 (0x0800), length 342: 1.1.3.174.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 64:00:6a:09:05:6d, length 300
09:24:53.444891 ac:16:2d:08:44:1b > ff:ff:ff:ff:ff:ff, ethertype IPv4 (0x0800), length 342: 1.1.3.170.68 > 255.255.255.255.67: BOOTP/DHCP, Request from ac:16:2d:08:44:1b, length 300

看看显示 DHCP Reply 的行:
在本例中,DHCP 服务器是 1.1.3.254,并且具有 MAC 00:0b:fc:07:04:00;第二个的 IP 地址为 1.1.3.200,MAC 地址为 00:0b:fc:07:04:01(输出的第 6 行和第 7 行)。

答案2

我已经使用了 DHCP starvation(专门针对流氓 DHCP 服务器)较长时间。尝试dhcdrop或者dhcpstarv,或 scapy 脚本。我最终选择了后者,因为它更灵活。在 scapy 和 dhcpstarv 中,都可以在不中断合法服务的情况下定位有问题的 DHCP 服务器。

某些路由器和交换机可能会丢弃违反一组规则的主机的链接。看此思科支持线程例如。

相关内容