勞翠金,秦 燊
(柳州城市職業(yè)學院 信息工程系,廣西 柳州 545000)
建立在TCP/IP 之上的局域網(wǎng)由于協(xié)議本身的脆弱性,給攻擊者留下了入侵的機會。 以太網(wǎng)中的數(shù)據(jù)傳輸信道是共享信道,如果局域網(wǎng)采用集線器連接,因為集線器接收到信號后會將信號從所有接口轉(zhuǎn)發(fā)出去,發(fā)給局域網(wǎng)中的所有主機,主機若被設(shè)為監(jiān)聽模式,即使收到的信號不是發(fā)給自己的,也會接收下來,從而達到偵聽網(wǎng)絡(luò)數(shù)據(jù),非法竊取他人賬號、密碼等信息和借此進行其他非法操作,損害他人利益的目的。如果局域網(wǎng)連接使用的不是集線器而是交換機,雖然能避免以上廣播轉(zhuǎn)發(fā)的后果,但攻擊者仍可基于ARP協(xié)議及交換機生成MAC 地址表的原理,偽造“IP 地址與MAC 地址對應(yīng)關(guān)系”,實施中間人攻擊。 另外,攻擊者還可利用局域網(wǎng)對DHCP 服務(wù)器缺少驗證機制,通過攻擊DHCP 服務(wù)器,進而將偽造的缺省網(wǎng)關(guān)和DNS服務(wù)器地址發(fā)給用戶,達到中間人攻擊和網(wǎng)絡(luò)釣魚等目的。 文章主要探討如何有針對性地加強其防御能力及相關(guān)技術(shù)手段。 涉及的安全防護措施和技術(shù)手段,均可通過運行EVE-NG 虛擬化平臺進行驗證[1]。
網(wǎng)絡(luò)管理員運用端口鏡像技術(shù),可對網(wǎng)絡(luò)流量進行監(jiān)控,將流經(jīng)交換機各端口的流量轉(zhuǎn)發(fā)到網(wǎng)絡(luò)安全管理員監(jiān)控的端口。 以Catalyst 2950 系列的交換機為例,命令“monitor session 1 source interface g0/1”指定源端口,命令“monitor session 1 destination interface g0/2”指定目的端口,源端口g0/1 的流量將會被鏡像到管理員所在的目標端口g0/2 上,由管理員進行監(jiān)控和分析。
因為攻擊者沒有交換機的管理權(quán)限,故攻擊者無法采用以上方法對局域網(wǎng)上的流量進行監(jiān)控和捕獲諸如密碼等重要信息。 但攻擊者卻可采用MAC 地址泛洪等攻擊達到該目的。 下文先探討攻擊者的做法,再給出解決方案。 這涉及交換機的工作原理及MAC 地址表。
局域網(wǎng)中的電腦互通時,源電腦先根據(jù)目標電腦的IP 地址,獲得其對應(yīng)的MAC 地址,然后,再通過源MAC 地址和目標MAC 地址進行通信。 通信需經(jīng)過中間設(shè)備交換機的中轉(zhuǎn)。 交換機查找其MAC 地址表中是否存有目標MAC 地址的條目,若有,則可找到出接口;若無,則交換機會通過廣播的方式,把這個數(shù)據(jù)幀從除了入接口之外的其他所有接口廣播出去,收到這個數(shù)據(jù)幀的電腦如果發(fā)現(xiàn)數(shù)據(jù)幀的目標MAC 地址與自己的MAC 地址不同,則會將其丟棄,如果發(fā)現(xiàn)接收到的數(shù)據(jù)幀的目標MAC 地址是自己的MAC 地址,就接收并處理該數(shù)據(jù)幀。
交換機上的MAC 地址表存有MAC 地址與接口的對應(yīng)關(guān)系,但剛開始時是空的。 當有數(shù)據(jù)幀到達交換機時,交換機會將源MAC 與交換機中的MAC 地址表中的條目進行對比,如果在MAC 地址表中找不到包含這個源MAC 地址的條目,交換機就會將這個源MAC地址與對應(yīng)的入接口作為一個新的條目,存入MAC 地址表。 以后一旦有目的MAC 地址與MAC 地址表中已有的MAC 地址一致的數(shù)據(jù)幀進入交換機,交換機就可以將其從查到的對應(yīng)接口轉(zhuǎn)發(fā)出去[2]。
然而,交換機的MAC 地址表的存儲空間畢竟是有限的,當攻擊者虛構(gòu)大量的源MAC 地址的數(shù)據(jù)幀,并發(fā)往交換機中時,交換機將會將這些虛構(gòu)的源MAC 地址記錄到自己的MAC 地址表中,最終導致交換機的MAC 地址表爆滿,使交換機無法存儲新的MAC 地址及其與相應(yīng)接口的對應(yīng)關(guān)系。 此后,如果還有新的數(shù)據(jù)流經(jīng)過交換機,因為交換機無法從MAC 地址表中查找到其相應(yīng)的目標MAC 地址,所以交換機只能像集線器一樣,將數(shù)據(jù)幀廣播出去。 包括攻擊者在內(nèi)的電腦,都會收到這些廣播信息,攻擊者通過抓包軟件,捕獲和分析這些信息。
因為交換機的MAC 地址表容量是有限的,所以攻擊者若在kali linux 上打開多個命令行窗口,同時運行macof 命令,偽造大量的源MAC 地址來占滿交接機的MAC 地址表空間,則經(jīng)由此交換機的數(shù)據(jù)的轉(zhuǎn)發(fā)只能通過廣播進行,此時通過抓包就可以捕獲到網(wǎng)絡(luò)上的所有流量了。
防御MAC 地址泛洪攻擊的常用方法,是配置交換機端口的port-security 屬性。 通過交接機端口的portsecurity 屬性可限制每個端口可連接的MAC 地址數(shù)量,還能限制相同的MAC 地址是否允許出現(xiàn)在不同的端口列表中。 對不符合port-security 屬性的違規(guī)行為,可配置為將相應(yīng)的端口關(guān)閉,也可配置為將違規(guī)幀丟棄,從而避免出現(xiàn)MAC 地址泛洪的不良影響。 進入交換機端口使用“switchport port-security”命令,可開啟交換機端口的port-security 屬性,阻止端口遭受MAC 地址的泛洪攻擊。 開啟port-security 后,一個交換機端口默認只能連接一個MAC 地址;相同的MAC 地址不允許同時出現(xiàn)在不同的端口的列表中。 如果相同的MAC地址在不同的交換機端口列表中出現(xiàn),交換機會將這種情況視為違規(guī)。 違規(guī)幀的處理方式有以下3 種[2]。
第一種違規(guī)幀的處理方式是protect,會將違規(guī)幀丟棄,而且不發(fā)送任何告警信息;第二種違規(guī)幀的處理方式是restrict,會將違規(guī)幀丟棄,同時發(fā)送告警信息;第三種違規(guī)幀的處理方式是shutdown,會將出現(xiàn)違規(guī)幀的端口關(guān)閉,將端口的狀態(tài)置為errordisable,同時,發(fā)送告警信息。 例如,通過“switchport port - security violation shutdown”命令,可將違規(guī)幀的處理方式設(shè)置為“shutdown”;通過“switchport port-security maximum 2”命令,將端口允許連接的最大MAC 地址數(shù)量設(shè)置為2 個。
配置了相關(guān)的防護命令后,若攻擊者發(fā)動攻擊,交換機會進行主動防御,此時,可在交換機上通過“show port-security interface g1/0”命令,查看交換機g1/0 接口的port-security 狀態(tài),可以看到,雖然攻擊者發(fā)起大量的偽造源MAC 地址,想占滿交換機的MAC 地址表的空間,但由于源MAC 地址數(shù)超過了2,端口因違規(guī)而被關(guān)閉,達到了防御的目的。 網(wǎng)絡(luò)管理員為了進一步追蹤攻擊者,可通過“show port-security address”命令,查看port-security 上的地址信息,從而追蹤到攻擊者并進行追責。 如果交換機的端口因遭受攻擊,進行主動防御而關(guān)閉了,當網(wǎng)絡(luò)安全管理員處理好相關(guān)問題后,需要對該端口進行恢復處理:先使用 “no switchport port-security”命令,關(guān)閉這個端口的port-security 屬性,再用“shutdown”命令關(guān)閉這個端口,最后用“no shutdown”命令啟用這個端口。
除了MAC 地址泛洪攻擊,局域網(wǎng)站的DHCP 服務(wù)器也容易受到攻擊。 正常的DHCP 服務(wù)器接收到客戶機獲取地址的請求后,會從地址池中取出IP 地址分配給客戶機,同時還會把相關(guān)的子網(wǎng)掩碼、網(wǎng)關(guān)地址、DNS服務(wù)器地址等信息,一并分配給客戶機,具體如下。
首先,客戶機向局域網(wǎng)發(fā)送DHCP Discover 廣播請求,向DHCP 服務(wù)器申請IP 地址、子網(wǎng)掩碼、缺省網(wǎng)關(guān)、DNS 服務(wù)器等信息。
如果局域網(wǎng)中存在多臺DHCP 服務(wù)器,每臺服務(wù)器都會從自身地址池的可用IP 地址中取出一個,連同相關(guān)的子網(wǎng)掩碼、網(wǎng)關(guān)地址、DNS 服務(wù)器地址,回應(yīng)給客戶機。 客戶機收到DHCP 服務(wù)器的回應(yīng)后,選擇其中一個服務(wù)器分配的地址等信息,并作出響應(yīng)。 沒有被客戶機接收的DHCP 服務(wù)器會把打算分配出去的IP地址回收到地址池中;被客戶機接收的DHCP 服務(wù)器則返回確認信息給客戶機,客戶機最終正式獲得該DHCP 服務(wù)器分配的IP 地址、子網(wǎng)掩碼、網(wǎng)關(guān)地址、DNS 地址等信息,進行正常的網(wǎng)絡(luò)通信。
然而,若有攻擊者通過kali 的“pig.py 網(wǎng)卡類型及編號”命令不斷地向正規(guī)DHCP 服務(wù)器申請IP 地址,則會耗盡正規(guī)DHCP 服務(wù)器地址池中的所有IP 地址,導致正規(guī)DHCP 服務(wù)器無法再為正常用戶分配地址,此時,若攻擊者啟用自己控制的惡意DHCP 服務(wù)器,就可以在給客戶機分配IP 地址的同時,給客戶機分配惡意的網(wǎng)關(guān)信息或惡意的DNS 服務(wù)器地址信息。 若客戶機獲取的是惡意網(wǎng)關(guān)地址,客戶機訪問外網(wǎng)的所有數(shù)據(jù)都會經(jīng)過攻擊者控制的惡意網(wǎng)關(guān)進行轉(zhuǎn)發(fā),攻擊者就可以把自己當作中間人,在惡意網(wǎng)關(guān)上采取抓包等方式,截獲受害客戶機訪問外網(wǎng)的所有數(shù)據(jù)流量;若客戶機獲取的是惡意DNS 的地址,受害者打算訪問正規(guī)網(wǎng)站時,卻被惡意DNS 服務(wù)器引導到釣魚網(wǎng)站,導致賬號、密碼等信息泄露。
針對這樣的DHCP 服務(wù)攻擊,作為網(wǎng)絡(luò)安全管理員,可采用DHCP Snooping 技術(shù)來限制交換機端口發(fā)送用于分配IP 地址的數(shù)據(jù)包,限制每秒鐘通過交換機端口的DHCP 包的數(shù)量,從而對DHCP 攻擊進行防御[3]。
(1) 設(shè)置交換機的時區(qū)和時間。 因為DHCP Snooping 技術(shù)涉及DHCP 服務(wù)器所分配IP 地址的租用時間,所以要先用命令“clock timezone”和“clock set”設(shè)置好交換機所屬的時區(qū)及當前時間。
(2)激活DHCP snooping。 先通過命令“ip dhcp snooping”在全局激活DHCP snooping,然后通過“ip dhcp snooping vlan id 號”在特定的VLAN 中進一步激活。
(3) 指定DHCP Snooping 數(shù)據(jù)庫的存放位置。DHCP 的租用時間、客戶端的MAC 地址、IP 地址、所屬vlan、所連的交換機端口等相關(guān)信息,除了可臨時存儲到交換機的內(nèi)存中,還可存儲到DHCP Snooping 數(shù)據(jù)庫中。 可使用“ip dhcp snooping database flash:/文件名”命令,指定DHCP Snooping 數(shù)據(jù)庫的存放位置。
(4)設(shè)置信任端口。 對于正規(guī)的DHCP 服務(wù)器所連接的端口,可通過命令“ip dhcp snooping trust”將其指派成信任端口。 信任端口可發(fā)送所有的DHCP 包,包括DHCP 的請求包和對外分配IP 地址的DHCP 包。
(5)對非信任端口進行DHCP 限速。 未明確指派的則為非信任端口,非信任端口只能發(fā)送DHCP Discover 和DHCP Request 這樣的DHCP 請求包,不能發(fā)送用于分配IP 地址的DHCP OFFER 和DHCP ACK包。 連接到非信任端口的惡意DHCP 服務(wù)器,是無法分配IP 地址給客戶機的。 可對非信任端口應(yīng)進行DHCP 限速,限制每秒DHCP 包的數(shù)量,命令是“ip dhcp snooping limit rate 速率值”。
進行以上配置后,若遭受針對DHCP 服務(wù)的攻擊,受攻擊的交換機端口會主動關(guān)閉,網(wǎng)絡(luò)管理員追究攻擊者的責任、進行相關(guān)處理后,需要恢復被關(guān)閉的端口,恢復的方法是:先進入該接口,然后用shutdown 命令關(guān)閉該接口,再用no shutdown 命令重新打開該接口。
若沒有配置交換機端口的port-security 屬性對MAC 地址泛洪攻擊進行防御,攻擊者可在局域網(wǎng)中實施攻擊后,通過抓包捕獲包括密碼在內(nèi)的各種信息。若沒有啟用DHCP Snooping 對DHCP 攻擊進行防御,正規(guī)服務(wù)器遭受針對DHCP 服務(wù)的攻擊后,將會耗盡地址池中的地址。 攻擊者會進一步使用偽造的DHCP服務(wù)器為客戶分配虛假的網(wǎng)關(guān)或DNS 服務(wù)器,對客戶實施中間人攻擊或釣魚網(wǎng)站攻擊等,可見局域網(wǎng)中必要防范的重要性。