1. 程式人生 > >局域網的安全與防禦

局域網的安全與防禦

dhcp監聽 端口安全 網絡安全 信息安全 楊書凡

提到安全攻擊,往往會想到攻擊來自於互聯網,而內部的局域網安全問題被忽略。在企業局域網中也存在很多安全隱患,本篇博客介紹幾種局域網內部的安全攻擊與防禦


常見的局域網攻擊

1、MAC地址擴散攻擊

我們知道,交換機在轉發數據幀時,會查詢MAC地址表中該接口對應的源MAC地址條目,如果沒有數據幀的源MAC地址,交換機將學習源MAC地址並與接口對應,添加到MAC地址表中,再根據目的MAC地址進行查找。如果目的MAC地址沒找到,就會以廣播的形式轉發數據幀。而MAC地址擴散攻擊就是利用交換機的這種特性

攻擊原理:每臺交換機的MAC地址表空間是有限的,如果某主機發送大量的偽造源MAC地址數據幀,使得交換機MAC地址表溢出。這時,交換機在接收正常的數據幀,MAC地址表將找不到對應的條目,該數據幀會被轉發,攻擊者將得到正常的通信數據,如下圖:

技術分享

使用MAC地址擴散攻擊時,有個明顯現象就是交換機CPU利用率偏高,容易被發現。使用“show processes cpu”命令可以查看設備的CPU利用率


2、ARP攻擊與欺騙

(1)ARP攻擊的原理

技術分享

● 攻擊主機制造假的ARP應答,並發送給被攻擊主機之外所有主機。ARP應答中包括攻擊主機的IP地址和虛假的MAC地址

● 攻擊主機制造假的ARP應答,並發送給被攻擊主機。ARP應答中包括攻擊主機之外所有主機的IP地址和虛假的MAC地址

只要執行上邊的一種攻擊就可以實現被攻擊主機與其他主機無法正常通信


(2)ARP欺騙的原理

技術分享

ARP欺騙不是使網絡無法正常通信,而是通過冒充網關或其他主機,從而控制流量或竊取機密信息



3、DHCP服務器欺騙與地址耗盡

(1)DHCP服務器欺騙:客戶端將自己配置為DHCP服務器分發虛假的IP地址,或直接響應DHCP請求

(2)DHCP地址耗盡:客戶端不斷地冒充新客戶機發送DHCP請求,請求服務器為自己分派IP地址,從而使服務器地址耗盡,而正常主機無法獲得IP地址


4、IP地址欺騙

客戶端使用自己配置的IP地址冒充其他客戶端或網絡管理員,對其他主機、設備、服務器等進行非法操作.0




防禦攻擊的解決方案

方案1:交換機的端口安全配置

Cisco交換機提供一種基於MAC地址控制端口訪問權限的安全特性,對MAC地址進行流量限制、設定端口允許接入的主機數量,也可以手動在端口上設置MAC地址。只有綁定的MAC地址才能轉發

端口安全是一種網絡接入的驗證,只有符合設置規則的客戶端才可以接入局域網,避免未授權的客戶端接入網絡,可實現以下功能:

● 基於MAC地址限制、允許客戶端流量

● 避免MAC地址擴散攻擊

● 避免MAC地址欺騙攻擊


(1)啟動交換機接口安全特性

在接口模式下配置命令如下:

switch(config-if)# switchport port-security

註意:啟動安全特性的接口不能是動態(Dynamic)協商模式,必須是接入(Access)或幹道(Trunk)模式


(2)配置允許訪問的網絡MAC地址

限制允許訪問網絡的最大的MAC地址數和靜態綁定MAC地址,命令如下:

switch(config-if)# switchport port-security maximum {max-addr}        //max-addr默認為1,範圍是1-8192
switch(config-if)# switchport port-security mac-address {mac-addr}      //mac-addr為靜態綁定的MAC地址,格式為X.X.X

(3)配置老化時間

默認情況下,交換機不刪除接口獲得的MAC地址,如果接口的客戶端經常變換,而舊MAC地址一直保留,可能導致新連接的客戶端無法通信。可以配置老化時間,讓交換機刪除一段時間沒有流量的MAC地址 ,配置命令如下:

switch(config-if)# switchport port-security aging time {time}      //time範圍是1-1440min,默認為0,不刪除
switch(config-if)# switchport port-security aging type {absolute | inactivity}

absolute表示老化時間到後,刪除所有MAC地址並重新學習

inactivity表示一段時間(老化時間)沒有流量,就將其MAC地址從地址表中刪除

註意:靜態綁定的MAC地址不受老化時間影響

有些工作環境要求靜態綁定的MAC地址也受老化時間影響,配置命令如下:

switch(config-if)# switchport port-security aging static


(4)配置MAC地址違規後的策略

當出現以下情況時,就出現MAC地址違規

● 最大安全數目的MAC地址表之外的一個新的MAC地址訪問該端口

● 配置在其他端口安全的MAC地址試圖訪問這個端口

當出現MAC地址違規是,有三種處理方法,配置命令如下:

switch(config-if)# switchport port-security violation {protect | restrict | shutdown}

protect將違規的MAC地址的分組丟棄,但端口處於up狀態。交換機不記錄違規分組

restrict將違規的MAC地址的分組丟棄,但端口處於up狀態。交換機記錄違規分組

shutdown端口成為err-disabled狀態,相當於關閉端口。


在出現err-disabled狀態時,默認不會自動恢復。恢復端口有兩種方法:

手動恢復:先關閉端口(shutdown),在打開端口(no shutdown)

自動恢復:設置計時器,端口進入err-disabled狀態時開始計時,計時器超過後,自動恢復。計時器配置命令如下:

switch(config)# errdisable recovery cause psecure-violation    //配置出現err-disabled狀態的原因
switch(config)# errdisable recovery interval {time}         //time為30-86400,單位為s


(5)配置端口安全的Sticky(粘連)特性

如果為每個端口配置靜態綁定,工作量非常大,用端口安全Sticky特性,動態的將交換機學習的MAC地址轉換為Sticky MAC地址,並加入運行配置中,自動形成了端口安全允許的靜態MAC地址表項。保存配置,交換機重啟將不會重新學習。配置命令如下:

switch(config)# switchport port-security mac-address  sticky

(6)查看和清除端口狀態

switch# show port-security int f0/1         //查看啟用端口安全的狀態
switch# show interfaces status err-disabled      //查看處於err-disabled狀態的端口摘要信息
switch# show port-security                 //查看端口安全的摘要信息
switch# clear port-security dynamic {address mac-addr | int f0/1}    //清除接口的MAC地址或全部端口緩存


案例:在交換機配置端口安全,命令如下:

switch(config)# int f0/1
switch(config-if)# switchport mode access
switch(config-if)# switchport access vlan 2
switch(config-if)# switchport port-security         //啟用端口安全
switch(config-if)# switchport port-security mac-address 0025.1234.1258    //靜態綁定MAC地址                
switch(config-if)# switchport port-security aging time 1        //配置老化時間1min 
switch(config-if)# switchport port-security aging type inactivity       //配置刪除端口MAC的策略
switch(config-if)# switchport port-security violation restrict        //配置出現違規時的策略

在端口f0/1啟用端口安全,允許最大MAC地址為1,並靜態綁定MAC地址


查看啟用端口安全的狀態

switch# show port-security int f0/1
Port Security              : Enabled              //端口安全啟用
Port Status                : Secure-up            //端口狀態為up
Violation Mode             : Restrict             //出現違規MAC地址采取的策略
Aging Time                 : 1 mins               //老化時間
Aging Type                 : Inactivity           //端口MAC地址刪除策略
SecureStaticAddress Aging  : Disabled             //是否允許端口刪除靜態綁定MAC地址
Maximum MAC Addresses      : 1                    //最大MAC地址數量
Total MAC Addresses        : 1                    //端口活躍MAC地址數(包括靜態綁定MAC地址)
Configured MAC Addresses   : 1                    //靜態綁定的MAC地址數
Sticky MAC Addresses       : 0                    //粘連的MAC地址數
Last Source Address:Vlan   : 0025.1234.1258:2     //最新的源MAC地址及其所在的VLAN
Security Violation Count   : 0                    //安全違規次數



方案2:DHCP監聽

DHCP監聽(DHCP Snooping)是一種保護DHCP服務器的安全機制,可以通過過濾來著網絡中的主機或其他設備的非信任DHCP報文,以保證客戶端能夠從正確的DHCP服務器獲得IP地址,避免DHCP服務器欺騙和DHCP地址耗盡

DHCP監聽將交換機端口分為:

非信任端口:連接終端設備的端口。該端口客戶端只能發送DHCP請求報文,丟棄來著該端口的其他所有DHCP報文

信任端口:連接合法的DHCP服務器或匯集端口

技術分享

DHCP監聽還可以限制客戶端發送DHCP的請求速率,從而減緩DHCP資源耗盡攻擊。Cisco交換機支持在每個VLAN上啟用DHCP監聽


DHCP監聽的配置

(1)啟用DHCP監聽的命令如下:

switch(config)# ip dhcp snooping

設置DHCP監聽作用於哪個VLAN的命令如下:

switch(config)# ip dhcp snooping vlan number     //number為VLAN號,可以一次設多個VLAN,如2、3-5


(2)配置端口信任或非信任

啟用DHCP監聽後,默認所有端口為非信任。若要配置端口為信任,配置命令如下:

switch(config-if)# ip dhcp snooping trust


(3)配置預防DHCP耗盡攻擊

限制DHCP報文速率,減緩DHCP耗盡攻擊,在非信任端口配置以下命令:

switch(config-if)# ip dhcp snooping limit rate {rate}     //rate為報文速率,單位p/s,Cisco2960交換機1-2048p/s

還可以啟用核實MAC地址功能,避免虛假MAC地址請求IP地址,從而實現DHCP耗盡攻擊,配置命令如下:

switch(config)# ip dhcp snooping verify mac-address

當非信任端口的DHCP報文速率大於規定值,就會出現違規情況,端口將出現err-disabled狀態。和上面MAC地址違規一樣,也可以手動恢復,下面介紹下自動恢復,設置err-disabled計時器,命令如下:

switch(config)# errdisable recovery cause dhcp-rate-limit    //配置出現err-disabled狀態的原因
switch(config)# errdisable recovery interval {time}         //time為30-86400,單位為s


(4)DHCP監聽狀態查詢

switch# show ip dhcp snooping                 //查看當前DHCP監聽狀態及各端口情況
switch# show ip dhcp snooping binding          //查看當前DHCP監聽表
switch# clear ip dhcp snooping binding         //清除DHCP監聽表


案例:在交換機上啟用DHCP監聽,限制非信任端口DHCP報文速率為100p/s

技術分享

switch(config)# ip dhcp snooping                 //啟用DHCP監聽
switch(config)# ip dhcp snooping vlan 1          //監聽的VLAN 
switch(config)# int f0/21
switch(config-if)# ip dhcp snooping trust 
switch(config-if)# exit
switch(config)# int range f0/1 - 20
switch(config-if-range)# ip dhcp snooping limit rate 100
switch(config-if-range)# exit
switch(config)# int range f0/22 - 24
switch(config-if-range)# ip dhcp snooping limit rate 100
switch(config-if-range)# exit


如果上面的DHCP服務器是一臺路由器是,客戶端可能無法獲得IP地址,可以在其上面配置以下任意一臺命令:

router(config-if)# ip dhcp relay information trusted       //接收DHCP報文的接口
或者
router(config)# ip dhcp relay information trust-all        //全局模式,對所有接口生效


方案3:部署網絡版防病毒軟件

網絡版和單機版防病毒軟件最大的不同在於可以通過控制中心管理網絡中任意一臺計算機,統一殺毒、升級病毒庫等,實現全網管理。一般有服務器端和客戶端組成,具有以下特點:

(1)可以遠程安裝或卸載客戶端防病毒軟件

(2)可以禁止用戶自行卸載客戶端防病毒軟件

(3)可以全網範圍統一制定、分發、執行防病毒策略

(4)可以遠程監控客戶端系統健康狀態

(5)提供遠程報警手段,自動將病毒信息發送給網絡管理員

(6)允許客戶端自定義防病毒策略


本文出自 “楊書凡” 博客,請務必保留此出處http://yangshufan.blog.51cto.com/13004230/1972253

局域網的安全與防禦