ARP協(xié)議概述
ARP協(xié)議是“Address Resolution Protocol”(地址解析協(xié)議)的縮寫。 在局域網(wǎng)中, 網(wǎng)絡(luò)中實(shí)際傳輸?shù)氖?ldquo;幀”, 幀里面是有目標(biāo)主機(jī)的MAC地址的。 在以太網(wǎng)中, 一個(gè)主機(jī)要和另一個(gè)主機(jī)進(jìn)行直接通信, 必須要知道目標(biāo)主機(jī)的MAC地址。 但這個(gè)目標(biāo)MAC地址是如何獲得的呢?它就是通過(guò)地址解析協(xié)議獲得的。 所謂“地址解析”就是主機(jī)在發(fā)送幀前將目標(biāo)IP地址轉(zhuǎn)換成目標(biāo)MAC地址的過(guò)程。 ARP協(xié)議的基本功能就是通過(guò)目標(biāo)設(shè)備的IP地址, 查詢目標(biāo)設(shè)備的MAC地址, 以保證通信的順利進(jìn)行。
ARP工作時(shí), 送出一個(gè)含有所希望的IP地址的以太網(wǎng)廣播數(shù)據(jù)包。 目的地主機(jī), 或另一個(gè)代表該主機(jī)的系統(tǒng), 以一個(gè)含有IP和以太網(wǎng)地址對(duì)的數(shù)據(jù)包作為應(yīng)答。 發(fā)送者將這個(gè)地址對(duì)高速緩存起來(lái), 以節(jié)約不必要的ARP通信。
如果有一個(gè)不被信任的節(jié)點(diǎn)對(duì)本地網(wǎng)絡(luò)具有寫訪問(wèn)許可權(quán), 那么也會(huì)有某種風(fēng)險(xiǎn)。 這樣一臺(tái)機(jī)器可以發(fā)布虛假的ARP報(bào)文并將所有通信都轉(zhuǎn)向它自己, 然后它就可以扮演某些機(jī)器, 或者順便對(duì)數(shù)據(jù)流進(jìn)行簡(jiǎn)單的修改。 ARP機(jī)制常常是自動(dòng)起作用的。 在特別安全的網(wǎng)絡(luò)上, ARP映射可以用固件, 并且具有自動(dòng)抑制協(xié)議達(dá)到防止干擾的目的。
圖1 以太網(wǎng)上的ARP報(bào)文格式
圖1是一個(gè)用作IP到以太網(wǎng)地址轉(zhuǎn)換的ARP報(bào)文的例子。 在圖中每一行為32位, 也就是4個(gè)八位組表示。
硬件類型字段指明了發(fā)送方想知道的硬件接口類型, 以太網(wǎng)的值為1。 協(xié)議類型字段指明了發(fā)送方提供的高層協(xié)議類型, IP為0806(16進(jìn)制)。 硬件地址長(zhǎng)度和協(xié)議長(zhǎng)度指明了硬件地址和高層協(xié)議地址的長(zhǎng)度, 這樣ARP報(bào)文就可以在任意硬件和任意協(xié)議的網(wǎng)絡(luò)中使用。 操作字段用來(lái)表示這個(gè)報(bào)文的目的, ARP請(qǐng)求為1, ARP響應(yīng)為2, RARP請(qǐng)求為3, RARP響應(yīng)為4。
當(dāng)發(fā)出ARP請(qǐng)求時(shí), 發(fā)送方填好發(fā)送方首部和發(fā)送方IP地址, 還要填寫目標(biāo)IP地址。 當(dāng)目標(biāo)機(jī)器收到這個(gè)ARP廣播包時(shí), 就會(huì)在響應(yīng)報(bào)文中填上自己的48位主機(jī)地址。
我們先看一下windows 2000下的arp命令(如果開(kāi)始arp表中的內(nèi)容為空的話,需要先對(duì)某臺(tái)主機(jī)進(jìn)行一個(gè)連接,例如ping一下目標(biāo)主機(jī)來(lái)產(chǎn)生一個(gè)arp項(xiàng)):
用"arp --a"命令可以顯示主機(jī)地址與IP地址的對(duì)應(yīng)表, 也就是機(jī)器中所保存的arp緩存信息。 這個(gè)高速緩存存放了最近Internet地址到硬件地址之間的映射記錄。 高速緩存中每一項(xiàng)的生存時(shí)間一般為20分鐘, 起始時(shí)間從被創(chuàng)建時(shí)開(kāi)始算起。
在執(zhí)行上面一條ping命令的同時(shí), 進(jìn)行監(jiān)聽(tīng):
我們將會(huì)聽(tīng)到很多包, 我們?nèi)∨c我們arp協(xié)議相關(guān)的2個(gè)包:
ARP欺騙
我們先復(fù)習(xí)一下上面所講的ARP協(xié)議的原理。 在實(shí)現(xiàn)TCP/IP協(xié)議的網(wǎng)絡(luò)環(huán)境下, 一個(gè)ip包走到哪里, 要怎么走是靠路由表定義, 但是, 當(dāng)ip包到達(dá)該網(wǎng)絡(luò)后, 哪臺(tái)機(jī)器響應(yīng)這個(gè)ip包卻是靠該ip包中所包含的硬件mac地址來(lái)識(shí)別。 也就是說(shuō), 只有機(jī)器的硬件mac地址和該ip包中的硬件mac地址相同的機(jī)器才會(huì)應(yīng)答這個(gè)ip包, 因?yàn)樵诰W(wǎng)絡(luò)中, 每一臺(tái)主機(jī)都會(huì)有發(fā)送ip包的時(shí)候, 所以, 在每臺(tái)主機(jī)的內(nèi)存中, 都有一個(gè) arp--> 硬件mac 的轉(zhuǎn)換表。 通常是動(dòng)態(tài)的轉(zhuǎn)換表(該arp表可以手工添加靜態(tài)條目)。 也就是說(shuō), 該對(duì)應(yīng)表會(huì)被主機(jī)在一定的時(shí)間間隔后刷新。 這個(gè)時(shí)間間隔就是ARP高速緩存的超時(shí)時(shí)間。
通常主機(jī)在發(fā)送一個(gè)ip包之前, 它要到該轉(zhuǎn)換表中尋找和ip包對(duì)應(yīng)的硬件mac地址, 如果沒(méi)有找到, 該主機(jī)就發(fā)送一個(gè)ARP廣播包, 于是, 主機(jī)刷新自己的ARP緩存。 然后發(fā)出該ip包。
了解這些常識(shí)后, 現(xiàn)在就可以談在以太網(wǎng)絡(luò)中如何實(shí)現(xiàn)ARP欺騙了, 可以看看這樣一個(gè)例子。
同一網(wǎng)段的ARP欺騙
同一網(wǎng)段的ARP欺騙
圖2 同一網(wǎng)段的arp欺騙
如圖2所示, 三臺(tái)主機(jī)
A: ip地址 192.168.0.1 硬件地址 AA:AA:AA:AA:AA:AA
B: ip地址 192.168.0.2 硬件地址 BB:BB:BB:BB:BB:BB
C: ip地址 192.168.0.3 硬件地址 CC:CC:CC:CC:CC:CC
一個(gè)位于主機(jī)B的入侵者想非法進(jìn)入主機(jī)A, 可是這臺(tái)主機(jī)上安裝有_blank">防火墻。 通過(guò)收集資料他知道這臺(tái)主機(jī)A的_blank">防火墻只對(duì)主機(jī)C有信任關(guān)系(開(kāi)放23端口(telnet))。 而他必須要使用telnet來(lái)進(jìn)入主機(jī)A, 這個(gè)時(shí)候他應(yīng)該如何處理呢?
我們這樣考慮, 入侵者必須讓主機(jī)A相信主機(jī)B就是主機(jī)C, 如果主機(jī)A和主機(jī)C之間的信任關(guān)系是建立在ip地址之上的。 如果單單把主機(jī)B的ip地址改的和主機(jī)C的一樣, 那是不能工作的, 至少不能可靠地工作。 如果你告訴以太網(wǎng)卡設(shè)備驅(qū)動(dòng)程序, 自己IP是192.168.0.3, 那么這只是一種純粹的競(jìng)爭(zhēng)關(guān)系, 并不能達(dá)到目標(biāo)。 我們可以先研究C這臺(tái)機(jī)器如果我們能讓這臺(tái)機(jī)器暫時(shí)當(dāng)?shù)簦?競(jìng)爭(zhēng)關(guān)系就可以解除,這個(gè)還是有可能實(shí)現(xiàn)的。 在機(jī)器C當(dāng)?shù)舻耐瑫r(shí), 將機(jī)器B的ip地址改為192.168.0.3,這樣就可以成功的通過(guò)23端口telnet到機(jī)器A上面, 而成功的繞過(guò)_blank">防火墻的限制。
上面的這種想法在下面的情況下是沒(méi)有作用的, 如果主機(jī)A和主機(jī)C之間的信任關(guān)系是建立在硬件地址的基礎(chǔ)上。 這個(gè)時(shí)候還需要用ARP欺騙的手段讓主機(jī)A把自己的ARP緩存中的關(guān)于192.168.0.3映射的硬件地址改為主機(jī)B的硬件地址。
我們可以人為的制造一個(gè)arp_reply的響應(yīng)包,發(fā)送給想要欺騙的主機(jī),這是可以實(shí)現(xiàn)的,因?yàn)閰f(xié)議并沒(méi)有規(guī)定必須在接收到arp_echo后才可以發(fā)送響應(yīng)包.這樣的工具很多,我們也可以直接用snifferpro抓一個(gè)arp響應(yīng)包,然后進(jìn)行修改。
你可以人為地制造這個(gè)包。 可以指定ARP包中的源IP、目標(biāo)IP、源MAC地址、目標(biāo)MAC地址。
這樣你就可以通過(guò)虛假的ARP響應(yīng)包來(lái)修改主機(jī)A上的動(dòng)態(tài)ARP緩存達(dá)到欺騙的目的。
下面是具體的步驟:
1. 他先研究192.0.0.3這臺(tái)主機(jī), 發(fā)現(xiàn)這臺(tái)主機(jī)的漏洞。
2. 根據(jù)發(fā)現(xiàn)的漏洞使主機(jī)C當(dāng)?shù)簦?暫時(shí)停止工作。
3. 這段時(shí)間里, 入侵者把自己的ip改成192.0.0.3
4. 他用工具發(fā)一個(gè)源ip地址為192.168.0.3源MAC地址為BB:BB:BB:BB:BB:BB的包給主機(jī)A, 要求主機(jī)A更新自己的arp轉(zhuǎn)換表。
5. 主機(jī)更新了arp表中關(guān)于主機(jī)C的ip-->mac對(duì)應(yīng)關(guān)系。
6. _blank">防火墻失效了, 入侵的ip變成合法的mac地址, 可以telnet 了。
上面就是一個(gè)ARP的欺騙過(guò)程, 這是在同網(wǎng)段發(fā)生的情況, 但是, 提醒注意的是, 在B和C處于不同網(wǎng)段的時(shí)候, 上面的方法是不起作用的。
不同網(wǎng)段的ARP欺騙
不同網(wǎng)段的ARP欺騙
圖3 不同網(wǎng)段之間的ARP欺騙
如圖3所示A、C位于同一網(wǎng)段而主機(jī)B位于另一網(wǎng)段, 三臺(tái)機(jī)器的ip地址和硬件地址如下:
A: ip地址 192.168.0.1 硬件地址 AA:AA:AA:AA:AA:AA
B: ip地址 192.168.1.2 硬件地址 BB:BB:BB:BB:BB:BB
C: ip地址 192.168.0.3 硬件地址 CC:CC:CC:CC:CC:CC
在現(xiàn)在的情況下, 位于192.168.1網(wǎng)段的主機(jī)B如何冒充主機(jī)C欺騙主機(jī)A呢?顯然用上面的辦法的話, 即使欺騙成功, 那么由主機(jī)B和主機(jī)A之間也無(wú)法建立telnet會(huì)話, 因?yàn)槁酚善鞑粫?huì)把主機(jī)A發(fā)給主機(jī)B的包向外轉(zhuǎn)發(fā), 路由器會(huì)發(fā)現(xiàn)地址在192.168.0.這個(gè)網(wǎng)段之內(nèi)。
現(xiàn)在就涉及到另外一種欺騙方式―ICMP重定向。 把ARP欺騙和ICMP重定向結(jié)合在一起就可以基本實(shí)現(xiàn)跨網(wǎng)段欺騙的目的。
什么是ICMP重定向呢?
ICMP重定向報(bào)文是ICMP控制報(bào)文中的一種。 在特定的情況下, 當(dāng)路由器檢測(cè)到一臺(tái)機(jī)器使用非優(yōu)化路由的時(shí)候, 它會(huì)向該主機(jī)發(fā)送一個(gè)ICMP重定向報(bào)文, 請(qǐng)求主機(jī)改變路由。 路由器也會(huì)把初始數(shù)據(jù)報(bào)向它的目的地轉(zhuǎn)發(fā)。 我們可以利用ICMP重定向報(bào)文達(dá)到欺騙的目的。
下面是結(jié)合ARP欺騙和ICMP重定向進(jìn)行攻擊的步驟:
1. 為了使自己發(fā)出的非法ip包能在網(wǎng)絡(luò)上能夠存活長(zhǎng)久一點(diǎn), 開(kāi)始修改ip包的生存時(shí)間ttl為下面的過(guò)程中可能帶來(lái)的問(wèn)題做準(zhǔn)備。 把ttl改成255. (ttl定義一個(gè)ip包如果在網(wǎng)絡(luò)上到不了主機(jī)后, 在網(wǎng)絡(luò)上能存活的時(shí)間, 改長(zhǎng)一點(diǎn)在本例中有利于做充足的廣播)
2. 下載一個(gè)可以自由制作各種包的工具(例如hping2)
3. 然后和上面一樣, 尋找主機(jī)C的漏洞按照這個(gè)漏洞當(dāng)?shù)糁鳈C(jī)C。
4. 在該網(wǎng)絡(luò)的主機(jī)找不到原來(lái)的192.0.0.3后, 將更新自己的ARP對(duì)應(yīng)表。 于是他發(fā)送一個(gè)原ip地址為192.168.0.3硬件地址為BB:BB:BB:BB:BB:BB的ARP響應(yīng)包。
5. 好了, 現(xiàn)在每臺(tái)主機(jī)都知道了, 一個(gè)新的MAC地址對(duì)應(yīng)192.0.0.3,一個(gè)ARP欺騙完成了, 但是, 每臺(tái)主機(jī)都只會(huì)在局域網(wǎng)中找這個(gè)地址而根本就不會(huì)把發(fā)送給192.0.0.3的ip包丟給路由。 于是他還得構(gòu)造一個(gè)ICMP的重定向廣播。
6. 自己定制一個(gè)ICMP重定向包告訴網(wǎng)絡(luò)中的主機(jī):"到192.0.0.3的路由最短路徑不是局域網(wǎng), 而是路由, 請(qǐng)主機(jī)重定向你們的路由路徑, 把所有到192.0.0.3的ip包丟給路由。 "
7. 主機(jī)A接受這個(gè)合理的ICMP重定向, 于是修改自己的路由路徑, 把對(duì)192.0.0.3的通訊都丟給路由器。
8. 入侵者終于可以在路由外收到來(lái)自路由內(nèi)的主機(jī)的ip包了, 他可以開(kāi)始telnet到主機(jī)的23口。
其實(shí)上面的想法只是一種理想話的情況, 主機(jī)許可接收的ICMP重定向包其實(shí)有很多的限制條件, 這些條件使ICMP重定向變的非常困難。
TCP/IP協(xié)議實(shí)現(xiàn)中關(guān)于主機(jī)接收ICMP重定向報(bào)文主要有下面幾條限制:
1. 新路由必須是直達(dá)的
2. 重定向包必須來(lái)自去往目標(biāo)的當(dāng)前路由
3. 重定向包不能通知主機(jī)用自己做路由
4. 被改變的路由必須是一條間接路由
由于有這些限制, 所以ICMP欺騙實(shí)際上很難實(shí)現(xiàn)。 但是我們也可以主動(dòng)的根據(jù)上面的思維尋找一些其他的方法。 更為重要的是我們知道了這些欺騙方法的危害性, 我們就可以采取相應(yīng)的防御辦法。
ARP欺騙的防御
知道了ARP欺騙的方法和危害, 我們給出一些初步的防御方法:
1. 不要把你的網(wǎng)絡(luò)安全信任關(guān)系建立在ip地址的基礎(chǔ)上或硬件mac地址基礎(chǔ)上, (rarp同樣存在欺騙的問(wèn)題), 理想的關(guān)系應(yīng)該建立在ip+mac基礎(chǔ)上。
2. 設(shè)置靜態(tài)的mac-->ip對(duì)應(yīng)表, 不要讓主機(jī)刷新你設(shè)定好的轉(zhuǎn)換表。
3. 除非很有必要, 否則停止使用ARP, 將ARP做為永久條目保存在對(duì)應(yīng)表中。 在linux下可以用ifconfig -arp可以使網(wǎng)卡驅(qū)動(dòng)程序停止使用ARP。
4. 使用代理網(wǎng)關(guān)發(fā)送外出的通訊。
5. 修改系統(tǒng)拒收ICMP重定向報(bào)文在linux下可以通過(guò)在_blank">防火墻上拒絕ICMP重定向報(bào)文或者是修改內(nèi)核選項(xiàng)重新編譯內(nèi)核來(lái)拒絕接收ICMP重定向報(bào)文。 在win2000下可以通過(guò)_blank">防火墻和IP策略拒絕接收ICMP報(bào)文。
代理ARP的應(yīng)用
代理ARP有兩大應(yīng)用,一個(gè)是有利的就是我們?cè)赺blank">防火墻實(shí)現(xiàn)中常說(shuō)的透明模式的實(shí)現(xiàn),另一個(gè)是有害的就是通過(guò)它可以達(dá)到在交換環(huán)境中進(jìn)行嗅探的目的.由此可見(jiàn)同樣一種技術(shù)被應(yīng)用于不同的目的,效果是不一樣的.
我們先來(lái)看交換環(huán)境中局域網(wǎng)的嗅探.
通常在局域網(wǎng)環(huán)境中, 我們都是通過(guò)交換環(huán)境的網(wǎng)關(guān)上網(wǎng)的。 在交換環(huán)境中使用NetXray或者NAI Sniffer一類的嗅探工具除了抓到自己的包以外, 是不能看到其他主機(jī)的網(wǎng)絡(luò)通信的。
但是我們可以通過(guò)利用ARP欺騙可以實(shí)現(xiàn)Sniffer的目的。
ARP協(xié)議是將IP地址解析為MAC地址的協(xié)議, 局域網(wǎng)中的通信都是基于MAC地址的。
圖4 交換網(wǎng)絡(luò)中的ARP欺騙
如圖4所示, 三臺(tái)主機(jī)位于一個(gè)交換網(wǎng)絡(luò)的環(huán)境中, 其中A是網(wǎng)關(guān):
A: ip地址 192.168.0.1 硬件地址 AA:AA:AA:AA:AA
B: ip地址 192.168.0.2 硬件地址 BB:BB:BB:BB:BB
C:ip地址 192.168.0.3 硬件地址 CC:CC:CC:CC:CC
在局域網(wǎng)中192.168.0.2和192.168.0.3都是通過(guò)網(wǎng)關(guān)192.168.0.1上網(wǎng)的, 假定攻擊者的系統(tǒng)為192.168.0.2, 他希望聽(tīng)到192.168.0.3的通信, 那么我們就可以利用ARP欺騙實(shí)現(xiàn)。
這種欺騙的中心原則就是arp代理的應(yīng)用.主機(jī)A是局域網(wǎng)中的代理服務(wù)器,局域網(wǎng)中每個(gè)節(jié)點(diǎn)的向外的通信都要通過(guò)它.主機(jī)B想要聽(tīng)主機(jī)C的通信,它需要先使用ARP欺騙,讓主機(jī)C認(rèn)為它就是主機(jī)A,這個(gè)時(shí)候它發(fā)一個(gè)IP地址為192.168.0.1,物理地址為BB:BB:BB:BB:BB:BB的ARP響應(yīng)包給主機(jī)C,這樣主機(jī)C會(huì)把發(fā)往主機(jī)A的包發(fā)往主機(jī)B.同理,還要讓網(wǎng)關(guān)A相信它就是主機(jī)C,向網(wǎng)關(guān)A發(fā)送一個(gè)IP地址為192.168.0.3,物理地址為BB:BB:BB:BB:BB:BB的包。
上面這一步的操作和前面的ARP欺騙的原理是一樣的,但是還是有問(wèn)題,過(guò)一段時(shí)間主機(jī)B會(huì)發(fā)現(xiàn)自己無(wú)法上網(wǎng).所以下面還有一個(gè)步驟就是需要在主機(jī)B上轉(zhuǎn)發(fā)從主機(jī)A到主機(jī)C的包,并且轉(zhuǎn)發(fā)從主機(jī)C到主機(jī)A的包.現(xiàn)在我們可以看到其實(shí)主機(jī)B在主機(jī)A和主機(jī)C的通訊中起到了一個(gè)代理的作用,這就是為什么叫做ARP代理的原因。
具體實(shí)現(xiàn)要用到兩個(gè)工具dsniff和fragrouter,dsniff用來(lái)實(shí)現(xiàn)ARP欺騙,fragroute用來(lái)進(jìn)行包的轉(zhuǎn)發(fā)。
首先利用dsniff中的arpspoof來(lái)實(shí)現(xiàn)ARP欺騙,dsniff軟件可以在下面的網(wǎng)址下載:
http://naughty.monkey.org/~dugsong/dsniff
安裝這個(gè)軟件包之前先要下載安裝libnet。
欺騙192.168.0.3, 告訴這臺(tái)機(jī)器網(wǎng)關(guān)192.168.0.1的MAC地址是192.168.0.2的MAC地址.
[root@sound dsniff-2.3]# ./arpspoof -i eth0 -t 192.168.0.3 192.168.0.1
欺騙192.168.0.1, 告訴192.168.0.1主機(jī)192.168.0.3的MAC地址是192.168.0.2的MAC地址。
[root@sound dsniff-2.3]# ./arpspoof -i eth0 -t 192.168.0.1 192.168.0.3
現(xiàn)在我們已經(jīng)完成了第一步的欺騙,這個(gè)欺騙是通過(guò)arpspoof來(lái)完成的,當(dāng)然您也可以使用別的工具甚至自己發(fā)包來(lái)完成.現(xiàn)在我們可以看到在主機(jī)A和主機(jī)C的arp列表里面都完成了我們需要的工作.在后面的透明代理中我們將使用另外一種不同的理念。
下面我們先打開(kāi)linux系統(tǒng)中的轉(zhuǎn)發(fā)包的選項(xiàng):
[root@sound /root]# echo "1" >/proc/sys/net/ipv4/ip_forward
下面我們可以下載大名鼎鼎的dugsong的另外一個(gè)工具fragroute,這個(gè)工具以前叫做fragrouter(僅有1字的差別)主要用于實(shí)現(xiàn)入侵檢測(cè)系統(tǒng)處理分片的ip和tcp包功能的檢測(cè),本身自代包轉(zhuǎn)發(fā)的功能.可以到下面的網(wǎng)站下載:
http://monkey.org/~dugsong/fragroute/
安裝這個(gè)軟件包之前先要下載安裝libpcap和libevent.
當(dāng)然我們也可以使用fragrouter來(lái)完成:
http://www.packetstormsecurity.o ... ectools/fragrouter/
[root@sound fragrouter-1.6]# ./fragrouter -B1
fragrouter: base-1: normal IP forwarding
現(xiàn)在就可以實(shí)現(xiàn)在交換局域網(wǎng)中嗅探的目標(biāo).當(dāng)然上面這些只是一些原理性的介紹,在真正的使用中會(huì)遇到很多的問(wèn)題,比如如何實(shí)現(xiàn)對(duì)網(wǎng)關(guān)A和主機(jī)C的欺騙,以及如何處理可能出現(xiàn)的廣播風(fēng)暴問(wèn)題,這些可以在實(shí)踐中學(xué)習(xí).還有一個(gè)叫arpsniff的工具能夠很方便的完成這一功能,很多網(wǎng)站都提供下載,界面比較友好,由于和上面的原理一樣,只是工具使用上的不同并且添加了一些附加的功能,所以這里不在進(jìn)行介紹。
代理ARP的另外一個(gè)應(yīng)用就是_blank">防火墻的透明代理的實(shí)現(xiàn).我們都知道早期的_blank">防火墻大都是基于路由模式,也就是_blank">防火墻要完成一個(gè)路由的作用.這種接入方式需要在局域網(wǎng)內(nèi)的主機(jī)上設(shè)置_blank">防火墻的IP為代理,而且需要在外部路由器的路由表中加入一條指向_blank">防火墻的路由.這種方式的缺點(diǎn)在于不透明,需要進(jìn)行過(guò)多的設(shè)置,并且破壞了原有的網(wǎng)絡(luò)拓?fù)?所以現(xiàn)在幾乎全部的_blank">防火墻都實(shí)現(xiàn)了一種透明接入的功能,用戶的路由器和客戶端不用做任何修改,用戶甚至感覺(jué)不到透明接入方式_blank">防火墻的存在.這種透明接入的原理就是ARP代理。
我們現(xiàn)在看如何配置一臺(tái)主機(jī)作為透明接入模式的_blank">防火墻(透明接入的_blank">防火墻不需要IP):
圖5
如圖5所示,一臺(tái)_blank">防火墻連接內(nèi)部網(wǎng)段和DMZ網(wǎng)段到外部路由.我們?cè)谶@臺(tái)用作_blank">防火墻的主機(jī)上使用linux操作系統(tǒng),這樣我們可以方便的使用iptables_blank">防火墻.假設(shè)三塊網(wǎng)卡為eth0,eth1和eth2,eth0和路由器相連,eth1和內(nèi)網(wǎng)相連.eth2和外網(wǎng)相連.假設(shè)DMZ區(qū)有2臺(tái)服務(wù)器.
內(nèi)網(wǎng)地址:192.168.1.0/24
DMZ地址:192.168.1.2---192.168.1.3
路由器的ip地址:192.168.1.1
eth0:AA:AA:AA:AA:AA:AA
eth1:BB:BB:BB:BB:BB:BB
eth2:CC:CC:CC:CC:CC:CC
和前面差不多,第一步需要實(shí)現(xiàn)ARP欺騙,這次我們有個(gè)簡(jiǎn)單的實(shí)現(xiàn).我們把路由器的IP地址和_blank">防火墻的eth1和eth2的網(wǎng)卡物理地址綁定,將內(nèi)網(wǎng)和DMZ網(wǎng)段的IP地址和eth0的網(wǎng)卡綁定,在linux系統(tǒng)上我們用arp命令實(shí)現(xiàn):
arp -s 192.168.1.1 BB:BB:BB:BB:BB:BB
arp -s 192.168.1.1 CC:CC:CC:CC:CC:CC
arp -s 192.168.1.0/24 AA:AA:AA:AA:AA:AA
第二步我們需要在基于linux的_blank">防火墻上設(shè)置路由,把目標(biāo)地址是外部路由的包轉(zhuǎn)發(fā)到eth0,把目標(biāo)地址為內(nèi)網(wǎng)的包轉(zhuǎn)發(fā)到eth1,把目標(biāo)地址是DMZ網(wǎng)段服務(wù)器的包轉(zhuǎn)發(fā)到eth2.在linux下面用route命令實(shí)現(xiàn)
route add 192.168.1.1 dev eth0
ROUTE ADD -NET 192.168.1.0/24 DEV ETH1
route add 192.168.1.2 dev eth2
route add 192.168.1.3 dev eth3
(針對(duì)DMZ網(wǎng)段里面的每臺(tái)服務(wù)器都要增加一條單獨(dú)的路由) 現(xiàn)在我們就已經(jīng)實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的arp代理的透明接入,當(dāng)然對(duì)應(yīng)于_blank">防火墻的iptables部分要另外配置,iptables的配置不在本文范疇之內(nèi)。
小結(jié)
本文介紹了ARP協(xié)議以及與其相關(guān)的安全問(wèn)題。 一個(gè)重要的安全問(wèn)題就是ARP欺騙, 我們講到了同一網(wǎng)段的ARP欺騙以及跨網(wǎng)段的ARP欺騙和ICMP重定向相結(jié)合的方法。 由于有這些安全問(wèn)題的存在, 我們給出一些最基本的解決辦法。 最后談到了利用代理ARP實(shí)現(xiàn)在交換網(wǎng)絡(luò)中嗅探和_blank">防火墻的透明接入。