版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Linux網(wǎng)絡(luò)管理1項(xiàng)目引入在Internet網(wǎng)絡(luò)世界漫游,隨時(shí)都可能遭到各種惡意攻擊,這些惡意攻擊可能導(dǎo)致的后果是上網(wǎng)賬號(hào)被竊取冒用、銀行賬號(hào)被盜用、電子郵件密碼被修改、財(cái)務(wù)數(shù)據(jù)被利用、機(jī)密文件丟失、隱私曝光等等,甚至黑客通過(guò)遠(yuǎn)程控制刪除硬盤上所有的資料數(shù)據(jù),使整個(gè)計(jì)算機(jī)系統(tǒng)架構(gòu)全面崩潰。幸運(yùn)的是,我們可以通過(guò)使用防火墻來(lái)降低這些風(fēng)險(xiǎn)。防火墻旨在檢查往來(lái)于Internet間的信息。對(duì)于連接到網(wǎng)絡(luò)上的Linux系統(tǒng)來(lái)說(shuō),防火墻是必不可少的防御機(jī)制,它只允許合法的網(wǎng)絡(luò)流量進(jìn)出系統(tǒng),而禁止其它任何網(wǎng)絡(luò)流量?!皀etfilter/iptablesIP信息包過(guò)濾系統(tǒng)”是集成到Linux內(nèi)核的防火墻解決方案。Linux核心里的netfilter子系統(tǒng)除了完成的網(wǎng)絡(luò)防火墻功能,還可以進(jìn)行網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT)、數(shù)據(jù)包(package)記錄、流量統(tǒng)計(jì)等。iptables是用戶操作netfilter的唯一工具接口。為敘述便利,以下敘述將不嚴(yán)格區(qū)分iptables與netfilter。2項(xiàng)目環(huán)境圖是一種常見(jiàn)的網(wǎng)絡(luò)環(huán)境拓?fù)鋱D。本項(xiàng)目主要圍繞主機(jī)—Linux防火墻/路由器構(gòu)建進(jìn)行設(shè)計(jì),本項(xiàng)目中在“Linux防火墻/路由器”主機(jī)安裝3塊網(wǎng)卡。一塊網(wǎng)卡(Linux系統(tǒng)識(shí)別為eth0,IP地址為)連接網(wǎng)段為192.168.0的局域網(wǎng)(LAN);另一塊網(wǎng)卡(系統(tǒng)識(shí)別為eth1,IP地址為66)連接網(wǎng)段為192.168.1的局域網(wǎng);第3塊網(wǎng)卡(系統(tǒng)識(shí)別為eth2,IP地址可以為公網(wǎng)地址,也可以是上層局域網(wǎng)地址,本項(xiàng)目采用一個(gè)假設(shè)公有地址8)連接Internet或上層局域網(wǎng)。3項(xiàng)
目
10Linux防火墻實(shí)現(xiàn)——iptables基本任務(wù):1)使用iptables搭建簡(jiǎn)單防火墻;2)使用ufw防火墻。拓展任務(wù):1)構(gòu)建一個(gè)更完善的防火墻;2)網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT);3)iptables與Squid透明代理;4)使用FireStarter防火墻。4任務(wù)1使用iptables搭建簡(jiǎn)單防火墻本任務(wù)主要構(gòu)建能夠完成訪問(wèn)外部資源,但不提供服務(wù)的Linux桌面型主機(jī)安全策略。對(duì)常見(jiàn)的網(wǎng)絡(luò)環(huán)境中選取一部分并簡(jiǎn)化作為任務(wù)實(shí)驗(yàn)環(huán)境,如圖所示,局域網(wǎng)環(huán)境是通過(guò)上層LAN而不是直接連接Internet,構(gòu)造如此環(huán)境并不影響測(cè)試。5iptables是通過(guò)一些規(guī)則、策略構(gòu)成的表對(duì)通過(guò)數(shù)據(jù)包進(jìn)行處理。iptables的語(yǔ)法相當(dāng)多,可以分為規(guī)則清除,定義策略,添加,插入、刪除規(guī)則等幾種。以下將依照搭建防火墻的過(guò)程(規(guī)則清除→定義策略→添加、插入、刪除規(guī)則→保存規(guī)則)進(jìn)行。1.查看當(dāng)前iptables信息iptables內(nèi)建三個(gè)表:filter、nat以及mangle,每個(gè)表都被預(yù)先設(shè)置了一或多個(gè)代表各攔截點(diǎn)的鏈,其中filter預(yù)設(shè)的三個(gè)INPUT、FORWARD、OUTPUT鏈。對(duì)iptables設(shè)置規(guī)則實(shí)質(zhì)是對(duì)iptables表的鏈設(shè)置規(guī)則,更詳細(xì)的參考后文歸納說(shuō)明部分或其他資料。在做進(jìn)一步操作之前,我們先查看iptables表信息,初步了解iptables。61)查看filter表信息。使用“iptables–L”默認(rèn)是查看表filter的鏈。在“Linux防火墻/路由器”主機(jī)輸入如下(如果沒(méi)有特殊說(shuō)明,以下都將在“Linux防火墻/路由器”進(jìn)行操作)。student@ubuntu:~$sudoiptables-LChainINPUT(policyACCEPT)//INPUT鏈默認(rèn)策略為接受所有包targetprotoptsourcedestination//INPUT鏈沒(méi)有設(shè)置規(guī)則ChainFORWARD(policyACCEPT)//FORWARD鏈默認(rèn)策略為接受所有包targetprotoptsourcedestination//FORWARD鏈沒(méi)有設(shè)置規(guī)則ChainOUTPUT(policyACCEPT)//OUTPUT鏈默認(rèn)策略為接受所有包targetprotoptsourcedestination//OUTPUT鏈沒(méi)有設(shè)置規(guī)則72)查看nat表的規(guī)則。從上看出Linux系統(tǒng)nat表有PREROUTING、POSTROUTING、OUTPUT鏈,默認(rèn)策略對(duì)于任何包也都接受,并沒(méi)有設(shè)置規(guī)則。student@ubuntu:~$sudoiptables-tnat-LChainPREROUTING(policyACCEPT)//PREROUTING鏈默認(rèn)策略為接受所有包targetprotoptsourcedestinationChainPOSTROUTING(policyACCEPT)//POSTROUTING鏈默認(rèn)策略為接受所有包targetprotoptsourcedestinationChainOUTPUT(policyACCEPT)//OUTPUT鏈默認(rèn)策略為接受所有包targetprotoptsourcedestinationstudent@ubuntu:~$83)查看nat表的詳細(xì)信息。student@ubuntu:~$sudoiptables-L-vChainINPUT(policyACCEPT683packets,53617bytes)//683表示INPUT鏈通過(guò)的數(shù)據(jù)包數(shù)量,53617表示通過(guò)數(shù)據(jù)量
pktsbytestargetprotoptinoutsourcedestinationChainFORWARD(policyACCEPT0packets,0bytes)//FORWARD鏈還沒(méi)有數(shù)據(jù)包通過(guò)pktsbytestargetprotoptinoutsourcedestinationChainOUTPUT(policyACCEPT745packets,53775bytes)pktsbytestargetprotoptinoutsourcedestination92.規(guī)則清除一般設(shè)置iptables之前,首先要清除所有以前設(shè)置的規(guī)則。雖然很多情況下它什么也不做,但是保險(xiǎn)起見(jiàn),不妨小心一點(diǎn)吧。student@ubuntu:~$sudoiptables–F//清除默認(rèn)表filter所有的設(shè)置規(guī)則student@ubuntu:~$sudoiptables–X//刪除表filter中用戶建立的鏈student@ubuntu:~$sudoiptables-tnat–F//清除表nat所有的設(shè)置規(guī)則student@ubuntu:~$sudoiptables-tnat-X//清除表nat中用戶建立的鏈103.定義策略規(guī)則清除后,接下來(lái)就是對(duì)鏈定義策略,策略就是當(dāng)鏈的規(guī)則都相符是數(shù)據(jù)包的默認(rèn)動(dòng)作。從上面查看表信息得知,iptables表的鏈沒(méi)有設(shè)置規(guī)則,且對(duì)任何數(shù)據(jù)包的策略都是接受的。顯然,這是一種過(guò)于寬松的防火墻。1)定義策略之前檢查網(wǎng)絡(luò)連通性student@ubuntu:~$ping-c3//測(cè)試回環(huán)網(wǎng)絡(luò)接口lo┆3packetstransmitted,3received,0%packetloss,time2007msrttmin/avg/max/mdev=0.058/0.384/1.025/0.453msstudent@ubuntu:~$ping-c3//測(cè)試局域網(wǎng)絡(luò)其他主機(jī)┆3packetstransmitted,3received,0%packetloss,time2003msrttmin/avg/max/mdev=0.209/3.032/8.624/3.954ms112)定義filter表的INPUT鏈策略首先,定義一個(gè)非常嚴(yán)格的策略。student@ubuntu:~$sudoiptables-PINPUTDROP//設(shè)置Filter的INPUT鏈策略為丟棄所有包INPUT鏈?zhǔn)翘幚砟切┻M(jìn)入Linux主機(jī)的數(shù)據(jù)包。上命令將會(huì)為構(gòu)建一個(gè)非常“安全”的防火墻,很難有哪個(gè)黑客(hacker)能攻破這樣的主機(jī),因?yàn)樗鼘⑺袕木W(wǎng)絡(luò)想進(jìn)入你主機(jī)的數(shù)據(jù)丟棄(drop)了。這當(dāng)然是安全過(guò)頭了,此時(shí)主機(jī)將相當(dāng)于沒(méi)有網(wǎng)絡(luò)。123)檢測(cè)配置如果ping,就會(huì)發(fā)現(xiàn)屏幕一直停在那里,因?yàn)閜ing收不到任何回應(yīng),必須按“Ctrl+C”強(qiáng)行終止。student@ubuntu:~$sudoiptables–L//查看Filter表信息ChainINPUT(policyDROP)//Filter表的INPUT鏈策略為DROP,拒絕任何包通過(guò)targetprotoptsourcedestination┆student@ubuntu:~$ping-c3 //測(cè)試回環(huán)網(wǎng)絡(luò)接口loPING()56(84)bytesofdata.---pingstatistics---3packetstransmitted,0received,100%packetloss,time2010msstudent@ubuntu:~$ping//測(cè)試本地局域網(wǎng)PING()56(84)bytesofdata.---pingstatistics---9packetstransmitted,0received,100%packetloss,time8041ms134)定義其他鏈策略雖然Ubuntu系統(tǒng)其他鏈默認(rèn)策略為允許所有包,但保險(xiǎn)起見(jiàn)還是重新設(shè)置。student@ubuntu:~$sudoiptables-POUTPUTACCRPT//Filter設(shè)置OUTPUT鏈策略允許所有包student@ubuntu:~$sudoiptables-PFORWARDACCRPT//FORWARD鏈策略允許所有包student@ubuntu:~$sudoiptables–tnat-PPREROUTINGACCRPT//策略允許所有包student@ubuntu:~$sudoiptables–tnat-POUTPUTACCRPT//策略允許所有包student@ubuntu:~$sudoiptables–tnat-PPOSTROUTINGACCRPT//策略允許所有包144.定義規(guī)則1)連通局域網(wǎng)通過(guò)上面定義的策略,Linux主機(jī)就好比是一個(gè)沒(méi)有網(wǎng)卡的主機(jī)。以下的規(guī)則將使主機(jī)能夠與局域網(wǎng)連通。student@ubuntu:~$iptables-AINPUT-i!eth1-jACCEPT這條規(guī)則的意思是:接受所有來(lái)源不是網(wǎng)絡(luò)接口eth1的數(shù)據(jù)。前面已經(jīng)說(shuō)明,Linux主機(jī)有三塊網(wǎng)卡,因此將有四個(gè)網(wǎng)絡(luò)接口:eth0、eth1分別連接不同局域網(wǎng),loop是回環(huán)網(wǎng)(localhost),eth2連接internet或上層網(wǎng)絡(luò)接口(如果是采用在是adsl上網(wǎng),規(guī)則修改為“iptables-AINPUT-i!ppp0-jACCEPT),因此添加上述規(guī)則,即允許了局域網(wǎng)的訪問(wèn),當(dāng)然也可以訪問(wèn)lo接口。152)檢測(cè)測(cè)試回環(huán)地址與局域網(wǎng)其他主機(jī)。結(jié)果顯示通過(guò)主機(jī)與eth0接口連接的局域網(wǎng)絡(luò)連通。student@ubuntu:~$sudoiptables-L–v//查看filter規(guī)則,注意INPUT鏈規(guī)則變化ChainINPUT(policyDROP820packets,51677bytes)pktsbytestargetprotoptinoutsourcedestination72240969ACCEPTall--!eth1anyanywhereanywhere//上條記錄就是剛添加的規(guī)則┆student@ubuntu:~$ping-c3//測(cè)試回環(huán)網(wǎng)絡(luò)接口lo┆3packetstransmitted,3received,0%packetloss,time1998msrttmin/avg/max/mdev=0.128/0.122/0.125/0.009msstudent@ubuntu:~$ping-c3//測(cè)試局域網(wǎng)絡(luò)其他主機(jī)┆3packetstransmitted,3received,0%packetloss,time1999msrttmin/avg/max/mdev=0.262/0.293/0.339/0.038ms163)允許主機(jī)訪問(wèn)Web站點(diǎn)雖然能夠進(jìn)行本地局域網(wǎng)絡(luò)訪問(wèn)了,但我們主機(jī)還不能訪問(wèn)Internet上Web站點(diǎn),添加如下規(guī)則。student@ubuntu:~$sudoiptables-AINPUT-ieth1-ptcp--sport80-jACCEPT允許來(lái)自網(wǎng)絡(luò)接口eth1(eth1接口能夠通過(guò)上層LAN能夠連接internet),并且來(lái)源端口是80的數(shù)據(jù)進(jìn)入你的計(jì)算機(jī)(80端口正是www服務(wù)所使用的端口)。查看一下查看Filter表信息,顯示如下。student@ubuntu:~$sudoiptables-L-v//查看規(guī)則ChainINPUT(policyDROP233packets,23252bytes)pktsbytestargetprotoptinoutsourcedestination262K12MACCEPTall--!eth1anyanywhereanywhere00ACCEPTtcp--eth1anyanywhereanywheretcpspt:www┆17到目前為止,應(yīng)該能夠連接Internet瀏覽網(wǎng)頁(yè),在主機(jī)瀏覽器中分別輸入(百度網(wǎng)站的IP地址,建議輸入之前在其他計(jì)算機(jī)上重新確認(rèn)IP是否正確)與測(cè)試。圖12.7所示是測(cè)試顯示結(jié)果,其中上部分是直接使用IP地址,下半部分是使用域名。測(cè)試表明,使用IP地址能夠訪問(wèn),而使用域名出問(wèn)題了,怎么回事啊,自己先想想吧。184)打開(kāi)dns端口使用IP地址能夠訪問(wèn),而使用域名出問(wèn)題了,問(wèn)題肯定就出現(xiàn)在域名解析上。因?yàn)橛蛎馕鍪褂门cWeb不同的端口,因此要打開(kāi)端口53。student@ubuntu:~$sudoiptables-AINPUT-ieth1-pudp--sport53-jACCEPT注意,域名解析使用的是udp協(xié)議。查看Filter表信息,顯示如下。student@ubuntu:/etc/iptables$sudoiptables-L–v//查看規(guī)則ChainINPUT(policyDROP319packets,40985bytes)pktsbytestargetprotoptinoutsourcedestination262K13MACCEPTall--!eth1anyanywhereanywhere1358830KACCEPTtcp--eth1anyanywhereanywheretcpspt:www00ACCEPTudp--eth1anyanywhereanywhereudpspt:domain┆19在主機(jī)瀏覽器中再使用IP地址與域名測(cè)試,圖12.8所示是測(cè)試顯示結(jié)果,其中上部分是直接使用IP地址,下半部分是使用域名。205.存儲(chǔ)/恢復(fù)iptables表iptables設(shè)置的規(guī)則在系統(tǒng)重新啟動(dòng)后將消失,因此必須進(jìn)行規(guī)則保存。student@ubuntu:~$sudosh-c"iptables-save>iptabels-rule“iptables-save是存儲(chǔ)規(guī)則的命令,但默認(rèn)是在屏幕顯示,因此要使用輸出重定向符定向到文件。如果要恢復(fù)保存的規(guī)則,如下。student@ubuntu:~$sudosh-c"iptables-restore>iptabels-rule"21任務(wù)2使用ufw防火墻ufw是Ubuntu下的一個(gè)簡(jiǎn)易的防火墻配置工具,底層還是調(diào)用iptables來(lái)處理的,雖然功能較簡(jiǎn)單,但對(duì)桌面型應(yīng)用來(lái)說(shuō)比較實(shí)用,基本常用功能都有,使用也較為容易。演示22相關(guān)知識(shí)iptables機(jī)制iptables能夠?yàn)長(zhǎng)inux個(gè)人計(jì)算機(jī)系統(tǒng)創(chuàng)建一個(gè)防火墻,也可以為一個(gè)子網(wǎng)創(chuàng)建防火墻以保護(hù)其它的系統(tǒng)平臺(tái)。iptables只讀取數(shù)據(jù)包頭,不會(huì)給信息流增加負(fù)擔(dān),也無(wú)需進(jìn)行驗(yàn)證。23相關(guān)知識(shí)1.表、攔截點(diǎn)、鏈iptables將許多組繁雜的規(guī)則集成組織成容易管理的形式,以便管理員可以進(jìn)行分組測(cè)試,或關(guān)閉、啟動(dòng)某組規(guī)則。Linux核心的包處理流程中,共設(shè)置了五個(gè)攔截點(diǎn)(hookpoints),分別是PREROUTING、INPUT、FORWARD、POSTROUTING以及OUTPUT。內(nèi)建鏈只能作用在這些攔截點(diǎn);可以針對(duì)每個(gè)攔截點(diǎn)設(shè)置一系列處理規(guī)則,每條規(guī)則各代表一次影響(或監(jiān)測(cè))包處理流程的機(jī)會(huì)。攔截點(diǎn)的作用,以及各攔截適合處理的包類型,見(jiàn)表。攔截點(diǎn)適合處理的包類型FORWARD要通過(guò)主機(jī)的包,從一個(gè)網(wǎng)絡(luò)接口進(jìn)去,然后從另一個(gè)網(wǎng)絡(luò)接口出去INPUT即將交給本機(jī)進(jìn)程處理的包OUTPUT本機(jī)進(jìn)程剛剛產(chǎn)生的包POSTROUTING即將從網(wǎng)絡(luò)接口發(fā)出的包PREROUTING剛剛抵達(dá)網(wǎng)絡(luò)接口的有效包24另一面,為用戶操作方便,iptables依據(jù)應(yīng)用內(nèi)建三個(gè)表:filter、nat以及mangle,每個(gè)表都被預(yù)先設(shè)置了一或多個(gè)代表各攔截點(diǎn)的鏈。例如,filter預(yù)設(shè)的三個(gè)FORWARD、INPUT、OUTPUT鏈。這三個(gè)內(nèi)建表的作用,參考表拓展:我們常看到很多資料有著“nat表格的PREROUTING鏈”這樣的提法,隱喻著鏈?zhǔn)菍儆诒砀瘛H欢?,鏈與表格兩者之間并沒(méi)有統(tǒng)屬關(guān)系,最多只有隱諱的關(guān)聯(lián)性而已。鏈(chains)的真正含意是“包(package)路徑上的攔截點(diǎn)”,而表格(tables)則是象征“處理效果”。然而,為了表達(dá)上的方便,這里仍免不了出現(xiàn)“某表格的某鏈”之類的表述。表用途說(shuō)明nat已經(jīng)“連線追蹤”(connettiontracking)機(jī)制提供的線索來(lái)修改包的來(lái)源地址或目的地址,以達(dá)成連線追蹤的效果,nat表內(nèi)建的鏈PREROUTING、POSTROUTING以及OUTPUT。filter用于設(shè)定“入境、穿越、出境”三種性質(zhì)的處理原則,內(nèi)建的filter表的鏈包括INPUT、FORWARD以及OUTPUT。使用iptables時(shí),如果沒(méi)有刻意以-t指出要操作的表,iptables就假設(shè)你要操作filter表mangle用于執(zhí)行特殊的包內(nèi)容修改,例如裁掉IPoptions(需搭配擴(kuò)展模組)mangle表內(nèi)建的鏈包括PREROUTING、INPUT、FORWARD、POSTROUTING以及OUTPUT25圖10.6、10.7、10.8所示分別展示了表與鏈的三種有效組合,以及各種組合所象征的包處理流程。其中圖12.6所示是包經(jīng)過(guò)“網(wǎng)絡(luò)地址轉(zhuǎn)換”(NAT)的流程,相關(guān)鏈?zhǔn)亲饔糜趎at表。圖10.7所示是包流經(jīng)“包過(guò)濾系統(tǒng)”的流程,相關(guān)鏈?zhǔn)亲饔糜趂ilter(過(guò)濾)表。圖10.8所示是包流經(jīng)“包內(nèi)容調(diào)整系統(tǒng)”的流程,相關(guān)鏈?zhǔn)亲饔糜趍angle表。但為了講述簡(jiǎn)便,本書(shū)將不詳細(xì)介紹mangle表。圖10.6nat表與相關(guān)鏈圖10.7filter表與相關(guān)鏈圖10.8mangle表與相關(guān)鏈262.包(package)的流程當(dāng)包流經(jīng)鏈時(shí),必須依序通過(guò)該鏈里每一條規(guī)則的檢驗(yàn)。若包符合某條規(guī)則的“篩選條件”(match),則將包交給該規(guī)則的“目標(biāo)”(target)來(lái)處理,否則,就繼續(xù)由同鏈里的下一條規(guī)則予以檢驗(yàn)。倘若包順利通過(guò)鏈里的所有規(guī)則(不符合任何規(guī)則的篩選條件),則以鏈結(jié)的“策略”。包實(shí)際會(huì)經(jīng)過(guò)哪些鏈,取決于包本身的性質(zhì)(轉(zhuǎn)交、輸入、輸出、繞回),表12.3到表12.6分別列出各種性質(zhì)包的路徑順序。圖12.6、圖12.7和圖12.8所示是單看特定表時(shí),包如何通過(guò)該表各鏈的詳細(xì)流程。27iptables語(yǔ)法iptables的語(yǔ)法相當(dāng)?shù)亩?,這些語(yǔ)法分成規(guī)則清除、定義政策以及新增與插入規(guī)則、三部分來(lái)說(shuō)明1.清除規(guī)則與觀察規(guī)則1)觀察規(guī)則iptables在一開(kāi)始的時(shí)候,應(yīng)該是沒(méi)有規(guī)則的,不過(guò),也可能在安裝的時(shí)候就有選擇系統(tǒng)自動(dòng)幫您建立防火墻機(jī)制,此時(shí)系統(tǒng)就會(huì)有預(yù)設(shè)的防火墻規(guī)則。查看規(guī)則命令格式:iptables[-ttables][-L][-n]參數(shù)說(shuō)明:-t:后面接iptables的table,例如nat或filter,如果沒(méi)有-ttable
,那么默認(rèn)就是-tfilter這個(gè)table;-L:列出目前的table的規(guī)則;-n:不進(jìn)行IP與HOSTNAME的轉(zhuǎn)換,屏幕顯示訊息的速度會(huì)快很多。-v顯示規(guī)則詳細(xì)信息。282)清除規(guī)則清除規(guī)則命令格式:iptables[-ttables][-FXZ]參數(shù)說(shuō)明:-F:清除所有的已訂定的規(guī)則;-X:殺掉所有使用者建立的chain(應(yīng)該說(shuō)的是tables);-Z:將所有的鏈的計(jì)數(shù)與流量統(tǒng)計(jì)都清零。例,清除filter表規(guī)則student@ubuntu:~$sudoiptables–F//清除默認(rèn)表filter所有的設(shè)置規(guī)則student@ubuntu:~$sudoiptables–X//刪除表filter中用戶建立的鏈student@ubuntu:~$sudoiptables–Z//將表filter計(jì)數(shù)與流量統(tǒng)計(jì)都清零請(qǐng)注意,如果在遠(yuǎn)程連機(jī)的時(shí)候管理iptables,這三個(gè)指令必須要用scripts來(lái)連續(xù)執(zhí)行,不然肯定會(huì)讓被主機(jī)擋在門外。292.定義政策定義規(guī)則命令格式:iptables[-ttables][-P][INPUT,OUTPUT,FORWARD,PREROUTING,OUTPUT,POSTROUTING][ACCEPT,DROP]參數(shù)說(shuō)明:-P:定義政策(Policy)。注意,這個(gè)P為大寫(xiě);INPUT:數(shù)據(jù)包為輸入主機(jī)的方向;OUTPUT:數(shù)據(jù)包為輸出主機(jī)的方向;FORWARD:數(shù)據(jù)包為不進(jìn)入主機(jī)而向外再傳輸出去的方向;PREROUTING:在進(jìn)入路由之前進(jìn)行的工作;OUTPUT:數(shù)據(jù)包為輸出主機(jī)的方向;POSTROUTING:在進(jìn)入路由之后進(jìn)行的工作;ACCEPT:放任數(shù)據(jù)包進(jìn)入下以階段處理;DROP:終結(jié)包的后續(xù)流程。鏈的策略主要有ACCEPT與DROP,對(duì)于自訂鏈的策略都固定是RETURN,不能改變。303.新增與插入規(guī)則新增與插入規(guī)則較語(yǔ)法復(fù)雜,大概格式是:命令+操作表格+過(guò)濾條件+處置動(dòng)作構(gòu)成。具體格式如下:iptables[-tfilter][-AIINPUT,OUTPUT,FORWARD][-iointerface][-ptcp,udp,icmp,all][-sIP/network][--sportports][-dIP/network][--dportports]-j[ACCEPT,DROP]參數(shù)說(shuō)明:-A:新增加一條規(guī)則,該規(guī)則增加在最后面,例如原本已經(jīng)有四條規(guī)則,使用-A就可以加上第五條規(guī)則!-I:插入一條規(guī)則,如果沒(méi)有設(shè)定規(guī)則順序,預(yù)設(shè)是插入變成第一條規(guī)則,例如原本有四條規(guī)則,使用-I則該規(guī)則變成第一條,而原本四條變成2~5INPUT:規(guī)則設(shè)定為filtertable的INPUT鏈OUTPUT:規(guī)則設(shè)定為filtertable的OUTPUT鏈FORWARD:規(guī)則設(shè)定為filtertable的FORWARD鏈-i:設(shè)定數(shù)據(jù)包進(jìn)入的網(wǎng)絡(luò)接口-o:設(shè)定數(shù)據(jù)包流出的網(wǎng)絡(luò)接口Interface:網(wǎng)絡(luò)卡接口,例如eth0,eth1,ppp0等31-p:請(qǐng)注意,小寫(xiě),數(shù)據(jù)包的協(xié)議。tcp:數(shù)據(jù)包為TCP協(xié)議的包;upd:數(shù)據(jù)包為UDP協(xié)議的包;icmp:數(shù)據(jù)包為ICMP協(xié)議;all:表示為所有的包。-s:來(lái)源數(shù)據(jù)包的IP或者是Network(網(wǎng)域)--sport:來(lái)源數(shù)據(jù)包的端口號(hào),也課使用port1:port2,如21:23,表示允許21,22,23通過(guò)-d:目標(biāo)主機(jī)的IP或者是Network(網(wǎng)域)--dport:目標(biāo)主機(jī)的port號(hào)碼-j:動(dòng)作,通常是以下的動(dòng)作;ACCEPT:接受該封包DROP:丟棄封包LOG:將該封包的信息記錄下來(lái)(默認(rèn)記錄到/var/log/messages文件)以上新增與插入規(guī)則只是針對(duì)主機(jī)設(shè)置的這一部分,還有更多的,比如針對(duì)NAT的規(guī)則、針對(duì)硬件地址(MAC)分析規(guī)則等需要參考資料。324.保存與恢復(fù)防火墻規(guī)則這主要涉及兩個(gè)iptables命令。1)保存規(guī)則iptables-save>將防火墻機(jī)制儲(chǔ)存成那個(gè)文件,該文件為ASCII格式,可以進(jìn)入查看。2)恢復(fù)規(guī)則iptables-restore<將那個(gè)防火墻文件的規(guī)則讀入目前的Linux主機(jī)環(huán)境中。33拓展提高1)構(gòu)建一個(gè)更完善的防火墻;2)網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT);3)iptables與Squid透明代理;4)使用FireStarter防火墻。34任務(wù)1構(gòu)建一個(gè)更完善的防火墻使用iptables搭建簡(jiǎn)單防火墻已經(jīng)能夠完成本地局域網(wǎng)相互訪問(wèn),Linux主機(jī)也能夠訪問(wèn)Internet,但如果Linux主機(jī)還提供Web、郵件服務(wù)等服務(wù),簡(jiǎn)單服務(wù)器設(shè)置能滿足要求嗎?另外,一些更安全的規(guī)則也應(yīng)該考慮。351.主機(jī)提供服務(wù)以下過(guò)程要在Linux主機(jī)保證運(yùn)行了Apache服務(wù)器。1)配置前測(cè)試在上層局域網(wǎng)的主機(jī)6上打開(kāi)瀏覽器,輸入Linux主機(jī)地址66,訪問(wèn)Linux主機(jī)web站點(diǎn);在本地局域網(wǎng)主機(jī)上打開(kāi)瀏覽器,輸入Linux主機(jī)地址,訪問(wèn)Linux主機(jī)web站點(diǎn)。以上兩種操作,正常情況上層局域網(wǎng)的主機(jī)不能訪問(wèn)Web站點(diǎn),而本地局域可以正確訪問(wèn)。2)添加規(guī)則允許Web服務(wù)student@ubuntu:~$sudoiptables-AINPUT-ieth1-ptcp--dport80-jACCEPT允許eth1上目的端口是80的數(shù)據(jù)包進(jìn)入主機(jī)。363)添加規(guī)則后測(cè)試在上層局域網(wǎng)的主機(jī)打開(kāi)瀏覽器,輸入Linux主機(jī)地址66,訪問(wèn)Linux主機(jī)web站點(diǎn);4)添加規(guī)則允許郵件服務(wù)郵件服務(wù)使用的是25、110兩端口,添加規(guī)則允許進(jìn)入。student@ubuntu:~$sudoiptables-AINPUT-ieth1-ptcp--dport25-jACCEPTstudent@ubuntu:~$sudoiptables-AINPUT-ieth1-ptcp--dport110-jACCEPT對(duì)于其他服務(wù),依照上述方法打開(kāi)相應(yīng)的端口。372、安全規(guī)則1)限制icmp包icmp包通常用于網(wǎng)絡(luò)測(cè)試等,黑客常常采用icmp進(jìn)行攻擊。當(dāng)其他主機(jī)使用ping命令(ping命令使用icmp包)測(cè)試時(shí),主機(jī)不響應(yīng)。student@ubuntu:~$sudoiptables–IINPUT-picmp–icmp-type8–jDROP注意,這里使用的是-I參數(shù)把規(guī)則添加到第一條。如果要保護(hù)局域網(wǎng)絡(luò)其他主機(jī)對(duì)ping命令不響應(yīng)可以使用如下規(guī)則。student@ubuntu:~$sudoiptables–IFORWARD-picmp–icmp-type8–jDROP添加完上述規(guī)則后在本地局域網(wǎng)ping一下Linux主機(jī),測(cè)試一下。其實(shí)完全限制也并不可取,對(duì)于上述兩條規(guī)則更好的是采用limit匹配擴(kuò)展加以限制,規(guī)則如下。student@ubuntu:~$sudoiptables-AFORWARD-picmp-mlimit--limit1/s--limit-burst10-jACCEPTstudent@ubuntu:~$sudoiptables-AFORWARD-picmp-mlimit--limit1/s--limit-burst10-jACCEPT對(duì)不管來(lái)自哪里的icmp包都進(jìn)行限制,允許每秒通過(guò)一個(gè)包,該限制觸發(fā)的條件是10個(gè)包。382)處理ip碎片在TCP/IP通訊過(guò)程中,每一個(gè)網(wǎng)絡(luò)接口都有一個(gè)最大傳輸單元(MTU),這個(gè)參數(shù)定義了可以通過(guò)的數(shù)據(jù)包的最大尺寸。如果一個(gè)數(shù)據(jù)包大于這個(gè)參數(shù)值時(shí),系統(tǒng)會(huì)將其劃分成更小的數(shù)個(gè)數(shù)據(jù)包(稱之為ip碎片)來(lái)傳輸,而接收方則對(duì)這些ip碎片再進(jìn)行重組以還原整個(gè)包。完全允許ip碎片通過(guò)是有安全隱患的,對(duì)于這一點(diǎn)可以采用iptables的匹配擴(kuò)展來(lái)進(jìn)行限制。student@ubuntu:~$sudoiptables-AINPUT-f-mlimit--limit100/s--limit-burst100-jACCEPTstudent@ubuntu:~$sudoiptables-AFORWARD-f-mlimit--limit100/s--limit-burst100-jACCEPT對(duì)不管來(lái)自哪里的ip碎片都進(jìn)行限制,允許每秒通100個(gè)ip碎片,該限制觸發(fā)的條件是100個(gè)ip碎片。39任務(wù)2網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT)到目前為止,還有一個(gè)非常重要的問(wèn)題,就是局域網(wǎng)主機(jī)之間互訪,局域網(wǎng)主機(jī)通過(guò)防火墻主機(jī)訪問(wèn)Internet,或者Internet主機(jī)通過(guò)防火墻訪問(wèn)本地局域網(wǎng)主機(jī),要實(shí)現(xiàn)這就涉及到網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT)。401.路由器網(wǎng)段的局域網(wǎng)與網(wǎng)段的局域網(wǎng)出于不同的網(wǎng)段,要實(shí)現(xiàn)兩者之間的相互訪問(wèn)必須要求Linux防火墻主機(jī)能夠?qū)崿F(xiàn)路由功能,圖12.12所示是一種典型多個(gè)局域網(wǎng)網(wǎng)絡(luò)拓?fù)鋱D。411)配置局域網(wǎng)主機(jī)實(shí)現(xiàn)實(shí)驗(yàn)環(huán)境網(wǎng)段192.168.0的局域網(wǎng)主機(jī)的網(wǎng)關(guān)要求是,網(wǎng)段192.168.1的局域網(wǎng)主機(jī)的網(wǎng)關(guān)要求是66。如果主機(jī)是Linux,添加一條網(wǎng)絡(luò)路由方法如下。student@ubuntu:~$routeadd-netnetmaskgwdeveth0如果主機(jī)是Windows,要添加一條網(wǎng)絡(luò)路由,在終端輸入如下命令:routeaddmaskmetric1422)設(shè)置Linux防火墻主機(jī)要使Linux主機(jī)啟動(dòng)路由能力,必須將ip_forward功能打開(kāi),執(zhí)行下面命令就可以。root@ubuntu:~#echo"1">/proc/sys/net/ipv4/ip_forward注意,開(kāi)啟路由必須在root用戶下,使用sudo工具是完成不了的。如果想要在開(kāi)機(jī)的時(shí)候就將ip_forward打開(kāi),可以修改/etc/sysctl.conf文件,把以下語(yǔ)句前的注釋符去掉。net.ipv4.ip_forward=1433)測(cè)試在主機(jī)使用ping命令。student@ubuntu:~$ping-c36┆3packetstransmitted,3received,0%packetloss,time1998msrttmin/avg/max/mdev=0.589/0.704/0.830/0.101ms結(jié)果顯示能夠訪問(wèn)另外局域網(wǎng)主機(jī)。442.SourceNAT通常情況,使用局域網(wǎng)的私有IP地址是不能直接在Internet上使用。到目前為止,不同局域網(wǎng)主機(jī)已經(jīng)能夠互相訪問(wèn)了,但要使局域網(wǎng)主機(jī)能夠訪問(wèn)Internet站點(diǎn)(比如,百度搜索網(wǎng)站)還需要Linux主機(jī)具有SourceNAT(SNAT)功能,其實(shí)通常的NAT服務(wù)器就是指這種服務(wù)器。45圖12.13所示局域網(wǎng)連接Internet兩種方式,對(duì)于大型企業(yè)單位,由于網(wǎng)絡(luò)單元眾多,更多的是采取第二種多層局域網(wǎng)絡(luò)方式,目前我們學(xué)校機(jī)房就是采用這種方式,這里采用第二種模式作為SNAT實(shí)驗(yàn)環(huán)境。461)配置主機(jī)實(shí)現(xiàn)實(shí)驗(yàn)環(huán)境網(wǎng)段192.168.0的局域網(wǎng)主機(jī)的網(wǎng)關(guān)要求是,上層網(wǎng)段192.168.1的局域網(wǎng)主機(jī)的網(wǎng)關(guān)應(yīng)該是更上層局域網(wǎng)地址或直接Internet公網(wǎng)地址。2)設(shè)置Linux防火墻主機(jī)SourceNAT的動(dòng)作用“-jSNAT'”來(lái)指定,同時(shí)“--tosource'”指定一個(gè)IP地址或一段IP地址以及一個(gè)可選的端口。student@ubuntu:~$sudoiptables-tnat-APOSTROUTING-oeth1-jSNAT–to66有一個(gè)SNAT的特例叫做包偽裝它只用于動(dòng)態(tài)分配的IP地址,例如撥號(hào)上網(wǎng)。student@ubuntu:~$iptables-tnat-APOSTROUTING-oppp0-jMASQUERADE473)測(cè)試在主機(jī)使用ping命令。student@ubuntu:~$ping-c3如果能夠ping通,說(shuō)明SourceNAT配置成功,局域網(wǎng)主機(jī)能夠訪問(wèn)Internet。483.DestinationNAT局域網(wǎng)主機(jī)可以訪問(wèn)Internet上的Web、Mail的服務(wù)器了,考慮安全性,Web服務(wù)器通常放在Linux防火墻主機(jī)后部的局域網(wǎng)內(nèi)部主機(jī)上,目前為止,局域網(wǎng)內(nèi)部主機(jī)可以連接Internet了,但I(xiàn)nternet上主機(jī)還不能夠訪問(wèn)Linux防火墻主機(jī)后部的Web服務(wù)器,要實(shí)現(xiàn)Internet能夠訪問(wèn)局域網(wǎng)上的Web服務(wù)器,Linux主機(jī)還要具有DestinationNAT(DNAT)功能。491)實(shí)驗(yàn)環(huán)境實(shí)驗(yàn)環(huán)境與SourceNAT相同。2)設(shè)置Linux防火墻主機(jī)DNAT動(dòng)作用“-jDNAT”來(lái)指定使用同時(shí)用“--todestination'”選項(xiàng)指定一個(gè)IP地址或一段IP地址,以及可以配選一個(gè)端口或一段端口值域。student@ubuntu:~$sudoiptables-tnat-APREROUTING-ieth1-ptcp--dport80-jDNAT--to:80如果端口監(jiān)測(cè)標(biāo)準(zhǔn)端口80而是8080,要求修改為以下命令。student@ubuntu:~$sudoiptables-tnat-APREROUTING-ieth1-ptcp--dport80-jDNAT--to:8080503)檢測(cè)查看nat表信息。以上是配置了DNAT與SNAT的nat表顯示情況。如果沒(méi)有問(wèn)題,在上層局域網(wǎng)上主機(jī)瀏覽器中輸入66就可以訪問(wèn)局域網(wǎng)主機(jī)上的Web服務(wù)器(為檢測(cè)準(zhǔn)確,首先應(yīng)確定66沒(méi)有運(yùn)行Web服務(wù)器)。student@ubuntu:~$sudoiptables-L-tnat-vChainPREROUTING(policyACCEPT64packets,6157bytes)pktsbytestargetprotoptinoutsourcedestination00DNATtcp--eth1anyanywhereanywheretcpdpt:ChainPOSTROUTING(policyACCEPT27packets,1800bytes)pktsbytestargetprotoptinoutsourcedestination15911SNATall--anyeth1/24anywhereto:66ChainOUTPUT(policyACCEPT24packets,1610bytes)pktsbytestargetprotoptinoutsourcedestination514)用Shell腳本處理規(guī)則一個(gè)iptables防火墻規(guī)則眾多,可以使用Shell腳本簡(jiǎn)化工作。#!/bin/bash#這個(gè)script是建立防火墻,基本規(guī)則定義為“拒絕所有,開(kāi)放特定”的模式
EXTIF="eth2"#定義連接Internet或上層網(wǎng)絡(luò)接口
INIF="eth0"#內(nèi)部網(wǎng)絡(luò)接口
INNET="/24"
#內(nèi)部網(wǎng)段Open_ports="8011025"#自己機(jī)器對(duì)外開(kāi)放的端口Allow_ports="80532021"#internet的數(shù)據(jù)可以進(jìn)入自己機(jī)器的端口#清除所有的防火墻規(guī)則
/sbin/iptables-F
/sbin/iptables-X
/sbin/iptables-Z
/sbin/iptables-F-tnat
/sbin/iptables-X-tnat
/sbin/iptables-Z-tnat#定義防火墻策略
/sbin/iptables-PINPUT
DROP
/sbin/iptables-POUTPUT
ACCEPT
/sbin/iptables-PFORWARDACCEPT
/sbin/iptables-tnat-PPREROUTING
ACCEPT
/sbin/iptables-tnat-PPOSTROUTINGACCEPT/sbin/iptables-tnat-POUTPUT
ACCEPT#先允許信任網(wǎng)域,這包含lo這個(gè)內(nèi)部循環(huán)接口,以及剛剛指定的內(nèi)部接口網(wǎng)絡(luò)#
重點(diǎn)是可以啟動(dòng)Linux成為NAT主機(jī)/sbin/iptables-AINPUT-ilo
-jACCEPT
524)用Shell腳本處理規(guī)則一個(gè)iptables防火墻規(guī)則眾多,可以使用Shell腳本簡(jiǎn)化工作。
if["$INIF"!=""];then
/sbin/iptables-AINPUT-i$INIF-jACCEPT
echo"1">/proc/sys/net/ipv4/ip_forward
/sbin/iptables-tnat-APOSTROUTING-s$INNET-o$EXTIF-jMASQUERADE
fi#允許ICMP封包與允許已建立的聯(lián)機(jī)通過(guò)
/sbin/iptables-AINPUT-mstate--stateESTABLISHED,RELATED-j
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年集體土地租賃修建公園協(xié)議
- 2024年陜西省規(guī)范化離婚合同范本一
- 2025年度大巴車租賃合同(含車輛改裝服務(wù))2篇
- 2025年度智能家電產(chǎn)品全國(guó)銷售總代理協(xié)議3篇
- 2024年門店合規(guī)與法律風(fēng)險(xiǎn)管理合同
- 重癥監(jiān)護(hù)及ICU護(hù)理質(zhì)量控制
- 2024瓷磚直銷協(xié)議范本版B版
- 2024年版美食廣場(chǎng)聯(lián)營(yíng)合同
- 2024年精裝修浴室工程承包合同版B版
- 2024短期財(cái)務(wù)周轉(zhuǎn)貸款協(xié)議范本一
- 4R危機(jī)管理理論
- FANUC機(jī)器人培訓(xùn)教程(完成版)
- 中醫(yī)診療技術(shù)操作規(guī)程
- 樂(lè)理知識(shí)考試題庫(kù)130題(含答案)
- 2024年《多媒體技術(shù)與應(yīng)用》 考試題庫(kù)及答案
- (完整)北京版小學(xué)英語(yǔ)1至6年級(jí)詞匯(帶音標(biāo))
- 終止合同告知函 委婉
- 0-3歲嬰幼兒基礎(chǔ)護(hù)理智慧樹(shù)知到期末考試答案章節(jié)答案2024年杭州師范大學(xué)
- 面包烘焙原料供應(yīng)采購(gòu)合同案例
- 工商企業(yè)管理畢業(yè)論文范文(篇一)
- 基于mRNA-LNP技術(shù)的(細(xì)胞)免疫治療產(chǎn)品開(kāi)發(fā)指南
評(píng)論
0/150
提交評(píng)論