Iptables(以下簡(jiǎn)稱Iptables)是unix/linux自帶的一款優(yōu)秀且開放源代碼的完全自由的基于包過濾(對(duì)OSI模型的四層或者是四層以下進(jìn)行過濾)的防火墻工具,它的功能十分強(qiáng)大,使用非常靈活,可以對(duì)流入和流出服務(wù)器的數(shù)據(jù)包進(jìn)行很精細(xì)的控制。主要針對(duì)網(wǎng)絡(luò)訪問
iptables其實(shí)并不是真正的防火墻,我們可以把他理解為一個(gè)客戶端的代理,用戶是通過
iptables這個(gè)代理,將用戶的安全設(shè)定執(zhí)行到對(duì)應(yīng)的“安全框架”中,這個(gè)“安全框架”才是真正的防火墻。這個(gè)框架叫做“netfilter”。
- netfilter:內(nèi)核空間,是真正實(shí)現(xiàn)防火墻的功能。
- iptables:用戶空間,在/sbin/iptables存在的防火墻,通過iptables提供管理,修改,刪除或者插入規(guī)則。
用戶和內(nèi)核交互的一個(gè)工具就是iptables。實(shí)際生產(chǎn)環(huán)境中:
關(guān)閉Linux自身防火墻。(解決安全問題盡量不給服務(wù)器配置外網(wǎng)IP,需要訪問的話,就使用代理轉(zhuǎn)發(fā)。)因?yàn)楦卟l(fā),iptables會(huì)加大延遲。除非并發(fā)小,如果服務(wù)器必須處于公網(wǎng)??紤]開啟防火墻。
大并發(fā)的情況下,不能開iptables,影響性能,因?yàn)閕ptables是要消耗CPU的,可以考慮利用硬件防火墻提升架構(gòu)安全
一、iptables工作原理分類
主機(jī)防火墻:主要是用來防范單臺(tái)主機(jī)的進(jìn)出報(bào)文;-----filter表
網(wǎng)絡(luò)防火墻: 能夠?qū)崿F(xiàn)對(duì)進(jìn)出本網(wǎng)絡(luò)的所有主機(jī)報(bào)文加以防護(hù)----nat表
raw mangle nat filter
================================================================================
iptables缺點(diǎn):
(1)防火墻雖然可以過濾互聯(lián)網(wǎng)的數(shù)據(jù)包,但卻無法過濾內(nèi)部網(wǎng)絡(luò)的數(shù)據(jù)包。因此若有人從內(nèi)部網(wǎng)絡(luò)攻擊時(shí),防火墻沒有作用。
(2)電腦本身的操作系統(tǒng)亦可能因一些系統(tǒng)漏洞,使入侵者可以利用這些漏洞繞過防火墻過濾,從而入侵電腦。
(3)防火墻無法有效阻擋病毒攻擊,尤其是隱藏在數(shù)據(jù)中的病毒。
PS:沒有絕對(duì)安全的操作系統(tǒng),雖然防火墻有這些缺點(diǎn),但還是能阻擋大多數(shù)來自于外網(wǎng)的攻擊!
二、iptables工作流程
1、防火墻是一層層過濾的。實(shí)際是按照配置規(guī)則的順序從上到下,從前到后進(jìn)行過濾的。
2、如果匹配上了規(guī)則,即明確表明是阻止還是通過,此時(shí)數(shù)據(jù)包就不在向下匹配新規(guī)則了。
3、如果所有規(guī)則中沒有明確表明是阻止還是通過這個(gè)數(shù)據(jù)包,也就是沒有匹配上規(guī)則,向下進(jìn)行匹配,直到匹配默認(rèn)規(guī)則得到明確的阻止還是通過。
4、防火墻的默認(rèn)規(guī)則是對(duì)應(yīng)鏈的所有的規(guī)則執(zhí)行完以后才會(huì)執(zhí)行的(最后執(zhí)行的規(guī)則)。
三、iptables名詞和術(shù)語
什么是 iptables:
舉個(gè)例子,如果把Netfilter看成是某個(gè)小區(qū)的一棟樓。那么表(tables)就是樓里的其中的一套房子。這套房子"表(tables)"屬于這棟樓“Netfilter/iptables”。什么是表(tables):
表(tables)是鏈的容器,即所有的鏈(chains)都屬于其對(duì)應(yīng)的表(tables).如上,如果把Netfilter看成是某個(gè)小區(qū)的一棟樓.那么表(tables)就是樓里的其中的一套房子。什么是鏈(chains):
鏈(chains)是規(guī)則(Policys)的容器。如果把表(tables)當(dāng)作有一套房子,那么鏈(chains)就可以說是房子里的家具(柜子等)。什么是規(guī)則(Policy):
規(guī)則(Policy)就比較容易理解了,就是iptables系列過濾信息的規(guī)范和具體方法條款了.可以理解為柜子如何增加并擺放柜子?xùn)|西等。
基本術(shù)語如下表格所示:
| Netfilter/iptables | 表(tables) | 鏈(chains) | 規(guī)則(Policy) |
|---|---|---|---|
| 一棟樓 | 樓里的房子 | 房子里的柜子 | 柜子里衣服,擺放規(guī)則 |
四、iptables 表和鏈
默認(rèn)情況下,iptables根據(jù)功能和表的定義劃分包含三個(gè)表,filter,nat,mangle,其每個(gè)表又包含不同的操作鏈(chains )。 實(shí)際iptables包含4張表和五個(gè)鏈,主要記住filter即可。
1. 四個(gè)表
必須是小寫
raw ------------追蹤數(shù)據(jù)包, ----此表用處較少,可以忽略不計(jì)
mangle -------- 給數(shù)據(jù)包打標(biāo)記,做標(biāo)記
nat ---------網(wǎng)絡(luò)地址轉(zhuǎn)換即來源與目的的IP地址和port的轉(zhuǎn)換。
filter --------做過濾的,防火墻里面用的最多的表。表的應(yīng)用順序:raw ---> mangle ---> nat ---> filter
2. 五個(gè)鏈
(必須是大寫)鏈里面寫的是規(guī)則。
PREROUTING ---------------------進(jìn)路由之前數(shù)據(jù)包
INPUT -----------------就是過濾進(jìn)來的數(shù)據(jù)包(輸入)
FORWARD -----------------轉(zhuǎn)發(fā)
OUTPUT ---------------發(fā)出去的數(shù)據(jù)包
POSTROUTING --------------路由之后數(shù)據(jù)包所有的訪問都是按順序:
入站:比如訪問自身的web服務(wù)流量。先PREROUTING(是否改地址),再INPUT(是否允許)到達(dá)程序。
轉(zhuǎn)發(fā):經(jīng)過linux網(wǎng)關(guān)的流量.先PREROUTING(是否改地址),然后路由。轉(zhuǎn)發(fā)給FORWARD(轉(zhuǎn)發(fā)或者丟棄),最后經(jīng)過POSTROUTING(看看改不改地址。)
出站:源自linux自身的流量.先OUTPUT,再給POSTROUTING(是否改IP)。
規(guī)則順序:逐條匹配,匹配即停止。
3. 四表五鏈
raw表里面:
PREROUTING
OUTPUT
總結(jié):數(shù)據(jù)包跟蹤 內(nèi)核模塊iptables_rawmangel表里面有5個(gè)鏈:
PREROUTING
INPUT
FORWARD
OUTPUT
POSTROUTING
路由標(biāo)記用的表。內(nèi)核模塊iptables_manglenat表里面的鏈:
PREROUTING
INPUT
OUTPUT
POSTROUTING
轉(zhuǎn)換地址的表(改IP,改端口。當(dāng)網(wǎng)關(guān)使用的linux。保護(hù)內(nèi)外網(wǎng)流量。內(nèi)核模塊叫iptable_nat)filter表有三個(gè)鏈:重點(diǎn)
INPUT ---- #負(fù)責(zé)過濾所有目標(biāo)是本機(jī)地址的數(shù)據(jù)包通俗來說:就是過濾進(jìn)入主機(jī)的數(shù)據(jù)包
FORWARD ----#負(fù)責(zé)轉(zhuǎn)發(fā)經(jīng)過主機(jī)的數(shù)據(jù)包。起到轉(zhuǎn)發(fā)的作用
OUTPUT ----#處理所有源地址是本機(jī)地址的數(shù)據(jù)包通俗的講:就是處理從主機(jī)發(fā)出的數(shù)據(jù)包
總結(jié):根據(jù)規(guī)則來處理數(shù)據(jù)包,如轉(zhuǎn)或者丟。就是實(shí)現(xiàn)主機(jī)型防火墻的主要表。
內(nèi)核模塊 iptable_filter
