pfsense: 2 番目の DHCP サーバーをブロックする

pfsense: 2 番目の DHCP サーバーをブロックする

私の LAN では、1 つの DHCP サーバーを備えた PFSense サーバーを使用しています。

LAN に表示される 2 番目の DHCP サーバーをブロックする必要があります。PfSense ファイアウォールを使用して、他の DHCP サーバー IP アドレスを拒否できると思います。

どうすればいいですか?

答え1

残念ながら、同じ LAN 内の 2 番目の DHCP をブロックすることはできません (ファイアウォール レベルでは不可能であり、ハイエンドのエンタープライズ スイッチング機器でこれを緩和するのは簡単なことではありません)。IP 要求はブロードキャスト サービスであり、通常は LAN レベルで動作するため、ファイアウォール レベルでサービスをブロックするルーティング サービスはありません。

たとえば、ファイアウォールは同じネットブロック/LAN に属するマシン間の通信をブロックしませんが、他のネットワークと通信するためにルーティングを行う制御/サービスを実行します。

DHCP プロトコルでは、IP を要求したステーションに最初に到着した応答が受け入れられる応答であると定義されています。そのため、どちらが勝ったかによって、ワークステーションは公式 IP アドレスまたは不正 IP アドレスからランダムに IP アドレスを取得します。

実行できるのは緩和策、つまり、攻撃元の機器の MAC を見つけてスイッチで検索するか、スイッチ/ワイヤレス AP でその MAC をブロックすることです。

それを調べるには、次の 2 つの方法があります。

影響を受けるマシンにアクセスし、その要求に応えた 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 です。2 番目のサーバーは IP アドレスが 1.1.3.200 で、MAC アドレスは 00:0b:fc:07:04:01 です (出力の 6 行目と 7 行目)。

答え2

私はDHCPスターベーション(特に不正なDHCPサーバーをターゲットにしたもの)を長期間使用しました。dhcドロップまたはdhcpstarv、または scapy スクリプトです。私は最終的に後者を選択しました。後者の方が柔軟性が高いからです。scapy と dhcpstarv の両方で、正当なサービスを中断することなく、問題のある DHCP サーバーをターゲットにすることができます。

一部のルーターやスイッチは、一連のルールに違反するホストへのリンクをドロップすることがあります。このシスコサポートスレッド例えば。

関連情報