《圖文詳解防火墻及NAT服務(wù)》要點:
本文介紹了圖文詳解防火墻及NAT服務(wù),希望對您有用。如果有疑問,可以聯(lián)系我們。
1. 關(guān)于防火墻
防火墻,其實就是用于實現(xiàn)Linux下訪問控制的功能的,它分為硬件和軟件防火墻兩種.無論是在哪個網(wǎng)絡(luò)中,防火墻工作的地方一定是在網(wǎng)絡(luò)的邊緣.而我們的任務(wù)就是需要去定義到底防火墻如何工作,這就是防火墻的策略、規(guī)則,以達到讓它對出入網(wǎng)絡(luò)的IP、數(shù)據(jù)進行檢測.
目前市面上比較常見的有三、四層的防火墻,叫做網(wǎng)絡(luò)層的防火墻,還有七層的防火墻,其實是代理層的網(wǎng)關(guān).對于TCP/IP的七層模型來講,我們知道第三層是網(wǎng)絡(luò)層,三層的防火墻會在這層對源地址和目標地址進行檢測.但對于七層的防火墻,不管你源端口或者目標端口,源地址或者目標地址是什么,都將對你所有的東西進行檢查.所以,對于設(shè)計原理來講,七層防火墻更加安全,但是這卻帶來了效率更低.所以市面上通常的防火墻方案,都是兩者相互結(jié)合的.
2. iptables的發(fā)展
包括iptables及其前身在內(nèi),這些都是工作在用戶空間中,定義規(guī)則的工具,本身并不算是防火墻.它們定義的規(guī)則,并且可以讓在內(nèi)核空間當(dāng)中的“Netfilter”來讀取,從而實現(xiàn)讓防火墻工作.而放入內(nèi)核的地方必須要是特定的位置,必須是TCP/IP的協(xié)議棧所經(jīng)過的地方——Netfilter.
iptables只是防火墻的管理工具,在內(nèi)核中真正實現(xiàn)防火墻功能的是Netfilter.
對Linux而言,TCP/IP協(xié)議棧存在于內(nèi)核當(dāng)中,這就意味著對數(shù)據(jù)報文的處理是在內(nèi)核中處理的,也就是說防火墻必須在工作在內(nèi)核中,防火墻必須在內(nèi)核中完成TCP/IP報文所流進的位置,使用規(guī)則去檢查,才真正能工作起來.
3. iptables的結(jié)構(gòu)
從上面的發(fā)展我們知道了作者選擇了五個位置,來作為控制的地方,但是你有沒有發(fā)現(xiàn),其實前三個位置已經(jīng)基本上能將路徑徹底封鎖了,但是為什么已經(jīng)在進出的口設(shè)置了關(guān)卡之后還要在內(nèi)部設(shè)置關(guān)卡呢?由于數(shù)據(jù)包尚未進行路由決策,還不知道數(shù)據(jù)要走向哪里,所以在進出口是沒有辦法實現(xiàn)數(shù)據(jù)過濾的.所以要在內(nèi)核空間里設(shè)置轉(zhuǎn)發(fā)的關(guān)卡,進入用戶空間的關(guān)卡,從用戶空間出去的關(guān)卡.那么,既然他們沒有什么用,我們?yōu)槭裁催€要放置他們呢?因為在進行NAT/DNAT的情況下,目標地址轉(zhuǎn)換必須在路由之前轉(zhuǎn)換.所以我們必須在外網(wǎng)而后內(nèi)網(wǎng)的接口處進行設(shè)置關(guān)卡.
Netfilter規(guī)定的這五個位置也叫五個規(guī)則鏈:
iptable的結(jié)構(gòu):在數(shù)據(jù)包過濾表中,規(guī)則被分組放在我們所謂的鏈中.鏈,就是一個規(guī)則的列表(如圖所示).
要設(shè)置一個Linux防火墻,就要使用規(guī)則,每個規(guī)則指定在包中與什么匹配,以及對包執(zhí)行什么操作.那么什么是規(guī)則呢?因為iptables利用的是數(shù)據(jù)包過濾的機制,所以它會分析數(shù)據(jù)包的報頭數(shù)據(jù).根據(jù)報頭數(shù)據(jù)與定義的規(guī)則來決定該數(shù)據(jù)包是否可以通過或者是被丟棄.也就是說,根據(jù)數(shù)據(jù)包的分析資料來與預(yù)先定義的規(guī)則內(nèi)容進行“比對”,若數(shù)據(jù)包數(shù)據(jù)與規(guī)則內(nèi)容相匹配則進行相應(yīng)的處理,否則就繼續(xù)下一條規(guī)則的比對.重點在于比對與比對的順序.
什么是表和鏈呢?這得由iptables的名稱說起,為什么稱為iptables呢?因為它里面包含有多個表格(table),每個表格都定義出自己的默認策略與規(guī)則,且每個表格的用途都不相同.iptables包含四個表,五個鏈.其中表是按照對數(shù)據(jù)包的處理功能區(qū)分的,鏈是按照不同的Hook點來區(qū)分的,表和鏈實際上是netfilter的兩個維度.
四個規(guī)則表分別為:Filter、NAT、Mangle、Raw,默認表是Filter(沒有指定表的時候就是Filter表). 表的處理優(yōu)先級為:Raw>Mangle>NAT>Filter
常用的三個表:
iptables采用的是數(shù)據(jù)包過濾機制工作的,所以它會對數(shù)據(jù)包的報頭信息進行分析,并根據(jù)我們預(yù)先設(shè)定的規(guī)則進行匹配來決定是否對數(shù)據(jù)包的處理方式.
防火墻是層層過濾的,實際是按照匹配規(guī)則的順序從上到下,從前到后進行過濾的.如果匹配上規(guī)則,即明確表明是阻止還是通過,數(shù)據(jù)包就不在向下繼續(xù)進行匹配了.如果規(guī)則中沒有明確判斷出處理結(jié)果,也就是說不匹配當(dāng)前規(guī)則,那么就繼續(xù)向下進行匹配,直到匹配默認的規(guī)則,得到最后的處理結(jié)果.所以說規(guī)則的順序至關(guān)重要.
防火墻的默認規(guī)則是所有的規(guī)則均不匹配時,才會執(zhí)行的規(guī)則.
指令常用操作選項:
常用封包比對參數(shù):
其它選項:
操作實例:禁止SSH遠程登錄
注意:通過命令行添加的防火墻指令僅僅是臨時生效的,系統(tǒng)重啟即失效.
處理動作包括:
指令格式示意圖:
兩種增加規(guī)則選項的差別:
-A chain rule-specification:添加規(guī)則到指定規(guī)則鏈的結(jié)尾,成為最后一條規(guī)則.
-I chain [rulenum] rule-specification:如果沒有指定序號,則添加的規(guī)則將成為對應(yīng)鏈中的第一條規(guī)則.如果指定了序號,則成為該序號上的規(guī)則,而原來位于該序號的規(guī)則將往后移一位.
操作實例:禁止PING本機(ping指令屬于ICMP協(xié)議,其類型為“8”)
1. 配置案例講解
生產(chǎn)環(huán)境配置防火墻主要有兩種模式:逛公園及看電影模式
可以看出,還是第二種模式更加的嚴格和安全.其本質(zhì)區(qū)別就是防火墻的默認規(guī)則是允許還是拒絕.
企業(yè)面試題:自定義鏈處理“syn”攻擊
2. 工作中如何維護防火墻
實際生產(chǎn)中,一般第一次添加規(guī)則是以命令行或者腳本的方式進行,然后一次性的保存成配置文件,之后的維護工作就是圍繞著對該配置文件的修來來進行.
3. 配置網(wǎng)關(guān)
第一步:首先,作為網(wǎng)關(guān)的主機除了要具備雙網(wǎng)卡并且能夠連接互聯(lián)網(wǎng)等物理條件外,還要確保將內(nèi)核的轉(zhuǎn)發(fā)功能打開.
另外,還要求Filter表的“FORWARD”鏈允許通過.
第二步:確保網(wǎng)關(guān)主機的相關(guān)模塊已經(jīng)加載
第三步:內(nèi)網(wǎng)服務(wù)器要能夠Ping通網(wǎng)關(guān)主機的內(nèi)外網(wǎng)卡.
第四步:在網(wǎng)關(guān)主機上配置規(guī)則(兩種方法).
至此,Linux網(wǎng)關(guān)主機配置完畢.
還有一種應(yīng)用,就是把外部IP地址及端口映射到內(nèi)部服務(wù)器的地址及端口(和共享上網(wǎng)的環(huán)境一樣).
要求:
企業(yè)應(yīng)用場景:
指定地址段
4. 端口映射
連接跟蹤表已滿,開始丟包的解決辦法:
一、關(guān)閉防火墻. 簡單粗暴,直接有效
二、加大防火墻跟蹤表的大小,優(yōu)化對應(yīng)的系統(tǒng)參數(shù)
轉(zhuǎn)載請注明本頁網(wǎng)址:
http://www.snjht.com/jiaocheng/4293.html