學術部專家團隊 供搞
ARP協議是建立在信任局域網內所有結點的基礎上的,它很高效,但卻不安全。它是無狀態的協議,不會檢查自己是否發過請求包,也不管(其實也不知道)是否是合法的應答,只要收到目標MAC是自己的ARP reply包或arp廣播包(包括ARP request和ARP reply),都會接受并緩存。
一、ARP協議工作原理
在TCP/IP協議中,每一個網絡結點是用IP地址標識的,IP地址是一個邏輯地址。而在以太網中數據包是靠48位MAC地址(物理地址)尋址的。因此,必須建立IP地址與MAC地址之間的對應(映射)關系,ARP協議就是為完成這個工作而設計的。
TCP/IP協議棧維護著一個ARP cache表,在構造網絡數據包時,首先從ARP表中找目標IP對應的MAC地址,如果找不到,就發一個ARP request廣播包,請求具有該IP地址的主機報告它的MAC地址,當收到目標IP所有者的ARP reply后,更新RP cache.ARP cache有老化機制。
二、ARP協議的缺陷
ARP協議是建立在信任局域網內所有結點的基礎上的,它很高效,但卻不安全。它是無狀態的協議,不會檢查自己是否發過請求包,也不管(其實也不知道)是否是合法的應答,只要收到目標MAC是自己的ARP reply包或arp廣播包(包括ARP request和ARP reply),都會接受并緩存。這就為ARP欺騙提供了可能,惡意節點可以發布虛假的ARP報文從而影響網內結點的通信,甚至可以做“中間人”。
三、常見ARP欺騙形式
1、假冒ARP reply包(單播)
XXX,I have IP YYY and my MAC is ZZZ!
2、假冒ARP reply包(廣播)
Hello everyone! I have IP YYY and my MAC is ZZZ!
向所有人散布虛假的IP/MAC
3、假冒ARP request(廣播)
I have IP XXX and my MAC is YYY.
Who has IP ZZZ? tell me please!
表面為找IP ZZZ的MAC,實際是廣播虛假的IP、MAC映射(XXX,YYY)
4、假冒ARP request(單播)
已知IP ZZZ的MAC
Hello IP ZZZ! I have IP XXX and my MAC is YYY.
5、假冒中間人
欺騙主機(MAC為MMM)上啟用包轉發
向主機AAA發假冒ARP Reply:
AAA,I have IP BBB and my MAC is MMM,
向主機BBB發假冒ARP Reply:
BBB,I have IP AAA and my MAC is MMM
由于ARP Cache的老化機制,有時還需要做周期性連續欺騙。
四、ARP欺騙的防范
1、運營商可采用Super VLAN或PVLAN技術
所謂Super VLAN也叫VLAN聚合,這種技術在同一個子網中化出多個Sub VLAN,而將整個IP子網指定為一個VLAN聚合(Super VLAN),所有的Sub VLAN都使用Super VLAN的默認網關IP地址,不同的Sub VLAN仍保留各自獨立的廣播域。子網中的所有主機只能與自己的默認網關通信。如果將交換機或IP DSLAM設備的每個端口化為一個Sub VLAN,則實現了所有端口的隔離,也就避免了ARP欺騙。
PVLAN即私有VLAN(Private VLAN) ,PVLAN采用兩層VLAN隔離技術,只有上層VLAN全局可見,下層VLAN相互隔離。如果將交換機或IP DSLAM設備的每個端口化為一個(下層)VLAN,則實現了所有端口的隔離。
PVLAN和SuperVLAN技術都可以實現端口隔離,但實現方式、出發點不同。PVLAN是為了節省VLAN,而SuperVlan的初衷是節省IP地址。
2、單位局域網可采用IP與MAC綁定
在PC上IP+MAC綁,網絡設備上IP+MAC+端口綁。但不幸的是Win 98/me、未打arp補丁的win 2000/xp sp1(現在大多都已經打過了)等系統 使用arp -s所設置的靜態ARP項還是會被ARP欺騙所改變。
如果網絡設備上只做IP+MAC綁定,其實也是不安全的,假如同一二層下的某臺機器發偽造的arp reply(源ip和源mac都填欲攻擊的那臺機子的)給網關,還是會造成網關把流量送到欺騙者所連的那個(物理)端口從而造成網絡不通。
對于采用了大量傻瓜交換機的局域網,用戶自己可以采取支持arp過濾的防火墻等方法。推薦Look ‘n’Stop防火墻,支持arp協議規則自定義。
最后就是使用ARPGuard啦(才拉到正題上),但它只是保護主機和網關間的通訊。
五、ARPGuard的原理
ARPGuard可以保護主機和網關的通訊不受ARP欺騙的影響。
1、第一次運行(或檢測到網關IP改變)時獲取網關對應的MAC地址,將網卡信息、網關IP、網關MAC等信息保存到配置文件中,其他時候直接使用配置文件。
2、移去原默認路由(當前網卡的)
3、產生一個隨機IP,將它添加成默認網關。
4、默認網關IP 和網關的MAC綁定(使用DeleteIpNetEntry和CreateIpNetEntry修改ARP Cache表項)
5、周期性檢測ARP Cache中原默認網關(不是隨機IP那個) 網關的MAC在ARP Cache的值是否被改寫,若被改寫就報警。
6、針對有些攻擊程序只給網關設備(如路由器或三層交換機)發欺騙包的情況。由于此時本機ARP Cache中網關MAC并未被改變,因此只有主動防護,即默認每秒發10個ARP reply包來維持網關設備的ARP Cache(可選)
7、程序結束時恢復默認網關和路由。
值得說明的是程序中限定了發包間隔不低于100ms,主要是怕過量的包對網絡設備造成負擔。如果你遭受的攻擊太猛烈,你也可以去掉這個限制,設定一個更小的數值,保證你的通訊正常。