蔣灝東
[摘要]通過分析網絡還原卡的基本原理,設計一直基于還原卡的網絡認證方式,在實踐中有效解決計算機機房因不斷增加產生管理難的問題。
[關鍵詞]網絡還原卡登錄認證嵌入設計
中圖分類號:TP3文獻標識碼:A文章編號:1671-7597(2009)1210082-01
本文設計和實現的基于網卡的客戶端驗證方案有以下優點:(1)解決了以往機房管理系統必須添加額外硬件才能實現的問題;(2)充分利用網絡還原卡通過設置中斷向量獲得BIOS控制權的特征,使得客戶端的登錄程序不易使用者繞過具有較高的安全性;(3)節省PCI空間,避免了和還原卡使用相同技術而發生沖突的問題且便于完善和擴充。
一、設計思想
要在引導進入系統前進行BIOS登錄認證,首先要了解計算機啟動的過程,當計算機啟動時系統BIOS的啟動代碼首先要做的事情就是進行POST(Power-On Self Test,加電后自檢),自檢正常結束后將引導進入系統。要在BIOS下進行登錄,就要在進入系統前使得登錄程序獲得BIOS的控制權。要把在引導系統前完成登錄,使登錄程序在BIOS下運行,可以把程序寫入BIOS的ROM芯片中,利用芯片的擴展功能實現。由于BIOS的內存分配空間有限,使得如果以后進一步擴展的話有困難,使用這種方法必須找到主板生產廠家,比較麻煩,而且在寫入時如出錯容易燒掉主板,代價太大。BIOS是計算機軟硬件最底層的程序為計算機提供最低級的、最直接的硬件控制與支持,記錄了各硬件的信息,如采用調用BIOS中斷向量的方法容易與還原卡在技術上產生沖突,網絡還原卡工作原理是網絡還原卡把自編軟件固化在板上的EPROM里作為可訪問的ROM組件。在網絡還原卡ROM中修改操作系統引導人口INT 19H的中斷向量,可獲得BIOS系統控制。優先執行自己ROM中的程序。程序啟動后的查找系統BIOS的中斷向量表,截取INT13中斷,用自己的INT13程序替換掉原有的INT13程序,達到對硬盤讀寫的攔截。在網絡還原卡BOOT ROM中寫入引導程序,使得在系統引導時攔截啟動信息,用非標準設備引導系統。在技術上具有可行性。
二、設計方案
(一)擴展ROM獲取BIOS中斷向量過程。當計算機啟動進行上電自檢(POST)時,會為BIOS的所有調用程序建立一個中斷向量,在缺省向量被設置好之后,將對所有的擴展的ROM塊進行掃描。檢查各種擴展卡的ROM塊,確定擴展卡的ROM塊為有效塊后將控制權傳遞給它,為了尋找有效的擴展ROM塊,BIOS于C0000—DFFFFH內存映象空間內,以2KB為單位進行掃描,每一個有效的擴展卡的ROM塊,必須建立一個標識供POST來識別它。此時,網絡還原卡的ROM程序可以通過設置中斷向量獲得控制權,將網絡還原卡掛到系統中。一個有效的ROM塊應滿足如下定義:
字節0:55H;
字節1:AAH;
字節2:長度指示器,表示ROM中以512B為1塊的信息塊個數(長度P512)。
為測試ROM模塊的完整性,需要求一個檢查和。在定義的ROM中,每1B按模100H求和,其和必須為0,該模塊才被認為有效。當系統的ROMBIOS找到1個有效的ROM時,它對ROM的字節3(將是一個可執行代碼)作1次遠調用(farcall),適配器板現在可以執行它的加電初始化任務。執行完初始化工作后,適配器插件板上的ROM應通過1條遠返回(far return)指令,將控制權交還給ROMBIOS程序,完成系統的啟動。
(二)登錄程序嵌入網絡還原卡程序。通過上述方法,當網絡還原卡的ROM塊滿足有效條件時,可以獲得BIOS的控制權,以將自身的程序掛到系統上執行。將登錄程序嵌入網絡還原卡程序中。在還原卡正常工作后,執行網絡還原卡的程序時,顯示用戶登錄界面(用戶登錄端)。用戶可以在此輸入用戶名和密碼,并選擇上機或下機登錄端程序根據登錄參數設置與服務器進行網絡連接,提交認證信息;服務器收到認證信息后,與數據庫建立連接,并提交認證請求;數據庫收到認證請求后,根據提交過來的認證信息進行判斷,得出認證結果(能否在該機位上機),并將認證結果返回給用戶登錄端;用戶登錄端根據認證結果作出相應的處理。
(三)登錄原理與方法。登錄程序在操作系統引導前運行,無高層的IP地址協議,故登錄程序需要與服務器聯系,得到自己的IP地址,服務器的MAC地址,使用TCP/IP協議和服務器進行通信。引導協議BOOTP是一種基于UDP/IP的協議。這種協議允許正在啟動的主機動態配置而無需用戶監督。BOOTP主要用于客戶機從服務器獲得自己的IP地址,服務器的IP地址和MAC地址。
BOOTP客戶機用UDP68端口以廣播的形式發出一個名為BOOTREQUEST的IP地址查詢請求幀,這個請求幀中包含了客戶機物理地址,然后客戶機等待服務器的響應,如果在特定時間段內沒有收到響應,客戶機就重新發出請求。網絡中的運行BOOTP服務的服務器接收到的這個請求幀,根據這幀中的MAC地址在BOOTPTAB啟動數據庫中查找這個MAC的記錄,如果沒有此MAC的記錄則不響應這個請求,如果有就將FOUND幀發送回客戶機。FOUND幀中包含的主要信息有客戶機的IP地址、服務器的IP地址、硬件類型、網關IP地址、客戶機MAC地址和啟動映象文件名。在客戶機IP地址不知道的情況下,服務器必須要有一個硬件地址和IP地址相對應的數據庫??蛻魴CIP地址也被放到“bootreply”的某一字段中??蛻魴C獲得服務器回送的IP地址和服務器的IP地址,MAC地址后,接受用戶輸入的登錄數據,用TCP/IP協議把數據發送給服務器,經過服務器驗證后返回數據,如是合法用戶,啟動計算機,否則不予響應。
(四)服務器端設計。服務器端要與客戶機進行兩次的通訊,首先通訊回送客戶機IP,服務器IP,MAC地址,服務器要運行BOOTP服務,使用熟知的UDP67端口讀取UDP數據報,因客戶機不知道自己的IP地址,不能響應服務器的ARP請求,這時BOOTP服務器通過服務器廣播這個BOOTP應答而不直接將應答發回該客戶。要考慮好BOOTP服務運行以保證客戶機能順利獲得回送數據包。第二次通訊接收來自用戶登錄端的登錄請求,從數據包中分解出登錄信息,并將登錄信息提交數據庫進行登錄處理,處理后作出響應,根據機器編號、用戶名、密碼、登錄用戶的賬戶信息以及當前的上機信息判定該用戶是否允許上機或下機,并把結果返回客戶機。可以使用VC等加上SQL來開發,該部分程序可利用數據庫的存儲過程完成,這樣便于系統的更新與維護。在設計時應考慮由于機房里的計算機數量多,很多時候學生都是同一時間進入機房啟動計算機,這時數據庫要處理大量來自用戶機的登錄請求,需要處理的任務量非常大,除了提高服務器的硬件性能外,在設計過程中應考慮在接收數據包時采取多線程來截取避免堵塞。
參考文獻:
[1]王書海、劉明生、肖眾,機房管理系統用戶登錄認證方案設計[J].實驗室研究與探索,2005,24(2).
[2]仲兆滿、韓其睿、管燕,一種基于網卡的網絡實驗室安全設計[J].儀器儀表用戶,2005,12(5).