一般來說,企業(yè)用戶目前使用無線路由器有兩種模式,一種是NAT模式,即將墻點(diǎn)出來的網(wǎng)線接入WAN口,而無線終端則通過無線路由器自帶的DHCP服務(wù)分配一個(gè)私網(wǎng)地址(一般為192.168 .X .X或者10 .X.X .X),所有接入的無線終端通過WAN口IP共享上網(wǎng)。另外一種則是網(wǎng)橋模式,即不使用WAN口,將墻點(diǎn)出來的網(wǎng)線接入某個(gè)LAN口中,無線終端通過公司的DHCP服務(wù)器分配IP地址。針對(duì)這些情況,本文給出了兩種解決方案。
圖1 無線管控設(shè)備部署圖
在企業(yè)Internet出口處部署無線管控設(shè)備,通過分析訪問Internet的流量找出無線路由器和無線終端,并對(duì)其進(jìn)行針對(duì)性的管控,具體部署圖如圖1所示。
從上圖1可以看出,無線管控設(shè)備(AC)部署于內(nèi)網(wǎng)核心交換機(jī)和防火墻之間,以透明模式接入,能夠?qū)υL問Internet的流量進(jìn)行全面分析。
(1)上網(wǎng)行為管理技術(shù)已經(jīng)較為成熟,針對(duì)無線IP和應(yīng)用的管控效果較好。
(2)設(shè)備直接以透明模式接入,部署簡單,網(wǎng)絡(luò)架構(gòu)無需大的變更。
(3)能管控以NAT模式接入的無線路由器,還能管控以網(wǎng)橋模式接入的無線路由器下接入的終端。
(4)能夠自動(dòng)收集數(shù)據(jù),有比較成熟的報(bào)表系統(tǒng)供分析和決策。
(1)只能針對(duì)上外網(wǎng)的無線路由器進(jìn)行管控,即如果某個(gè)無線路由器接入了公司局域網(wǎng),只訪問公司內(nèi)網(wǎng)資源,不訪問Internet,那么該設(shè)備將無法發(fā)現(xiàn)該終端。
(2)只能識(shí)別出無線路由器的WAN口IP,無法取得無線路由器的其他信息,如品牌、MAC地址和接入交換機(jī)端口等信息。
(3)部署在網(wǎng)關(guān)處,存在單點(diǎn)故障的風(fēng)險(xiǎn)。
(4)需要一定的投資來購買硬件設(shè)備。
與方案一中使用純技術(shù)手段不同,方案二結(jié)合企業(yè)自身IT基礎(chǔ)架構(gòu),采用技術(shù)+管理的方式來實(shí)施無線管控。技術(shù)方面自主研發(fā)檢測腳本程序,實(shí)時(shí)檢測無線路由器接入情況。管理方面建議完善無線路由器出庫登記制度,結(jié)合檢測軟件檢測出的結(jié)果,找出非法接入的無線路由器。
下面將對(duì)檢測腳本程序和無線路由器登記制度分別進(jìn)行介紹。
首先對(duì)無線路由器自動(dòng)檢測程序進(jìn)行介紹。該檢測程序的工作原理是搜集無線MAC地址庫,從網(wǎng)關(guān)設(shè)備(核心交換機(jī)或者路由器)的ARP信息庫中查詢到無線路由器的相關(guān)信息。腳本程序是采用大多數(shù)網(wǎng)絡(luò)管理人員熟悉的VBScript語言開發(fā),后臺(tái)數(shù)據(jù)庫采用的是MySQL,整個(gè)檢測程序主要包括四個(gè)模塊:IEEE MAC入庫模塊、無線MAC庫查詢模塊、網(wǎng)關(guān)ARP數(shù)據(jù)抓取模塊及無線節(jié)點(diǎn)掃描模塊,這四個(gè)模塊之間屬于順序執(zhí)行的關(guān)系,每個(gè)模塊功能各由一個(gè)腳本程序來完成。下面將對(duì)四個(gè)模塊分別進(jìn)行介紹。
(1)IEEE MAC入庫模塊
IEEE組織發(fā)布了一個(gè)權(quán)威的全球MAC地址分配表,下載地址為http://standards.ieee .org/regauth/oui/oui.txt,表里詳細(xì)記錄了網(wǎng)絡(luò)設(shè)備廠商與MAC地址段的分配關(guān)系,這是一個(gè)文本文件,需要使用寫字板打開,文件內(nèi)格式如下所示:
從上述例子可以看出,MAC地址是按段分配給各個(gè)廠家的,以00-19-E0開頭的這段MAC地址分配給廠家TP-Link。這個(gè)MAC地址分配文件內(nèi)容就是由這些分配段組成。為了方便在程序中調(diào)用,我們需要將這個(gè)MAC分配表導(dǎo)入MySQL數(shù)據(jù)庫中。本模塊正是利用腳本程序?qū)⑦@些記錄自動(dòng)導(dǎo)入到MySQL數(shù)據(jù)庫中,如果未來該分配表發(fā)生變化,即可重新利用該模塊將新的分配表導(dǎo)入數(shù)據(jù)庫中。
下面將對(duì)該模塊的關(guān)鍵部分進(jìn)行介紹,由于需要進(jìn)行數(shù)據(jù)庫操作,所以必須先安裝MySQL數(shù)據(jù)庫,然后定義數(shù)據(jù)庫連接字符串,MySQL數(shù)據(jù)庫連接字符串內(nèi)容主要包括數(shù)據(jù)源名、Driver名稱、數(shù)據(jù)庫服務(wù)器 IP、User、Password、目的數(shù)據(jù)庫名稱及數(shù)據(jù)庫端口(MySQL端口一般為3306)組成。
數(shù)據(jù)庫連接成功后,就需要?jiǎng)?chuàng)建數(shù)據(jù)庫及相關(guān)的表,本文創(chuàng)建了network_db數(shù)據(jù)庫,該數(shù)據(jù)庫用于存放所有模塊所涉及到的表,在本模塊中需要?jiǎng)?chuàng)建Mac_lib表,用于存放MAC地址分配表中的所有信息,該表包含序號(hào)、MAC分配段、公司名稱三個(gè)屬性。創(chuàng)建數(shù)據(jù)庫和表都需要使用SQL語句,語句“create database if not exists network_db”即可創(chuàng)建數(shù)據(jù)庫network_db,其他表的創(chuàng)建與此類似。
利用SQL語句創(chuàng)建完相應(yīng)的數(shù)據(jù)庫和表后,就需要將文件中的內(nèi)容讀入數(shù)據(jù)庫MAC_lib表中,基本原則是采用循環(huán),逐行進(jìn)行選擇性讀入,關(guān)鍵代碼如下:串的那一行
(2)無線MAC庫查詢模塊
本模塊是從(1)中生成的MAC地址庫中抽取出相應(yīng)的無線設(shè)備生產(chǎn)廠商的MAC地址記錄,如TP-Link、D-Link等,這個(gè)庫是動(dòng)態(tài)變化的,由用戶決定無線MAC庫的內(nèi)容。具體實(shí)現(xiàn)就是根據(jù)廠商的名稱在Mac_lib表中進(jìn)行查詢,找到對(duì)應(yīng)的表項(xiàng),插入到Macwireless_lib表中,該模塊也涉及到數(shù)據(jù)庫操作,SQL語 句"create table if not exists network_db.Macwireless_lib (Mac_num int(4),Mac_id varchar(12)NOT NULL,company_id varchar(100) NOT NULL)"創(chuàng)建了Macwireless_lib表,語句"insert into network_db .Macwireless_lib select* from network_db .Mac_lib where company_id like'%tp-link%'"將對(duì)應(yīng)的廠商MAC分配項(xiàng)插入到Macwireless_lib表中。這里暫時(shí)只加入了TP-Link廠家,未來可以根據(jù)需求重新定義SQL語句進(jìn)行擴(kuò)展。
(3)網(wǎng)關(guān)ARP數(shù)據(jù)抓取模塊
本模塊通過調(diào)用SecureCRT,執(zhí)行對(duì)應(yīng)的腳本程序從網(wǎng)關(guān)實(shí)時(shí)抓取出ARP信息,然后將信息存入數(shù)據(jù)庫供程序分析。由于從核心交換機(jī)(型號(hào)為Cisco 6509)利用“show ip arp”抓取出來的ARP信息是按行分布的,為方便起見,先將這些信息存入一個(gè)過渡文件arp_switch6509.rtf中,然后再將這個(gè)文件內(nèi)容再逐行寫入network_db數(shù)據(jù)庫的arp_switch6509表中,這里就涉及到導(dǎo)出數(shù)據(jù)和寫數(shù)據(jù)庫兩步操作。
我們采用Cisco交換機(jī)中的管道和tee命令,將對(duì)應(yīng)的ARP信息分離出來,然后采用TFTP上傳的方式,將抓取的信息上傳至TFTP服務(wù)器上,即可完成數(shù)據(jù)從核心交換機(jī)導(dǎo)出的工作,當(dāng)然,這都是腳本程序自動(dòng)完成的,其中還涉及到自動(dòng)登錄、自動(dòng)輸入、自動(dòng)識(shí)別等系列流程,關(guān)鍵代碼如下:
crt .Session .Connect “/TELNET " & hexin_ip”
hexin_ip為核心交換機(jī)的IP地址,這條命令啟動(dòng)SecureCRT自動(dòng)Telnet到核心交換機(jī)上。
其中temp_user為登錄交換機(jī)的用戶名,上述這兩條命令可以監(jiān)控SecureCRT交互界面,出現(xiàn)“Username:”后,就自動(dòng)輸入用戶名,然后回車。后續(xù)輸入密碼、enable密碼以及各類交換機(jī)命令,都可以采用類似的方式。
ARP數(shù)據(jù)導(dǎo)出到文件后,即可寫入數(shù)據(jù)庫中供后續(xù)掃描模塊使用。這一部分相對(duì)簡單,就是常規(guī)的寫數(shù)據(jù)庫操作,通過循環(huán)逐行將文件中的ARP信息寫入數(shù)據(jù)庫,關(guān)鍵代碼如下:
上述代碼就是通過insert語句將ARP信息寫入數(shù)據(jù)庫中的arp_switch6509表,寫入的屬性包括序號(hào)、MAC地址,IP地址和所屬VLAN。
(4)無線節(jié)點(diǎn)掃描模塊
本模塊根據(jù)(2)和(3)獲得的無線MAC地址庫和網(wǎng)關(guān)ARP信息庫進(jìn)行分析,判斷ARP庫中每條記錄的MAC字段是否屬于無線MAC地址庫中的地址段,如果屬于無線MAC,則查詢并記錄下相關(guān)的信息,信息包括無線路由器的MAC地址、WAN口IP地址、接入交換機(jī)的端口、制造商及檢測時(shí)間。由于企業(yè)網(wǎng)絡(luò)架構(gòu)一般呈樹形結(jié)構(gòu)分布,交換機(jī)之間通過Trunk口進(jìn)行互聯(lián),接入端交換機(jī)通過Access接口與終端進(jìn)行連接,無線路由器作為終端處于這棵樹的末梢位置,所以在搜索無線路由器的具體位置時(shí),我們采用了樹的搜索算法,能夠直接定位到接入層交換機(jī)的某個(gè)端口,然后通過綜合布線的點(diǎn)位圖,即可定位到無線路由器的物理位置。
下面將對(duì)該模塊的關(guān)鍵代碼進(jìn)行介紹。
本文將掃描出的無線路由器信息都存放于數(shù)據(jù)表wirelessInfo_switch6509中,該數(shù)據(jù)表的屬性包括序號(hào)、MAC地址、IP地址、位置、制造商、掃描時(shí)間等。由于搜索無線路由器的位置相對(duì)比較復(fù)雜,但是無線路由器的其他信息獲取相對(duì)簡單,所以整個(gè)模塊分為獲取位置信息和獲取其他信息兩部分。
(1)如何獲取其他信息
首先介紹如何獲取其他信息(除位置屬性以外的其他屬性),這些信息通過arp_switch6509和Macwireless_lib兩個(gè)表的匹配就可以獲取,具體方法是將兩個(gè)數(shù)據(jù)表中的MAC字段進(jìn)行循環(huán)比較,如果兩表中的MAC字段相同,說明arp_switch6509表中對(duì)應(yīng)的表項(xiàng)即為某個(gè)無線路由器的信息,將對(duì)應(yīng)的信息寫入wirelessinfo_switch6509數(shù)據(jù)表中即可,關(guān)鍵代碼如下:
(2)獲取無線路由位置信息
下面介紹如何獲取無線路由器位置信息,具體實(shí)現(xiàn)是針對(duì)wirelessinfo_switch6509表中的無線路由器MAC地址信息,利用循環(huán),從樹根(核心交換機(jī))開始,利用“show Mac-address”命令,從交換機(jī)的MAC地址轉(zhuǎn)發(fā)表中找到對(duì)應(yīng)目的MAC地址的下一跳端口,然后利用“show cdp neighbors”命令,找到相鄰的交換機(jī),如果結(jié)果為空,則說明該目的端口已經(jīng)是無線路由器的接入端口,可以結(jié)束此次搜索;如果不為空,則繼續(xù)登錄對(duì)應(yīng)交換機(jī),采取同樣的操作。這樣通過遍歷整棵樹,直到找到最終的無線路由器接入端口。
當(dāng)然,這個(gè)過程同樣需要使用交換機(jī)的自動(dòng)登錄程序,這在前面已有介紹,在此不再贅述。
下面對(duì)關(guān)鍵代碼進(jìn)行介紹:
圖2無線路由器檢測程序流程圖
整個(gè)檢測程序的流程圖如圖2所示。
利用上述的檢測程序檢測出局域網(wǎng)內(nèi)的無線路由器后,我們?nèi)绾稳プR(shí)別合法與非法的無線路由器呢?這就需要在管理上下功夫了。由于企業(yè)內(nèi)部電子設(shè)備的領(lǐng)用一般都有嚴(yán)格的出庫流程,本文從完善此流程的角度出發(fā),建立相應(yīng)的無線路由器登記制度,當(dāng)用戶申請(qǐng)無線路由器獲批后,需前往庫房管理處領(lǐng)取設(shè)備,而庫房管理員除了登記設(shè)備型號(hào)、序列號(hào)等信息,還需要登記無線路由器WAN口的MAC地址,登記后的無線路由器視為合法。完成上述登記內(nèi)容后,方案二的整套流程如圖2所示。
(1)用戶提出無線路由器使用申請(qǐng)。
(2)申請(qǐng)審批通過后,用戶赴庫房領(lǐng)取設(shè)備,庫管人員分配設(shè)備,登記設(shè)備型號(hào)、SN和MAC地址等信息。
(3)客服人員為用戶部署無線路由器,交付給用戶使用。
(4)定期(如一個(gè)月)利用無線路由器檢測程序進(jìn)行掃描,導(dǎo)出掃描結(jié)果。
(5)將掃描結(jié)果提交給庫管人員,庫管人員將無線路由器設(shè)備登記表與掃描結(jié)果進(jìn)行對(duì)照,找出其中非法接入的無線路由器。
(6)將非法接入的無線路由器信息,包括IP、MAC以及位置(接入交換機(jī)的端口)提交給客服人員。
(7)客服人員根據(jù)上述信息,結(jié)合點(diǎn)位圖即可定位到無線路由器的具體位置,對(duì)其進(jìn)行處理。
(1)方案優(yōu)勢
檢測程序旁路部署,任意一臺(tái)連入局域網(wǎng)的PC機(jī)即可安裝,不占用任何資源,不會(huì)對(duì)網(wǎng)絡(luò)產(chǎn)生任何影響。
定位較為準(zhǔn)確,不僅能獲知無線路由器的制造商,更能追蹤到無線路由器的物理位置。
檢測結(jié)果不受無線路由器是否上外網(wǎng)所限制,只要無線路由器與網(wǎng)關(guān)有過通訊,即可準(zhǔn)確識(shí)別出來。
程序完全自主開發(fā),無需任何投資費(fèi)用;而且程序具有通用性,很容易移植到其他企業(yè)環(huán)境。
(2)方案缺陷
由于我們無法對(duì)數(shù)據(jù)流量進(jìn)行深度的協(xié)議分析,所以該方案只能對(duì)以NAT模式接入的無線路由器進(jìn)行檢測,無法檢測出以網(wǎng)橋模式接入的無線路由器下的終端。
暫時(shí)只能檢測,無法對(duì)無線路由器和無線終端進(jìn)行技術(shù)上的管控。
必須收集廠商的無線MAC地址分配表才能進(jìn)行準(zhǔn)確檢測。對(duì)于TP-Link,D-Link等專業(yè)無線設(shè)備廠商,收集其MAC地址分配表相對(duì)簡單,但是對(duì)于其他一些綜合設(shè)備廠商,則需要花費(fèi)更大的精力去收集。
上述兩種方案各有優(yōu)劣,方案一較為成熟,更加側(cè)重于從技術(shù)上進(jìn)行控制,很多廠商已經(jīng)推出了一整套無線管控解決方案,IT預(yù)算充足的企業(yè)可以考慮。方案二更加側(cè)重于從管理上對(duì)用戶進(jìn)行引導(dǎo),更加靈活,而且不需要任何投資,掃描程序也很容易移植,自身管理和技術(shù)能力較強(qiáng)的企業(yè)可以參考。