2011/02/23

在 M$ Windows DHCP Server 上阻擋 MAC Address

站在資安的立場其實並不應該開放 DHCP 給任何一台電腦自由連上公司網路, 但因為環境需要又不得不架設 DHCP 給一些臨時的測試機來使用, 所以只好訂定了「電腦名稱至少要包含自己的名字足以提供網管辨認」這樣的底限.

但就是有人很不受教, 電腦名稱老是取一些讓我無法辨認的字串, 每當看到這種電腦連上網路之後我就要大費周章的去找出這些電腦是哪些同事的, 一而再再而三讓我覺得很 dirty, 這麼 low 的事情卻佔掉我不少時間來處理, 棍!! 這真的是很氣人! 既然大家都不照遊戲規則來走那我就只好放大絕:直接在 DHCP Server 上擋掉這些機器, 不發 IP 給你們看你們怎麼連網!! 如果你也是有這方面困擾的網管人員的話不妨參考一下.

下載 MacFilterCallout.zip 至 M$ Windows DHCP Server 上並解開至某個目錄 (eg: C:\MacFilterCallout\) 存放.

在該目錄中建立一個新的空白純文字檔, 檔名可以自取 (eg: C:\MacFilterCallout\MAClist.txt), 這個檔案就是將來要用到的 Mac Address 清單.

打開登錄編輯程式 (regedit.exe) 並新增以下 registry key:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\DHCPServer\Parameters\
Key NameKey Type說明
CalloutDllsREG_MULTI_SZ指出存放 MacFilterCallout.dll 的完整路徑. eg:
C:\MacFilterCallout\MacFilterCallout.dll
CalloutEnabledDWORD0 = DHCP Server 不使用 MacFilterCallout
1 = DHCP Server 要使用 MacFilterCallout
CalloutErrorLogFileREG_MULTI_SZ指出將來要存放錯誤訊息的完整路徑. eg:
C:\MacFilterCallout\Error.txt
CalloutInfoLogFileREG_MULTI_SZ指出將來要存放紀錄檔的完整路徑. eg:
C:\MacFilterCallout\Log.txt
CalloutMACAddressListFileREG_MULTI_SZ指出存放 Mac Address 清單的完整路徑. eg:
C:\MacFilterCallout\MAClist.txt

接著就要編輯 MAC Address 清單 (eg: C:\MacFilterCallout\MAClist.txt), 這個檔案的第一行一定得是 MAC_ACTION = {ACCESS ALLOW} 或是 MAC_ACTION = {DENY}, 第二行開始就是 MAC Address, 每行一個, 英文字請用小寫字母.

如果你的第一行是 MAC_ACTION = {ACCESS ALLOW} 那就代表你採用正面表列, 如:
MAC_ACTION = {ALLOW}
109add613f10
000dea19bbca
......
那就代表只有 109add613f10 和 000dea19bbca 這兩台電腦可以自 DHCP Server 取得 IP 連網, 其他的任何電腦都無法自 DHCP Server 取得 IP.

如果你的第一行是 MAC_ACTION = {DENY} 那就代表你採用負面表列, 如:
MAC_ACTION = {DENY}
109add613f10
000dea19bbca
......
那就代表 109add613f10 和 000dea19bbca 這兩台電腦無法自 DHCP Server 取得 IP 連網, 其他任何不在列表上的電腦都可以取得 IP.

都設定無誤之後 restart DHCP service, 如果都沒有問題的話在事件檢視器中可看見一個 ID=1033 的訊息


之後每當 DHCP Server 接到來自 client 端的 request 之後都會先去檢查 MAC Address 清單, 並依照條件決定是否發放 IP 給 client 端.

蝌蚪是採用 DENY 的方式來管制, 一旦發現無法識別的機器就把他的 MAC Address 寫入清單中, 再在 DHCP Server 上把它 kick 掉, 他就永遠再也無法自這台 DHCP Server 取得 IP 連網, 進而達到管制 DHCP Server 停止發放 IP 給未知電腦的目的.

9 則留言:

  1. 那他是要帶珍奶來拜見你,才能再取得DHCP嗎?

    回覆刪除
  2. Re: Shot Liang <177906337202899240>
    蝌蚪沒有吃下午茶的習慣~~

    回覆刪除
  3. 您好,
    請問一下,如果是透過無線AP上線的話,也是有效的嗎??

    目前我使用 DENY 的方式來管制,但是該電腦如果透過無線AP上網的話,還是沒有辦法管制。

    回覆刪除
  4. Re: 匿名 <8282291309161227265>
    我不瞭解你的網路架構耶.

    透過AP上網的client端IP是從哪裡取得的?應該是從AP本身內建的DHCP取得的吧?如果是這樣的話那你管制LAN中的Windows DHCP server當然就無效囉,因為這些client端根本就不會去向Windows DHCP server要求IP.

    所以你應該是要在AP上鎖MAC而不是在Windows DHCP server上面鎖,一旦在AP上鎖住MAC那麼你不想給連的機器就連不上了. 當然MAC Address也是可以偽造,但我想你公司內部應該不會有人這麼無聊才對? XD

    回覆刪除
  5. 謝謝您的問覆。

    另外有個問題,採用正向列表的話,第一行應該要設成 MAC_ACTION = {ALLOW} 才對吧!!

    回覆刪除
  6. Re: 匿名 <7477888057130603143>
    感謝您的指正, 沒想到小弟打錯這麼久連自己都沒發現到 XD

    回覆刪除
  7. 感謝大大的分享
    有些受益
    讚!

    回覆刪除
  8. 我也是想用deny的方式去阻擋,但是我第一步該怎麼取得無法辨識的mac來設定呢,若是有清單外的機器要去取得dhcp,會有哪邊記錄下他的mac嗎

    回覆刪除
  9. Re: 李維欣 <2438730143967401965>
    在 MS DHCP 主畫面中就可以看到每個 client 端的電腦名稱、IP 以及 Mac Address. 至於 log 中只會有電腦名稱和 IP 沒有 Mac Address.

    回覆刪除

歡迎留下您寶貴的意見, 但廣告以及無意義的夢囈會被砍哦~