내 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 주소를 해제하고 여러 번 요청하십시오.
외부 라우터에 대한 응답을 얻은 후에는 ipconfig /all
MAC 주소를 가져오는 대신 해당 IP 주소(예: Windows 클라이언트에서)를 가져오고 불량 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 상자에서 여러 DHCP 요청을 수신하는 데 사용할 수 있습니다 tcpdump
(상자에는 모든 텍스트를 볼 수 있는 수평 슬라이더가 있습니다).
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 지원 스레드예를 들어.