Iptables(以下簡(jiǎn)稱(chēng)Iptables)是unix/linux自帶的一款優(yōu)秀且開(kāi)放源代碼的完全自由的基于包過(guò)濾(對(duì)OSI模型的四層或者是四層以下進(jìn)行過(guò)濾)的防火墻工具择示,它的功能十分強(qiáng)大播揪,使用非常靈活,可以對(duì)流入和流出服務(wù)器的數(shù)據(jù)包進(jìn)行很精細(xì)的控制顾瞪。主要針對(duì)網(wǎng)絡(luò)訪問(wèn)
iptables其實(shí)并不是真正的防火墻展父,我們可以把他理解為一個(gè)客戶端的代理,用戶是通過(guò)
iptables
這個(gè)代理玲昧,將用戶的安全設(shè)定執(zhí)行到對(duì)應(yīng)的“安全框架”中栖茉,這個(gè)“安全框架”才是真正的防火墻。這個(gè)框架叫做“netfilter
”孵延。
- netfilter:內(nèi)核空間吕漂,是真正實(shí)現(xiàn)防火墻的功能。
- iptables:用戶空間尘应,在/sbin/iptables存在的防火墻惶凝,通過(guò)iptables提供管理,修改犬钢,刪除或者插入規(guī)則苍鲜。
用戶和內(nèi)核交互的一個(gè)工具就是iptables。實(shí)際生產(chǎn)環(huán)境中:
關(guān)閉Linux自身防火墻玷犹。(解決安全問(wèn)題盡量不給服務(wù)器配置外網(wǎng)IP混滔,需要訪問(wèn)的話,就使用代理轉(zhuǎn)發(fā)歹颓。)因?yàn)楦卟l(fā)坯屿,iptables會(huì)加大延遲。除非并發(fā)小巍扛,如果服務(wù)器必須處于公網(wǎng)领跛。考慮開(kāi)啟防火墻撤奸。
大并發(fā)的情況下吠昭,不能開(kāi)iptables,影響性能胧瓜,因?yàn)閕ptables是要消耗CPU的矢棚,可以考慮利用硬件防火墻提升架構(gòu)安全
一、iptables工作原理分類(lèi)
主機(jī)防火墻:主要是用來(lái)防范單臺(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)防火墻雖然可以過(guò)濾互聯(lián)網(wǎng)的數(shù)據(jù)包幻妓,但卻無(wú)法過(guò)濾內(nèi)部網(wǎng)絡(luò)的數(shù)據(jù)包。因此若有人從內(nèi)部網(wǎng)絡(luò)攻擊時(shí)劫拢,防火墻沒(méi)有作用肉津。
(2)電腦本身的操作系統(tǒng)亦可能因一些系統(tǒng)漏洞,使入侵者可以利用這些漏洞繞過(guò)防火墻過(guò)濾舱沧,從而入侵電腦妹沙。
(3)防火墻無(wú)法有效阻擋病毒攻擊,尤其是隱藏在數(shù)據(jù)中的病毒熟吏。
PS:沒(méi)有絕對(duì)安全的操作系統(tǒng)距糖,雖然防火墻有這些缺點(diǎn),但還是能阻擋大多數(shù)來(lái)自于外網(wǎng)的攻擊牵寺!
二悍引、iptables工作流程
1、防火墻是一層層過(guò)濾的帽氓。實(shí)際是按照配置規(guī)則的順序從上到下趣斤,從前到后進(jìn)行過(guò)濾的。
2黎休、如果匹配上了規(guī)則浓领,即明確表明是阻止還是通過(guò),此時(shí)數(shù)據(jù)包就不在向下匹配新規(guī)則了势腮。
3联贩、如果所有規(guī)則中沒(méi)有明確表明是阻止還是通過(guò)這個(gè)數(shù)據(jù)包,也就是沒(méi)有匹配上規(guī)則捎拯,向下進(jìn)行匹配泪幌,直到匹配默認(rèn)規(guī)則得到明確的阻止還是通過(guò)。
4署照、防火墻的默認(rèn)規(guī)則是對(duì)應(yīng)鏈的所有的規(guī)則執(zhí)行完以后才會(huì)執(zhí)行的(最后執(zhí)行的規(guī)則)座菠。
三、iptables名詞和術(shù)語(yǔ)
什么是 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)就可以說(shuō)是房子里的家具(柜子等)钧大。什么是規(guī)則(Policy):
規(guī)則(Policy)就比較容易理解了翰撑,就是iptables系列過(guò)濾信息的規(guī)范和具體方法條款了.可以理解為柜子如何增加并擺放柜子?xùn)|西等。
基本術(shù)語(yǔ)如下表格所示:
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è)表
必須是小寫(xiě)
raw ------------追蹤數(shù)據(jù)包, ----此表用處較少宪潮,可以忽略不計(jì)
mangle -------- 給數(shù)據(jù)包打標(biāo)記,做標(biāo)記
nat ---------網(wǎng)絡(luò)地址轉(zhuǎn)換即來(lái)源與目的的IP地址和port的轉(zhuǎn)換溯警。
filter --------做過(guò)濾的,防火墻里面用的最多的表狡相。表的應(yīng)用順序:raw ---> mangle ---> nat ---> filter
2. 五個(gè)鏈
(必須是大寫(xiě))鏈里面寫(xiě)的是規(guī)則梯轻。
PREROUTING ---------------------進(jìn)路由之前數(shù)據(jù)包
INPUT -----------------就是過(guò)濾進(jìn)來(lái)的數(shù)據(jù)包(輸入)
FORWARD -----------------轉(zhuǎn)發(fā)
OUTPUT ---------------發(fā)出去的數(shù)據(jù)包
POSTROUTING --------------路由之后數(shù)據(jù)包所有的訪問(wèn)都是按順序:
入站:比如訪問(wèn)自身的web服務(wù)流量。先PREROUTING(是否改地址)尽棕,再I(mǎi)NPUT(是否允許)到達(dá)程序喳挑。
轉(zhuǎn)發(fā):經(jīng)過(guò)linux網(wǎng)關(guān)的流量.先PREROUTING(是否改地址),然后路由萄金。轉(zhuǎn)發(fā)給FORWARD(轉(zhuǎn)發(fā)或者丟棄)蟀悦,最后經(jīng)過(guò)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é)過(guò)濾所有目標(biāo)是本機(jī)地址的數(shù)據(jù)包通俗來(lái)說(shuō):就是過(guò)濾進(jìn)入主機(jī)的數(shù)據(jù)包
FORWARD ----#負(fù)責(zé)轉(zhuǎn)發(fā)經(jīng)過(guò)主機(jī)的數(shù)據(jù)包恋拷。起到轉(zhuǎn)發(fā)的作用
OUTPUT ----#處理所有源地址是本機(jī)地址的數(shù)據(jù)包通俗的講:就是處理從主機(jī)發(fā)出的數(shù)據(jù)包
總結(jié):根據(jù)規(guī)則來(lái)處理數(shù)據(jù)包资厉,如轉(zhuǎn)或者丟。就是實(shí)現(xiàn)主機(jī)型防火墻的主要表蔬顾。
內(nèi)核模塊 iptable_filter