pfsense: 두 번째 DHCP 서버 차단

pfsense: 두 번째 DHCP 서버 차단

내 LAN에서는 하나의 DHCP 서버가 있는 PFSense 서버를 사용하고 있습니다.

내 LAN에 나타나는 두 번째 DHCP 서버를 차단해야 합니다. PfSense 방화벽을 사용하여 다른 DHCP 서버 IP 주소를 거부할 수 있을 것 같습니다.

어떻게 해야 하나요?

답변1

불행하게도 동일한 LAN에서 두 번째 DHCP를 차단할 수는 없습니다(확실히 방화벽 수준이 아니며 고급 엔터프라이즈 스위칭 장비로 이를 완화하는 것은 간단한 주제가 아닙니다). IP 요청은 일반적으로 LAN 수준에서 작동하는 브로드캐스트 서비스이므로 방화벽 수준에서 서비스를 차단하는 라우팅 서비스가 없습니다.

예를 들어 방화벽은 동일한 넷블록/LAN에 속한 시스템 간의 대화를 차단하지 않지만 다른 네트워크와 대화하기 위해 라우팅을 수행하는 제어/서비스를 수행합니다.

DHCP 프로토콜은 IP를 요청하는 스테이션에 먼저 응답이 도착하면 이를 수락하도록 정의합니다. 따라서 누가 이기느냐에 따라 워크스테이션은 공식 IP 주소나 악성 IP 주소로부터 무작위로 IP 주소를 얻게 됩니다.

할 수 있는 일은 완화입니다. 즉, 종료된 장비의 MAC을 찾아서 스위치에서 검색하거나 스위치/무선 AP에서 해당 MAC을 차단하는 것입니다.

그것을 찾으려면 두 가지 방법이 있습니다.

영향을 받은 시스템으로 이동하여 해당 요청을 제공한 DHCP 서버의 IP 주소를 찾으십시오. 아니면 IP 주소를 공개하고 여러 번 요청하세요.

외부 라우터에 대한 응답을 얻은 후에는 해당 MAC 주소를 얻는 것보다 해당 IP 주소(예: ipconfig /allWindows 클라이언트에서)를 얻은 다음 불량 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 응답이라는 줄을 확인하세요.
이 예에서 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 기아 상태(특히 불량 DHCP 서버를 대상으로 함)를 사용해 왔습니다. 노력하다dhcdrop또는dhcpstarv, 또는 scapy 스크립트. 나는 그것이 더 유연했기 때문에 결국 후자를 선택했습니다. scapy와 dhcpstarv 모두 합법적인 서비스를 중단하지 않고 문제가 되는 DHCP 서버를 표적으로 삼는 것이 가능합니다.

일부 라우터와 스위치는 일련의 규칙을 위반하는 호스트에 대한 링크를 삭제할 수 있습니다. 보다이 Cisco 지원 스레드예를 들어.

관련 정보