決定使用ARP綁定后,接下來就要考慮ARP的實現(xiàn)方法。ARP(Address Resolution Protocol)協(xié)議是用來向?qū)Ψ降挠嬎銠C、網(wǎng)絡(luò)設(shè)備通知自己IP對應(yīng)的MAC地址的。如果所有非法用戶都被賦予了錯誤的MAC地址,那么他們是無法通過這臺服務(wù)器上網(wǎng)的。因此,ARP綁定要求必須將所有可能的IP地址全部與MAC地址綁定,才能夠杜絕非法用戶(當(dāng)然,用戶修改MAC地址除外)。
經(jīng)過一番思索,確定了初步的構(gòu)思。首先,用Linux Shell的循環(huán)方法生成一張包含從10.0.0.1到10.0.3.254的無效MAC地址匹配表,稱之為全局表。然后根據(jù)DHCP服務(wù)器的數(shù)據(jù)得到一張合法用戶的IP和MAC地址表,稱之為合法表。接著,讀取合法表中每個用戶的IP,并在全局表中尋找匹配的IP,如果找到的話就用合法用戶的MAC地址替換原來無效的MAC地址。,這張全局表中的合法用戶匹配正確MAC地址,而非法用戶匹配無效的MAC地址。只要用戶把這張表寫入系統(tǒng)ARP緩存,非法用戶就不能通過簡單的盜取IP方法來通過網(wǎng)關(guān)了。
實現(xiàn)
首先生成一張初始的全局表。它包含所有IP地址,每個IP地址與一個非法的MAC地址匹配。它的格式必須是arp命令能夠識別的。初始化全局表的腳本為init,內(nèi)容如下:
#!/bin/bash
ipprefix=10.0.
count1=0
while (( $count1 < 4 ))
do
count2=1
while (( $count2 < 255 ))
do
echo“$ipprefix$count1.$count2 00e000000001”
let $count2+=1
done
let $count1+=1
done
寫好后存檔,用“chmod +x init”命令使得腳本可執(zhí)行。然后運行腳本init > arp,就可以將結(jié)果保存到當(dāng)前目錄的arp文件中。該文件就是10.0.0.1到10.0.3.254所有IP地址與MAC地址00e000000001綁定的ARP表,看上去該文件類似于下面這樣:
10.0.0.1 00e000000001
10.0.0.2 00e000000001
10.0.0.3 00e000000001
10.0.0.4 00e000000001
10.0.0.5 00e000000001
... ...
需要注意的是,Shell腳本語法雖然和C語言類似,但對格式要求很嚴(yán)格,有些地方不能加空格,有些地方則必須加空格。比如let $count1+=1就不能寫成let $count1 += 1;相反,while (( $count1 < 4 )) 也不能寫成while (($count1<4)),括號與語句之間必需有空格。
接下來通過DHCP服務(wù)器得到合法用戶的IP與MAC地址匹配表(即合法用戶表),假設(shè)是valid.arp文件。編寫一個腳本一行一行地讀取該表,每得到一個IP地址記錄,就在前面生成的arp文件中查找同樣的IP。如果找到的話,那么就用valid.arp中該IP的MAC地址替換arp文件中該IP的MAC地址。valid.arp文件可能像下面這樣:
10.0.0.2 00e00a0f1d2c
...
10.0.1.25 00e0b2c3d5c1
...
查找替換腳本為replace,內(nèi)容如下:
#!/bin/bash
# 定義并初始化三個變量,分別是合法用戶表、全局表和作交換用的表
validArp=valid.arp
globalArp=arp
tmpArp=tmp.arp
count=1
# 371是合法用戶的總數(shù),也就是valid.arp表的記錄數(shù),然后加1
while (( count < 371 ))
do
#“ sed -n‘“$count”p’$validArp”命令將每次打印valid.arp文件中的第$count個記錄
# 例如,當(dāng)$count=1的時候,該命令將打印: 10.0.0.2 00e00a0f1d2c2
# eval $getValid將會執(zhí)行$getValid變量所包含的語句,并將結(jié)果賦給變量$curRec
getValid=“sed -n‘“$count”p’$validArp”
curRec=‘eval $getValid’
# echo $curRec awk‘{print $1}’命令將打印$curRec內(nèi)容的個字段,也就是IP地址
# 然后我們將這個IP地址賦值給$curIP變量
getIP=“echo $curRec awk‘{print \$1}’”
curIP=‘eval $getIP’
# 這樣我們就得到了合法用戶的IP及IP和MAC地址對,接下來是關(guān)鍵的一步
# 下面兩條語句在全局表中查找與得到的IP匹配的項目,找到后就在該記錄后面添加合法用戶的IP
和MAC地址對,然后刪除舊的非法IP和MAC地址對,并將結(jié)果存入一個新的文件tmp.arp
replace=“sed -e‘/$curIP\>/a\ $curRec’ -e‘/$curIP\>/d’$globalArp >$tmpArp”
eval $replace然后用新的文件覆蓋全局表文件,并將計數(shù)器加1,供下次循環(huán)
cp -f $tmpArp $globalArp
let count+=1
done
到此腳本結(jié)束。需要注意的地方有兩個:,所有包含“eval”命令的語句,使用的都是反引號,也就是通常位于Tab鍵上面的那個引號,這樣變量才能得到語句執(zhí)行的結(jié)果,而非語句本身;第二,如果出現(xiàn)變量和其它字母在一起的情況,用雙引號將變量包含,否則會出現(xiàn)錯誤的變量名,例如下面這條語句:
getValid=“sed -n‘“$count”p’$validArp”
如果不用雙引號把變量$count包起來,Shell會認(rèn)為用戶的變量是$countp,而不是$count。
在執(zhí)行完replace后,再查看arp文件,會發(fā)現(xiàn)其中所有在valid.arp文件中存在的IP和MAC地址對,其中的初始化MAC地址已被替換為正確的MAC地址。
,將得到的arp文件拷貝為/etc/ethers,在系統(tǒng)啟動時運行“arp -f”,就可以實現(xiàn)IP和MAC地址匹配了。
總結(jié)
通過這件事不難發(fā)現(xiàn),Linux繼承了Unix的傳統(tǒng),具備強大和完善的系統(tǒng)管理方法。只要用戶掌握一些常用的命令與工具,就可以極大地提高系統(tǒng)管理效率,降低管理的工作強度。學(xué)習(xí)和掌握這些方法,是每個合格的Linux系統(tǒng)管理員都應(yīng)該做到的。
Linux系統(tǒng)下如何來封殺非法IP地址
更新時間: 2006-06-29 16:32:50來源: 粵嵌教育瀏覽量:1147
推薦閱讀
- ·移遠(yuǎn)通信科技有限公司專場招聘會
- ·嵌入式系統(tǒng)設(shè)計的核心技術(shù)挑戰(zhàn)與創(chuàng)新實踐
- ·嵌入式實時操作系統(tǒng)的任務(wù)調(diào)度優(yōu)化策略與實踐
- ·湖北精實機電科技有限公司專場招聘會(長沙校區(qū))
- ·信號量與互斥鎖在資源競爭中的協(xié)同控制機制
- ·粵嵌科技2025年中總結(jié)大會召開——擘畫產(chǎn)教融合新藍圖
- ·Linux字符設(shè)備驅(qū)動框架解析:file_operations的核心作用與實現(xiàn)
- ·廣東朝歌數(shù)碼科技股份有限公司專場招聘會
- ·深化產(chǎn)教融合,共筑技能人才培養(yǎng)新生態(tài) —— 廣州華立學(xué)院到訪粵嵌從化校區(qū)為深化產(chǎn)教
- ·校企合作新突破 | 粵嵌科技與三亞學(xué)院共探產(chǎn)教融合新路徑