네트워크에 불량 DHCP 서버가 있는지 어떻게 알 수 있습니까?


92

네트워크 내에 불량 DHCP 서버가 있는지 확인하는 가장 좋은 방법은 무엇입니까?

대부분의 관리자가 이러한 종류의 문제에 어떻게 접근하는지 궁금합니다. 검색을 통해 DHCP 프로브 를 발견 하고 시도해 보았습니다. 누구든지 경험이 있습니까? (컴파일하고 설치하는 데 시간을 내기 전에 알고 싶습니다).

불량 DHCP 서버를 찾는 데 유용한 도구 나 모범 사례를 알고 있습니까?


2
MS 도구와 사용이 매우 간단합니다! 불량 DHCP 서버 감지-RogueChecker.zip blogs.technet.com/b/teamdhcp/archive/2009/07/03/…
aa.malta

social.technet.microsoft.com/wiki/contents/articles/에서 귀하의 링크 aa.malta에 대한 공식 참조를 찾았 지만 링크는 더 이상 2016 년부터 작동하지 않는 것 같습니다. 2009 년부터 블로그 게시물이 표시되지만 게시 한 링크 URL에 표시된대로 7 월 3 일 게시물이없는 것 같습니다. 누가 어떤 이유를 알고 있는지 MS가 그것을 제거한 것처럼 보입니다.
Daniel

이 직접 링크 (워드 프레스 사이트에서 찾은)가 Microsoft 서버에서 파일을 다운로드하는 것처럼 보입니다. Link는 2016 년 1 월 현재 작동하고 있습니다. URL은 Microsoft이므로 신뢰할 수 있다고 생각하지만 다음과 같은 보증은 없습니다 : blogs.technet.com/cfs-file.ashx/__key/…
Daniel

답변:


54

간단한 방법 중 하나는 컴퓨터에서 tcpdump / wireshark와 같은 스니퍼를 실행하고 DHCP 요청을 보내는 것입니다. 실제 DHCP 서버 이외의 다른 제안이 있으면 문제가있는 것입니다.


28
"bootp.type == 2"필터 사용에 도움이됩니다 (DHCP 오퍼 만 표시하고 다른 소스 / 알 수없는 소스의 응답이 있는지 확인)
l0c0b0x

4
DHCP 응답 찾기 ( softpedia.com/get/Network-Tools/Network-IP-Scanner/… ) 와 같은 프로그램을 TCPDump / Wireshark와 함께 사용하여 DHCP 응답을 트리거하십시오.
saluce 2016 년

1
보다 구체적인 솔루션을 제공 할 수 있습니까?
tarabyte

@tarabyte 내가 어떤 솔루션을 제공해야하는지 잘 모르겠습니다. 나는이 질문이 12 가지 다른 좋은 답변들로부터 꽤 좋은 범위를 가지고 있다고 생각합니까? 요즘 제 옵션은 Jason Luther가 제안한 것처럼 DHCP를 차단하도록 스위치를 구성하는 것입니다. 더 잘 다루어야 할 특정한 것이 있었습니까?
Zoredache

2
내가 사용하게 일련의 명령을 더 기대하고 있었다 tcpdump, arp명시 적 매개 변수와 이러한 매개 변수의 설명과 등.
tarabyte

22

다른 답변 중 일부를 요약하고 추가하려면 다음을 수행하십시오.

프로덕션 DHCP 서버를 일시적으로 비활성화하고 다른 서버가 응답하는지 확인하십시오.

ipconfig /allWindows 시스템에서 실행하여 서버의 IP 주소를 얻을 수 있으며를 사용하여 해당 IP 주소를 찾아 MAC 주소를 얻을 수 있습니다 arp -a.

Mac에서는 ipconfig getpacket en0(또는 en1)을 실행하십시오 . http://www.macosxhints.com/article.php?story=20060124152826491을 참조 하십시오 .

DHCP 서버 정보는 일반적으로 / var / log / messages에 있습니다. sudo grep -i dhcp /var/log/messages*

프로덕션 DHCP 서버를 비활성화하는 것은 물론 좋은 옵션이 아닐 수 있습니다.

불량 DHCP 서버를 찾는 도구를 사용하십시오.

도구 목록 (다수의 다른 답변에 나열된 도구) 은 http://en.wikipedia.org/wiki/Rogue_DHCP 를 참조하십시오 .

DHCP 오퍼를 차단하도록 스위치 구성

불량 DHCP 서버를 방지하도록 대부분의 관리되는 스위치를 구성 할 수 있습니다.


17

dhcpdump- 입력 형식 tcpdump를 사용 하고 DHCP 관련 패킷 만 표시합니다. LAN에서 가짜 DHCP로 위장하여 루트킷 Windows를 찾는 데 도움이되었습니다.


15

Wireshark / DHCP 탐색기 / DHCP 프로브 접근 방식은 한 번 또는 주기적으로 확인하는 것이 좋습니다. 그러나 네트워크에서 DHCP 스누핑 지원을 조사하는 것이 좋습니다 . 이 기능은 네트워크의 불량 DHCP 서버로부터 지속적인 보호를 제공하며 여러 하드웨어 공급 업체에서 지원합니다.

Cisco 문서에 표시된 기능 세트는 다음과 같습니다 .

• 신뢰할 수없는 출처에서받은 DHCP 메시지의 유효성을 검사하고 잘못된 메시지를 필터링합니다.

• 신뢰할 수있는 소스와 신뢰할 수없는 소스의 DHCP 트래픽을 속도 제한합니다.

• 임대 IP 주소를 가진 신뢰할 수없는 호스트에 대한 정보가 포함 된 DHCP 스누핑 바인딩 데이터베이스를 작성하고 유지 관리합니다.

• DHCP 스누핑 바인딩 데이터베이스를 사용하여 신뢰할 수없는 호스트의 후속 요청을 확인합니다.



10

dhcploc.exe 는 Windows 시스템에서 가장 빠르고 편리한 방법입니다. XP 지원 도구에서 사용할 수 있습니다. 지원 도구는 모든 OEM / 소매 XP 디스크에 있지만 일부 OEM이 제공하는 "복구 디스크"에있을 수도 있고 없을 수도 있습니다. MS에서 다운로드 할 수도 있습니다 .

간단한 명령 줄 도구입니다. dhcploc {yourIPaddress}를 실행 한 다음 'd'키를 눌러 가짜 발견을 수행하십시오. 키를 누르지 않고 실행 상태로두면 모든 DHCP 요청이 표시되고 응답합니다. 'q'를 눌러 종료하십시오.


이 스위치를 개별 스위치 포트를 죽이는 것과 함께 사용하여 우리가 처리하고있는 부적절한 로그 서버를 추적했습니다. 좋은 물건!
DHayes

1
Windows 7에서도 DHCPloc.exe를 계속 사용할 수 있습니다. 1. [여기] [1]에서 "Windows XP 서비스 팩 2 지원 도구"를 다운로드하십시오. 2. 실행 파일을 마우스 오른쪽 버튼으로 클릭하고 속성-> 호환성을 선택한 다음 호환성 모드를 켜고 "Windows XP (서비스 팩 3)"로 설정하십시오. 3. 정상적으로 설치하십시오. DHCPLoc.exe는 Win7 x64 설치에서 제대로 작동합니다. [1] : microsoft.com/ko-kr/download/details.aspx?id=18546
parsley72

1
방금 다음 위치에서 실행 파일을 다운로드 할 수 있으며 Win 10 x64에서 제대로 작동합니다. gallery.technet.microsoft.com/DHCPLOC-Utility-34262d82
PeterJ

9

Scapy는 이러한 정렬 작업에 유용한 Python 기반 패킷 제작 도구입니다. 여기에 정확히이 작업을 수행하는 방법에 대한 예가 있습니다 .


2
와우, 나는 Scapy가 며칠 동안 탐구 한 후에 매우 강력하다는 것을 알았습니다. dhcpfind.exe 및 dhcploc.exe와 같은 crappy 도구를 능가합니다. Scapy 2.2는 Linux와 Windows에서 실행할 수 있습니다. 둘 다 시도했습니다. 유일한 장벽은 파이썬 프로그래밍 언어를 어느 정도 이해하여 그 능력을 활용할 수 있다는 것입니다.
Jimm Chen

귀하가 게시 한 링크가 깨졌습니다
Jason S

당신이 여기에서 찾을 수 기다리는 동안 @JasonS 안녕하세요 ... 저는 링크를 업데이트했지만, 변화는 피어 검토 대기 중입니다 : bitbucket.org/secdev/scapy/wiki/doc/IdentifyingRogueDHCPServers
호이겐스

7

필터로 사용 하는 것에 대한 l0c0b0x 의 의견 을 확장합니다 bootp.type == 2. bootp.type 필터는 Wireshark / tshark에서만 사용할 수 있습니다. tcpdump에서는 그의 의견의 맥락 적 위치가 저를 믿도록 기울여 놓았습니다.

Tshark는이를 위해 완벽하게 작동합니다.

우리는 네트워크를 수많은 브로드 캐스트 도메인으로 나누었습니다. 각각은 "로컬"브로드 캐스트 도메인과 관리 서브넷에서 어떤 방식 으로든 존재하는 자체 Linux 기반 프로브를 가지고 있습니다. ClusterSSH 와 결합 된 Tshark를 사용하면 네트워크의 추가 구석에서 DHCP 트래픽이나 그 밖의 문제를 쉽게 찾을 수 있습니다.

Linux를 사용하여 DHCP 응답을 찾을 수 있습니다.

# ifconfig ethX promisc
# tshark -i ethX -n port 68 -R 'bootp.type == 2'

매우 도움이되었는데, 나는 왜 내가 얻고 있는지 알아 내려고 상당한 시간을 보냈습니다 tcpdump: syntax error. 그것에 대한 질문을 게시해도 귀하의 답변으로 인해 차단이 해제되었습니다. 감사합니다! networkengineering.stackexchange.com/questions/39534/…
Elijah Lynn

1
또한로 변경되었습니다 -R <Read filter>. 나는 얻는다 tshark: -R without -2 is deprecated. For single-pass filtering use -Y.. -Y잘 작동합니다.
Elijah Lynn

6

네트워크에 불량 DHCP 서버가 있음을 확인한 후 해결하는 가장 빠른 방법은 ...

다음과 같이 회사 전체에 이메일을 보냅니다.

"여러분 중 한 사람이 LAN에 무선 라우터를 추가했는데 다른 사람을 위해 인터넷을 죽였습니다."

양의 반응이나 충돌하는 장치가 빨리 사라질 것으로 기대합니다. :)


3

주 DHCP 서버를 비활성화하고 연결을 다시 구성하십시오.

IP 주소를 얻는다면 불량품입니다.

리눅스가 편리한 경우 표준 dhcpclient가 DHCP 서버의 IP 주소를 알려줍니다 (그렇지 않으면 트래픽을 스니핑하여 DHCP 응답의 출처를 알 수 있습니다).


2
이것은 물론 작동하지만 실제로 서비스 제공 에 대해 우려 하는 경우 프로덕션 DHCP 서버를 중지하는 것이 최선의 방법이 아닐 수 있습니다 .
Massimo

2
봉사하는 사람의 수에 따라 다릅니다. 대부분의 경우 몇 분 동안 서비스를 중단 할 수 있으며 특히 대부분의 사람들이 이미 임대 계약을 맺은 하루 중반에는 아무도 눈치 채지 못할 것입니다.
Vinko Vrsalovic 11

3

소규모 네트워크를 실행하는 가장 간단한 방법은 dhcp 서버를 끄고 / 비활성화 / 플러그를 뽑은 다음 클라이언트에서 ipconfig / renew 또는 이와 유사한 방법을 실행하고 IP를 얻거나 얻는 경우 여러 가지 방법이 있습니다. 회로망.

다른 방법은 Wireshark 패킷 캡처 / 분석기 를 사용 하여 네트워크 트래픽을보고 DHCP 연결을 찾는 입니다. 여기 에서이 작업을 수행하는 방법에 대한 랩 워크 시트가 있습니다 .

이 작업을 수행 할 수있는 유틸리티는 DHCP 탐색기 이며 다른 게시물은 원래 게시물에서 언급 한 DHCP 프로브입니다.



2

네트워크를 핑 스윕 한 다음 DHCP 서버가 전달한 DHCP 임대 수와 비교할 수 있습니다.

이 숫자가 약간 기울어 질 정적 장치 (라우터 인터페이스 및 프린터) 수에 대한 일반적인 아이디어가 필요하지만 여러 네트워크에서이를 식별하는 빠르고 정확한 방법이어야합니다.


0

데비안 / 우분투 하나는 사용하는 옵션이 있습니다 dhcpdump및 / 또는 tcpdump등의 도움으로dhclient

dhcpdump를 사용하십시오.

  • 1.a) dhcpdump -i eth0하나의 쉘 / 쉘 (eth0 또는 인터페이스 이름)에서 실행
  • 1.b) dhclient다른 쉘에서 시작 (성공적으로 실행할 필요는 없음)
  • 1.c) dhcpdump정보 의 결과물을 살펴 본다 (가장 자세하고 유용한 정보를 제공하는 멋진 형식의 목록이어야 함)

dhcpdump를 사용하지 않으려는 경우 옵션 2 :

  • 2.a) tcpdump -i eth0 -t -n > /tmp/my_file.txt하나의 쉘 / 창에서 실행
    (선택 사항 : -t= 타임 스탬프 비활성화 // -n= 이름 확인 비활성화, IP 주소 만, 서버 이름 없음 (RHEL / centos 사용 -nn))
  • 2.b) dhclient다른 쉘에서 시작 (성공적으로 실행할 필요는 없음)
  • 2.c) tcpdump 실행 중지 ()
  • 2.d) 좋아하는 편집기로 /tmp/my_file.txt 파일을 검사하고 ".53"(기본 DNS 포트) / "NX"/ "CNAME"/ "A?"와 같은 항목을 검색하십시오. / "AAAA"-

* sidenote : tcpdump 및 dhcpdump가 설치되어 있어야합니다 (예 :) sudo apt get install tcpdump dhcpdump; dhcpdump는 tcpdump에 의존


0

하나는 모니터링을위한 것이고 다른 하나는 요청을 보내는 것입니다. 터미널 1은 MAC 주소를 포함한 모든 기존 DHCP 서버의 응답을 보여줍니다. 이 예제는 Ubuntu에서 실행되었습니다.

터미널 1 (모니터링 용) :

sudo tcpdump -nelt udp 포트 68 | grep -i "boot. * 답장"

tcpdump : 상세 출력 억제, enp2s0, 링크 유형 EN10MB (이더넷), 캡처 크기 262144 바이트 20 : a6 : 80 : f9 : 12 : 2f> ff : ff : ff에서 전체 프로토콜 디코드 청취에 -v 또는 -vv 사용 ff : ff : ff, 이더넷 유형 IPv4 (0x0800), 길이 332 : 192.168.1.1.67> 255.255.255.255.68 : BOOTP / DHCP, 회신, 길이 290 00 : 23 : cd : c3 : 83 : 8a> ff : ff : ff : ff : ff : ff, 이더넷 유형 IPv4 (0x0800), 길이 590 : 192.168.1.253.67> 255.255.255.255.68 : BOOTP / DHCP, 회신, 길이 548

터미널 2 (요청을 보내기위한) :

sudo nmap --script broadcast-dhcp-discover -e eth0

2019-10-13 21:21 EEST 사전 스캔 스크립트 결과에서 Nmap 7.01 ( https://nmap.org ) 시작 : | broadcast-dhcp-discover : | 응답 1 of 1 | IP 제공 : 192.168.1.228 | DHCP 메시지 유형 : DHCPOFFER | IP 주소 임대 시간 : 2h00m00s | 서버 식별자 : 192.168.1.1 | 서브넷 마스크 : 255.255.255.0 | 라우터 : 192.168.1.1 | _ Domain Name Server : 8.8.8.8, 8.8.4.4 경고 : 대상이 지정되지 않았으므로 0 개의 호스트가 스캔되었습니다. Nmap 완료 : 0.94 초 내에 0 개의 IP 주소 (0 개의 호스트 가동) 검색

모니터링 터미널은 모든 응답을보기 위해 필요합니다 (nmap은 첫 번째 응답 만 표시 할 수 있음).

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.