1. 程式人生 > >解決linux ARP攻擊

解決linux ARP攻擊

arp攻擊

一、知識背景
1.什麽是arp
ARP,即地址解析協議,實現通過IP地址得知其物理地址。在TCP/IP網絡環境下,每個主機都分配了一個32位的IP地址,這種互聯網地址是在網際範 圍標識主機的一種邏輯地址。為了讓報文在物理網路上傳送,必須知道對方目的主機的物理地址。這樣就存在把IP地址變換成物理地址的地址轉換問題。以以太網 環境為例,為了正確地向目的主機傳送報文,必須把目的主機的32位IP地址轉換成為48位以太網的地址。這就需要在互連層有一組服務將IP地址轉換為相應 物理地址,這組協議就是ARP協議。
2、arp工作原理
在每臺安裝有TCP/IP協議的電腦裏都有一個ARP緩存表,表裏的IP地址與MAC地址是一一對應的。

技術分享

以 主機A(192.168.1.5)向主機B(192.168.1.1)發送數據為例。當發送數據時,主機A會在自己的ARP緩存表中尋找是否有目標IP地 址。如果找到了,也就知道了目標MAC地址,直接把目標MAC地址寫入幀裏面發送就可以了;如果在ARP緩存表中沒有找到目標IP地址,主機A就會在網絡 上發送一個廣播,A主機MAC地址是“主機A的MAC地址”,這表示向同一網段內的所有主機發出這樣的詢問:“我是192.168.1.5,我的硬件地址 是"主機A的MAC地址".請問IP地址為192.168.1.1的MAC地址是什麽?”網絡上其他主機並不響應ARP詢問,只有主機B接收到這個幀時, 才向主機A做出這樣的回應:“192.168.1.1的MAC地址是00-aa-00-62-c6-09”。這樣,主機A就知道了主機B的MAC地址,它 就可以向主機B發送信息了。同時A和B還同時都更新了自己的ARP緩存表(因為A在詢問的時候把自己的IP和MAC地址一起告訴了B),下次A再向主機B 或者B向A發送信息時,直接從各自的ARP緩存表裏查找就可以了。ARP緩存表采用了老化機制(即設置了生存時間TTL),在一段時間內(一般15到20 分鐘)如果表中的某一行沒有使用,就會被刪除,這樣可以大大減少ARP緩存表的長度,加快查詢速度。


3、什麽是arp攻擊
ARP攻擊就是通過偽造IP地址和MAC地址實現ARP欺騙,能夠在網絡中產生大量的ARP通信量使網絡阻塞,攻擊者只要持續不斷的發出偽造的ARP響應包就能更改目標主機ARP緩存中的IP-MAC條目,造成網絡中斷或中間人攻擊。
ARP攻擊主要是存在於局域網網絡中,局域網中若有一個人感染ARP木馬,則感染該ARP木馬的系統將會試圖通過“ARP欺騙”手段截獲所在網絡內其它計算機的通信信息,並因此造成網內其它計算機的通信故障。
RARP的工作原理:
1. 發送主機發送一個本地的RARP廣播,在此廣播包中,聲明自己的MAC地址並且請求任何收到此請求的RARP服務器分配一個IP地址;
2. 本地網段上的RARP服務器收到此請求後,檢查其RARP列表,查找該MAC地址對應的IP地址;
3. 如果存在,RARP服務器就給源主機發送一個響應數據包並將此IP地址提供給對方主機使用;
4. 如果不存在,RARP服務器對此不做任何的響應;
5. 源主機收到從RARP服務器的響應信息,就利用得到的IP地址進行通訊;如果一直沒有收到RARP服務器的響應信息,表示初始化失敗。
6.如果在第1-3中被ARP病毒攻擊,則服務器做出的反映就會被占用,源主機同樣得不到RARP服務器的響應信息,此時並不是服務器沒有響應而是服務器返回的源主機的IP被占用。

二、如何判斷是受到arp攻擊?
知道了arp攻擊是怎麽回事,就很容易判斷是否受到arp攻擊。arp是有機器偽裝成了網關的mac,所以瀏覽受害機器的arp緩存肯定可以發現一臺或者多臺機器與網關有相同的mac地址。如果真的有這種情況,就可以判斷是arp攻擊。具體:
[email protected]:~$
arp -a
? (10.91.11.58) 位於 00:14:2a:44:55:72 [ether] 在 eth0
? (10.91.11.73) 位於 00:1e:ec:77:95:9d [ether] 在 eth0
? (10.91.255.254) 位於 00:14:2a:44:55:72 [ether] 在 eth0
(或者:
[email protected]:~$ cat /proc/net/arp
IP address HW type Flags HW address Mask Device
10.91.11.58 0x1 0x2 00:14:2a:44:55:72 * eth0
10.91.11.73 0x1 0x2 00:1e:ec:77:95:9d * eth0
10.91.255.254 0x1 0x2 00:14:2a:44:55:72 * eth0

看,10.91.11.58與網關有相同的mac地址(實際是10.91.11.58對尋找10.91.255.254的mac地址的廣播進行相應,並且欺騙廣播,說10.91.255.254的mac地址是 00:14:2a:44:55:72,於是本應發給10.91.255.254的包發給了58,正常的網絡通信就受到影響了)~判斷58可能中了arp攻擊病毒~
我們看看網關的真實mac地址:
[email protected]:~$
arping 10.91.255.254
WARNING: interface is ignored: Operation not permitted
ARPING 10.91.255.254 from 10.91.11.150 eth0
Unicast reply from 10.91.255.254 [00:D0:03:C5:9B:FC] 3.525ms
Unicast reply from 10.91.255.254 [00:D0:03:C5:9B:FC] 0.878ms
Unicast reply from 10.91.255.254 [00:14:2A:44:55:72] 59.480ms
Unicast reply from 10.91.255.254 [00:14:2A:44:55:72] 59.660ms
Unicast reply from 10.91.255.254 [00:14:2A:44:55:72] 51.857ms
Unicast reply from 10.91.255.254 [00:14:2A:44:55:72] 56.920ms
Unicast reply from 10.91.255.254 [00:14:2A:44:55:72] 54.042ms
Unicast reply from 10.91.255.254 [00:14:2A:44:55:72] 55.230ms
^CSent 18 probes (1 broadcast(s))
Received 8 response(s)
看,我們受到的響應中有網關正確的響應(第一行),也有其他主機的arp欺騙響應(第三行後面都是~)

三:解決:arp綁定
1.首先,清空arp緩存。
#arp -d 網關ip

2.找到網關真實mac地址。
#arping 網關ip

3.綁定mac地址
#arp -s 網關ip 網關真實mac

如果是暫時性arp欺騙攻擊至此即可,如果網絡中常有此問題,繼續以下:
4、如下命令建立 /ect/ip-mac 文件
echo ‘網關IP地址 網關MAC地址‘ >/ect/ip-mac
通過下面的命令查看文件是否寫的正確
more /ect/ip-mac

5、arp -f /ect/ip-mac 加載靜態綁定arp記錄。

6、如果想開機自動綁定

echo ‘arp -f /ect/ip-mac‘ >> /etc/rc.d/rc.local

本文出自 “zpp” 博客,請務必保留此出處http://1439337369.blog.51cto.com/10270624/1931429

解決linux ARP攻擊