Linux系統(tǒng)內(nèi)核網(wǎng)絡(luò)參數(shù)的意義及應(yīng)用
更新時(shí)間: 2007-05-10 11:48:50來源: 粵嵌教育瀏覽量:892
摘要:本文主要介紹了linux系統(tǒng)位于目錄/proc/sys/net/ipv4/下的部分內(nèi)核網(wǎng)絡(luò)參數(shù),同時(shí)對(duì)通過linux內(nèi)核網(wǎng)絡(luò)參數(shù)的調(diào)整來提高linux系統(tǒng)的安全性和穩(wěn)定性提出了自己的見解。從而為系統(tǒng)管理員進(jìn)一步增強(qiáng)網(wǎng)絡(luò)的安全性和系統(tǒng)的穩(wěn)定性提供了參考。
在linux中,我們可以根據(jù)不同的需求來調(diào)整/proc/sys/net/ipv4/目錄下的內(nèi)核網(wǎng)絡(luò)參數(shù),通過合理的配置這里內(nèi)核網(wǎng)絡(luò)參數(shù),從而達(dá)到提高網(wǎng)絡(luò)的安全性和系統(tǒng)的穩(wěn)定性的目的。因?yàn)檫@方面的文獻(xiàn)比較少,所以我們不可能進(jìn)行全面的介紹。現(xiàn)在已經(jīng)有l(wèi)inux組織正在從事這方面的文檔的寫作,相信在不久的將來,我們就會(huì)看到比較完整的文檔。下面我們就來看一看一些比較常用的內(nèi)核網(wǎng)絡(luò)參數(shù)。
注意:
1. 參數(shù)值帶有速度(rate)的參數(shù)不能在loopback接口上工作。
2.因?yàn)閮?nèi)核是以HZ為單位的內(nèi)部時(shí)鐘來定義速度的,通常速度為100HZ,所以設(shè)定一個(gè)參數(shù)值為100就表示允許1個(gè)包/秒,假如為20則允許5個(gè)包/秒。
3.所有內(nèi)核網(wǎng)絡(luò)參數(shù)配置文件位于/proc/sys/net/ipv4/目錄下。
一、 icmp相關(guān)內(nèi)核配置參數(shù)
概述:通常我們使用icmp包來探測(cè)目的主機(jī)上的其它協(xié)議(如tcp和udp)是否可用。比如包含“destination unreachable”信息的icmp包就是常見的icmp包。
1.icmp_destunreach_rate:設(shè)置內(nèi)容為“Destination Unreachable”icmp包的響應(yīng)速率。設(shè)置值應(yīng)為整數(shù)。
應(yīng)用實(shí)例:
假設(shè)有A、B兩部主機(jī),首先我們?cè)谥鳈C(jī)A上執(zhí)行以下ipchains語句:ipchains -A input -p icmp -j REJECT。這里的REJECT和DENY不同,DENY會(huì)丟掉符合條件的包如同沒有接收到該包一樣,而REJECT會(huì)在丟掉該包的同時(shí)給請(qǐng)求主機(jī)發(fā)回一個(gè)“Destination Unreachable”的icmp。
然后在主機(jī)B上ping主機(jī)A,這時(shí)候我們會(huì)發(fā)現(xiàn)“Destination Unreachable”icmp包的響應(yīng)速度是很及時(shí)的。接著我們?cè)谥鳈C(jī)A上執(zhí)行:
echo "1000" > /proc/sys/net/ipv4/icmp_destunreach_rate
也即每10秒鐘響應(yīng)一個(gè)“Destination Unreachable”的icmp包。這時(shí)候再從主機(jī)B上ping主機(jī)A就會(huì)發(fā)現(xiàn)“Destination Unreachable”icmp包的響應(yīng)速度已經(jīng)明顯變慢,我很好奇的測(cè)試了一下,發(fā)現(xiàn)剛好是每10秒響應(yīng)一次。
2.icmp_echo_ignore_broadcasts:設(shè)置是否響應(yīng)icmp echo請(qǐng)求廣播,設(shè)置值應(yīng)為布爾 值,0表示響應(yīng)icmp echo請(qǐng)求廣播,1表示忽略。注意:windows系統(tǒng)是不響應(yīng)icmp echo請(qǐng)求廣播的。
應(yīng)用實(shí)例:
在我的RedHat6.x和RedHat7上該值缺省為0,這樣當(dāng)有個(gè)用ping我的服務(wù)器所在的網(wǎng)段的網(wǎng)絡(luò)地址時(shí),所有的linux服務(wù)器就會(huì)響應(yīng),從而也能讓讓該用戶得到我的服務(wù)器的ip地址,可以執(zhí)行:
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
來關(guān)閉該功能。從而防止icmp風(fēng)暴,防止網(wǎng)絡(luò)阻塞。
3.icmp_echoreply_rate:設(shè)置系統(tǒng)響應(yīng)icmp echo請(qǐng)求的icmp包的響應(yīng)速度,設(shè)置值為整數(shù)。
應(yīng)用實(shí)例:
假設(shè)有A、B兩部主機(jī),首先我們?cè)谥鳈C(jī)B上ping主機(jī)A,可以看到響應(yīng)很正常,然后在主機(jī)A上執(zhí)行:
echo "1000" > /proc/sys/net/ipv4/icmp_echoreply_rate
也即每10秒鐘響應(yīng)一個(gè)icmp echo請(qǐng)求包。然后再ping主機(jī)A就可以看到響應(yīng)速度已經(jīng)變成10秒一次。合理的調(diào)整該參數(shù)的值來防止icmp風(fēng)暴。
4.icmp_echo_ignore_all:設(shè)置系統(tǒng)是否忽略所有的icmp echo請(qǐng)求,如果設(shè)置了一個(gè)非0值,系統(tǒng)將忽略所有的icmp echo請(qǐng)求。其實(shí)這是icmp_echoreply_rate的一種極端情況。參數(shù)值為布爾值,1表示忽略,0表示響應(yīng)。
5. icmp_paramprob_rate:當(dāng)系統(tǒng)接收到數(shù)據(jù)報(bào)的損壞的ip或tcp頭時(shí),就會(huì)向源發(fā)出一個(gè)包含有該錯(cuò)誤信息的icmp包。這個(gè)參數(shù)就是用來設(shè)置向源發(fā)送這種icmp包的速度。當(dāng)然,在通常情況下ip或tcp頭出錯(cuò)是很少見的。參數(shù)值為整數(shù)。
6.icmp_timeexceed_rate:數(shù)據(jù)報(bào)在網(wǎng)絡(luò)上傳輸時(shí),其生存時(shí)間(time to live)字段會(huì)不斷減少,當(dāng)生存時(shí)間為0時(shí),正在處理該數(shù)據(jù)報(bào)的路由器就會(huì)丟棄該數(shù)據(jù)報(bào),同時(shí)給源主機(jī)發(fā)送一個(gè)“time to live exceeded”的icmp包。該參數(shù)就是用來設(shè)置這種icmp包的發(fā)送的速度。當(dāng)然,這通常用于充當(dāng)路由器的linux主機(jī)。
二、ip相關(guān)內(nèi)核配置參數(shù)
linux內(nèi)核網(wǎng)絡(luò)參數(shù)中關(guān)于ip的配置參數(shù)通常是用來定義或調(diào)整ip包的一些特定的參數(shù),除此之外還定義了系統(tǒng)的一些網(wǎng)絡(luò)特性。
1.ip_default_ttl:設(shè)置從本機(jī)發(fā)出的ip包的生存時(shí)間,參數(shù)值為整數(shù),范圍為0~128,缺省值為64。在windows系統(tǒng)中,ip包的生存時(shí)間通常為128。如果你的系統(tǒng)經(jīng)常得到“Time to live exceeded”的icmp回應(yīng),可以適當(dāng)增大該參數(shù)的值,但是也不能過大,因?yàn)槿绻愕穆酚傻沫h(huán)路的話,就會(huì)增加系統(tǒng)報(bào)錯(cuò)的時(shí)間。
2.ip_dynaddr:該參數(shù)通常用于使用撥號(hào)連接的情況,可以使系統(tǒng)動(dòng)能夠立即改變ip包的源地址為該ip地址,同時(shí)中斷原有的tcp對(duì)話而用新地址重新發(fā)出一個(gè)syn請(qǐng)求包,開始新的tcp對(duì)話。在使用ip欺騙時(shí),該參數(shù)可以立即改變偽裝地址為新的ip地址。該參數(shù)的參數(shù)值可以是:
1:?jiǎn)⒂迷摴δ?
2:使用冗余模式啟用該功能
0:禁止該功能
應(yīng)用實(shí)例:
在使用ipchains配置ip欺騙帶動(dòng)局域網(wǎng)共享一個(gè)ppp連接上網(wǎng)時(shí),有時(shí)會(huì)出現(xiàn)剛開時(shí)連接一個(gè)站點(diǎn)連不通,再次刷新又可以連接的情況,這時(shí)候就可以設(shè)置該參數(shù)的值為1,從而立即改變偽裝地址為新的ip地址,就可以解決這類問題。命令為:
echo "1" > /proc/sys/net/ipv4/ip_dynaddr
3.ip_forward:可以通過該參數(shù)來啟用包轉(zhuǎn)發(fā)功能,從而使系統(tǒng)充當(dāng)路由器。參數(shù)值為1時(shí)啟用ip轉(zhuǎn)發(fā),為0時(shí)禁止ip轉(zhuǎn)發(fā)。注意,我們可以在單網(wǎng)卡或雙網(wǎng)卡的主機(jī)上實(shí)現(xiàn)ip轉(zhuǎn)發(fā)。
應(yīng)用實(shí)例:
假設(shè)我們使用一部裝有雙網(wǎng)卡的linux主機(jī)充當(dāng)防火墻,這時(shí)候我們就必須執(zhí)行以下命令來打開ip轉(zhuǎn)發(fā)功能:
echo "1" > /proc/sys/net/ipv4/ip_forward
4. ip_local_port_range:設(shè)置當(dāng)本地系統(tǒng)向外發(fā)起tcp或udp連接請(qǐng)求時(shí)使用的端口范圍。設(shè)置值為兩個(gè)整數(shù),缺省為“1024 4999”。
應(yīng)用實(shí)例:
echo "1450 6000" > /proc/sys/net/ipv4/ip_local_port_range
三、tcp相關(guān)內(nèi)核配置參數(shù)
通過tcp配置參數(shù)可以控制tcp會(huì)話過程中的各個(gè)方面。
a) tcp_fin_timeout:在一個(gè)tcp會(huì)話過程中,在會(huì)話結(jié)束時(shí),A首先向B發(fā)送一個(gè)fin包,在獲得B的ack確認(rèn)包后,A就進(jìn)入FIN WAIT2狀態(tài)等待B的fin包然后給B發(fā)ack確認(rèn)包。這個(gè)參數(shù)就是用來設(shè)置A進(jìn)入FIN WAIT2狀態(tài)等待對(duì)方fin包的超時(shí)時(shí)間。如果時(shí)間到了仍未收到對(duì)方的fin包就主動(dòng)釋放該會(huì)話。參數(shù)值為整數(shù),單位為秒,缺省為180秒。
b) tcp_syn_retires:設(shè)置開始建立一個(gè)tcp會(huì)話時(shí),重試發(fā)送syn連接請(qǐng)求包的次數(shù)。
參數(shù)值為小于255的整數(shù),缺省值為10。假如你的連接速度很快,可以考慮降低該值來提高系統(tǒng)響應(yīng)時(shí)間,即便對(duì)連接速度很慢的用戶,缺省值的設(shè)定也足夠大了。
3.tcp_window_scaling:設(shè)置tcp/ip會(huì)話的滑動(dòng)窗口大小是否可變。參數(shù)值為布爾值,為1時(shí)表示可變,為0時(shí)表示不可變。Tcp/ip通常使用的窗口可達(dá)到65535 字節(jié),對(duì)于高速網(wǎng)絡(luò),該值可能太小,這時(shí)候如果啟用了該功能,可以使tcp/ip滑動(dòng)窗口大小增大數(shù)個(gè)數(shù)量級(jí),從而提高數(shù)據(jù)傳輸?shù)哪芰Α?
四、有關(guān)防止ip欺騙攻擊的內(nèi)核網(wǎng)絡(luò)參數(shù)
假設(shè)有如下的情景:
1.1.1.1 2.2.2.2
在缺省狀態(tài)下,路由器根據(jù)包的目的地址進(jìn)行轉(zhuǎn)發(fā),所以路由器缺省是對(duì)來自任何地方
的包進(jìn)行轉(zhuǎn)發(fā)的。如上圖所示,假如路由器的2.2.2.2接口(也即廣域網(wǎng)接口)接收到一個(gè)包,該包的源地址為1.1.1.100(也即為Intranet地址),雖然這是不可能或者說是不合理的,但是由于路由器的特性,路由器還是會(huì)將這個(gè)不合法的包轉(zhuǎn)發(fā)到Intranet。從而讓黑客有了可乘之機(jī),為其進(jìn)行ip欺騙攻擊打開了方便之門。
幸好,我們可以通過Linux的內(nèi)核系統(tǒng)參數(shù)“反向路徑過濾”來防止這種情況,該參數(shù)位于/proc/sys/net/ipv4/conf/下的各個(gè)子目錄中的rp_filter文件。參數(shù)值為整數(shù),可能的值有:
2 - 進(jìn)行全面的反向路徑過濾,推薦在邊緣路由器上使用。但是要注意,在復(fù)雜的網(wǎng)絡(luò)環(huán)境中,如果使用了靜態(tài)路由或rip、ospf路由協(xié)議時(shí),不推薦使用該值。
1 - 是該參數(shù)的缺省值,它只對(duì)直接連接的網(wǎng)絡(luò)進(jìn)行反向路徑過濾。
0 - 不進(jìn)行反向路徑過濾。
應(yīng)用實(shí)例:
建立如下的腳本,文件名為rp.sh
#/bin/bash
for i in /proc/sys/net/ipv4/conf/*/rp_filter ;
do
echo 2 > $i
done
然后更改文件權(quán)限chmod 755 rp.sh,執(zhí)行 ./rp.sh。
五、針對(duì)每一網(wǎng)絡(luò)接口的內(nèi)核網(wǎng)絡(luò)參數(shù)
通過針對(duì)每一網(wǎng)絡(luò)接口的內(nèi)核網(wǎng)絡(luò)參數(shù),你可以為諸如eth0、eth1等具體的網(wǎng)絡(luò)接口指定響應(yīng)的內(nèi)核網(wǎng)絡(luò)參數(shù)。注意:/proc/sys/net/ipv4/conf/all/下的參數(shù)將應(yīng)用于所有的網(wǎng)絡(luò)接口。
1. accept_redirects:該參數(shù)位于/proc/sys/net/ipv4/conf/DEV/accept_redirects(DEV表示具體的網(wǎng)絡(luò)接口),如果你的主機(jī)所在的網(wǎng)段中有兩個(gè)路由器,你將其中一個(gè)設(shè)置成了缺省網(wǎng)關(guān),但是該網(wǎng)關(guān)在收到你的ip包時(shí)發(fā)現(xiàn)該ip包必須經(jīng)過另外一個(gè)路由器,這時(shí)這個(gè)路由器就會(huì)給你發(fā)一個(gè)所謂的“重定向”icmp包,告訴將ip包轉(zhuǎn)發(fā)到另外一個(gè)路由器。參數(shù)值為布爾值,1表示接收這類重定向icmp 信息,0表示忽略。在充當(dāng)路由器的linux主機(jī)上缺省值為0,在一般的linux主機(jī)上缺省值為1。建議將其改為0,或者使用“安全重定向”(見下文)以消除安全性隱患。
2. log_martians:將包含非法地址信息的ip包記錄到內(nèi)核日志。參數(shù)值為布爾值。
應(yīng)用實(shí)例:
上面我們講過rp_filter反向路徑過濾參數(shù),同時(shí)我們可以執(zhí)行下面的語句
echo “1” > /proc/sys/net/ipv4/conf/all/log_martians
然后就可以將進(jìn)行ip假冒的ip包記錄到/var/log/messages。
3. forwarding:?jiǎn)⒂锰囟ňW(wǎng)絡(luò)接口的ip轉(zhuǎn)發(fā)功能。參數(shù)值為布爾值,1表示進(jìn)行記錄。
應(yīng)用實(shí)例:
echo "1" > /proc/sys/net/ipv4/conf/eth0/forwarding
4. accept_source_route:是否接受含有源路由信息的ip包。參數(shù)值為布爾值,1表?nbsp; Linux內(nèi)核網(wǎng)絡(luò)參數(shù)的意義及應(yīng)用
粵嵌動(dòng)態(tài)
推薦閱讀
- ·Linux字符設(shè)備驅(qū)動(dòng)框架解析:file_operations的核心作用與實(shí)現(xiàn)
- ·廣東朝歌數(shù)碼科技股份有限公司專場(chǎng)招聘會(huì)
- ·深化產(chǎn)教融合,共筑技能人才培養(yǎng)新生態(tài) —— 廣州華立學(xué)院到訪粵嵌從化校區(qū)為深化產(chǎn)教
- ·校企合作新突破 | 粵嵌科技與三亞學(xué)院共探產(chǎn)教融合新路徑
- ·粵嵌科技入選國家級(jí)職業(yè)數(shù)字展館聯(lián)合建設(shè)單位,賦能計(jì)算機(jī)程序設(shè)計(jì)員高技能人才培養(yǎng)
- ·嵌入式實(shí)時(shí)操作系統(tǒng)的性能優(yōu)化與實(shí)現(xiàn)路徑
- ·校企攜手賦能教育!粵嵌科技助力海南科技職業(yè)大學(xué)探索 AGI 時(shí)代教學(xué)新范式
- ·嵌入式系統(tǒng)中的低功耗設(shè)計(jì)策略與實(shí)現(xiàn)路徑
- ·深圳市軒宇軟件開發(fā)有限公司專場(chǎng)招聘會(huì)
- ·嵌入式系統(tǒng)中的代碼空間優(yōu)化:策略與實(shí)踐