web-dev-qa-db-ja.com

ネットワーク上に不正なDHCPサーバーがあるかどうかを確認するにはどうすればよいですか?

ネットワーク内に不正なDHCPサーバーがあるかどうかを判断するための最善の方法は何ですか?

ほとんどの管理者がこの種の問題にどのように取り組んでいるのだろうと思います。検索で DHCPプローブ が見つかり、試してみようと考えました。誰かがそれを経験したことがありますか? (時間をかけてコンパイルしてインストールする前に知っておきたい)。

不正なDHCPサーバーを見つけるための便利なツールやベストプラクティスを知っていますか?

92
l0c0b0x

1つの簡単な方法は、tcpdump/wiresharkなどのスニファをコンピュータで実行し、DHCP要求を送信することです。実際のDHCPサーバーから他のオファーが表示された場合は、問題があることがわかります。

54
Zoredache

要約して他の回答のいくつかに追加するには:

一時的に運用DHCPサーバーを無効にして、他のサーバーが応答するかどうかを確認します。

Windowsマシンでipconfig /allを実行してサーバーのIPアドレスを取得できます。次に、arp -aを使用してそのIPアドレスを検索することにより、MACアドレスを取得できます。

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サーバーを防止するように構成できます。

22
Jason Luther

dhcpdump 、これは入力形式 tcpdump をとり、DHCP関連のパケットのみを表示します。 LANで偽のDHCPを装ったルートキット化されたWindowsを見つけるのに役立ちました。

17
vartec

Wireshark/DHCP Explorer/DHCPプローブアプローチは、1回または定期的なチェックに適しています。ただし、ネットワークでの DHCP Snooping サポートを調べることをお勧めします。この機能は、ネットワーク上の不正なDHCPサーバーから常に保護し、さまざまなハードウェアベンダーによってサポートされています。

Cisco docs に示されている機能セットを次に示します。

•信頼できないソースから受信したDHCPメッセージを検証し、無効なメッセージを除外します。

•信頼できるソースと信頼できないソースからのDHCPトラフィックをレート制限します。

•DHCPスヌーピングバインディングデータベースを構築および維持します。このデータベースには、リースされたIPアドレスを持つ信頼できないホストに関する情報が含まれています。

•DHCPスヌーピングバインディングデータベースを利用して、信頼できないホストからの後続の要求を検証します。

15
Dave K

dhcploc.exe は、Windowsシステムで最も速くて便利な方法です。これは、XPサポートツールで利用できます。サポートツールは、すべてのOEM /小売店にありますXPディスクですが、「リカバリディスク」にある場合とない場合があります。一部のOEMから提供されています ダウンロード MSから入手することもできます。

シンプルなコマンドラインツールです。 dhcploc {yourIPaddress}を実行し、 'd'キーを押して偽の検出を行います。キーを押さずに実行したままにすると、すべてのDHCP要求が表示され、応答が聞こえます。 「q」を押して終了します。

10
quux

Scapyはpythonベースのパケットクラフトツールであり、これらのソートタスクに適しています。これを正確に行う方法の例があります here )。

9
Kyle Brandt

フィルターとしてのbootp.type == 2の使用に関する l0c0b0x のコメントを拡張するにはbootp.typeフィルターは、Wireshark/tsharkでのみ使用できます。彼のコメントの文脈上の場所が私を信じる気にさせたtcpdumpでは利用できません。

Tsharkはこれに対して完全に機能します。

ネットワークは多数のブロードキャストドメインに分割されており、それぞれに独自のLinuxベースのプローブがあり、「ローカル」ブロードキャストドメインと管理サブネット上に何らかの形で存在のポイントがあります。 Tsharkを ClusterSSH と組み合わせると、DHCPトラフィックまたは(さらに言えば)ネットワークの隅々まで簡単に探すことができます。

Linuxを使用してDHCP応答を検索します。

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

不正なdhcpサーバーがネットワーク上にあることを確認したら、それを解決する最も速い方法は...

会社全体にメールラウンドを送信します。

「LANにワイヤレスルーターを追加したのはどれですか。他のすべての人のためにインターネットを停止しました。」

羊のような反応、または競合するデバイスがすぐに消えることを期待してください:)

6
Shh now
3
juFo

メインDHCPサーバーを無効にし、接続を(再)構成します。

IPアドレスを取得した場合は、不正が発生しています。

Linuxが手元にある場合は、標準のdhcpclientがDHCPサーバーのIPアドレスを通知します(そうでない場合は、トラフィックを傍受してDHCP応答の送信元を確認できます)。

3
Vinko Vrsalovic

いくつかの方法があります。小規模なネットワークを実行している場合、最も簡単な方法は、dhcpサーバーをオフ/無効化/取り外し、次にクライアントでipconfig/renewまたは同様のものを実行し、IPを取得して何か問題がある場合です。通信網。

別の方法は、 Wireshark パケットキャプチャー/アナライザーを使用してネットワークトラフィックを調べ、DHCP接続を見つけることです。これを行う方法についてのラボワークシートに ここ からアクセスできます。

これを実行するために利用できるユーティリティがいくつかあります DHCP Explorer もう1つは、元の投稿で言及したDHCPプローブです。

3
Jona

ネットワークのpingスイープを実行し、それをDHCPサーバーから渡されたDHCPリースの数と比較できます。

静的デバイス(ルーターインターフェイスとプリンターなど)の数を大まかに把握する必要がありますが、これにより、この数がわずかにずれますが、これは、複数のネットワークでデバイスを識別するための迅速かつ正確な方法です。

2
Peter

debian/ubuntuでは、dhcpdumptcpdumpを使用するオプションもあります。 dhclient

Dhcpdumpを使用します。

  • 1.a)1つのシェル/シェル(eth0またはインターフェイスの名前)でdhcpdump -i eth0を実行します
  • 1.b)別のシェルでdhclientを起動します(正常に実行する必要はありません)
  • 1.c)dhcpdumpの出力を調べて情報を確認します(最も詳細なニース形式の有益なリストである必要があります)

Dhcpdumpを使用したくない場合のオプション2:

  • 2.a)1つのシェル/ウィンドウで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"-

*補足:tcpdumpとdhcpdumpをインストールする必要があります(例:Sudo apt get install tcpdump dhcpdump); dhcpdumpはtcpdumpに依存

2
eli

監視用とリクエスト送信用の2つの端末を起動することをお勧めします。 Terminal1は、MACアドレスを含むすべての既存のDHCPサーバーからの応答を表示します。この例はUbuntuで実行されました。

Terminal1(監視用):

Sudo tcpdump -nelt udp port 68 | grep -i "boot。* reply"

tcpdump:詳細な出力を抑制し、-vまたは-vvを使用してenp2s0でリスニングする完全なプロトコルデコード、リンクタイプEN10MB(イーサネット)、キャプチャサイズ262144バイト20:a6:80:f9:12:2f> ff:ff:ff: ff:ff:ff、ethertype 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、ethertype IPv4(0x0800)、長さ590:192.168.1.253.67> 255.255.255.255.68:BOOTP/DHCP、応答、長さ548

Terminal2(リクエストを送信するため):

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

2019-10-13 21:21 EESTプレスキャンスクリプトの結果でNmap 7.01( https://nmap.org )を開始:| broadcast-dhcp-discover:| 1の応答1:| IP提供:192.168.1.228 | DHCPメッセージタイプ:DHCPOFFER | IPアドレスのリース時間:2h00m00s |サーバー識別子:192.168.1.1 |サブネットマスク:255.255.255.0 |ルーター:192.168.1.1 | _ドメインネームサーバー:8.8.8.8、8.8.4.4警告:ターゲットが指定されていないため、スキャンされたホストはありません。 Nmap完了:0.94秒でスキャンされた0個のIPアドレス(0個のホストが起動)

その監視端末は、すべての応答を表示するためだけに必要です(nmapは最初の応答のみを表示できます)。

1
ajaaskel