iptables 概述 表鏈 規(guī)則 增刪改查

從邏輯上講。防火墻可以大體分為主機(jī)防火墻和網(wǎng)絡(luò)防火墻翎卓。

主機(jī)防火墻:針對于單個主機(jī)進(jìn)行防護(hù)契邀。

網(wǎng)絡(luò)防火墻:往往處于網(wǎng)絡(luò)入口或邊緣,針對于網(wǎng)絡(luò)入口進(jìn)行防護(hù)失暴,服務(wù)于防火墻背后的本地局域網(wǎng)坯门。

網(wǎng)絡(luò)防火墻和主機(jī)防火墻并不沖突,可以理解為逗扒,網(wǎng)絡(luò)防火墻主外(集體)古戴, 主機(jī)防火墻主內(nèi)(個人)。

從物理上講矩肩,防火墻可以分為硬件防火墻和軟件防火墻现恼。

硬件防火墻:在硬件級別實(shí)現(xiàn)部分防火墻功能,另一部分功能基于軟件實(shí)現(xiàn)黍檩,性能高叉袍,成本高。

軟件防火墻:應(yīng)用軟件處理邏輯運(yùn)行于通用硬件平臺之上的防火墻刽酱,性能低喳逛,成本低。

iptables其實(shí)不是真正的防火墻棵里,我們可以把它理解成一個客戶端代理润文,用戶通過iptables這個代理,將用戶的安全設(shè)定執(zhí)行到對應(yīng)的"安全框架"中殿怜,這個"安全框架"才是真正的防火墻典蝌,這個框架的名字叫netfilter

Netfilter是Linux操作系統(tǒng)核心層內(nèi)部的一個數(shù)據(jù)包處理模塊,它具有如下功能:
網(wǎng)絡(luò)地址轉(zhuǎn)換(Network Address Translate)
數(shù)據(jù)包內(nèi)容修改
以及數(shù)據(jù)包過濾的防火墻功能


iptables_概念.png

所以說稳捆,雖然我們使用service iptables start啟動iptables"服務(wù)"赠法,但是其實(shí)準(zhǔn)確的來說,iptables并沒有一個守護(hù)進(jìn)程乔夯,所以并不能算是真正意義上的服務(wù)砖织,而應(yīng)該算是內(nèi)核提供的功能。

iptables基礎(chǔ)

我們知道iptables是按照規(guī)則來辦事的末荐,我們就來說說規(guī)則(rules)侧纯,規(guī)則其實(shí)就是網(wǎng)絡(luò)管理員預(yù)定義的條件,規(guī)則一般的定義為"如果數(shù)據(jù)包頭符合這樣的條件甲脏,就這樣處理這個數(shù)據(jù)包"眶熬。規(guī)則存儲在內(nèi)核空間的信息包過濾表中妹笆,這些規(guī)則分別指定了源地址、目的地址娜氏、傳輸協(xié)議(如TCP拳缠、UDP、ICMP)和服務(wù)類型(如HTTP贸弥、FTP和SMTP)等窟坐。當(dāng)數(shù)據(jù)包與規(guī)則匹配時,iptables就根據(jù)規(guī)則所定義的方法來處理這些數(shù)據(jù)包绵疲,如放行(accept)哲鸳、拒絕(reject)和丟棄(drop)等。配置防火墻的主要工作就是添加盔憨、修改和刪除這些規(guī)則徙菠。

當(dāng)客戶端訪問服務(wù)器的web服務(wù)時,客戶端發(fā)送報文到網(wǎng)卡郁岩,而tcp/ip協(xié)議棧是屬于內(nèi)核的一部分婿奔,所以,客戶端的信息會通過內(nèi)核的TCP協(xié)議傳輸?shù)接脩艨臻g中的web服務(wù)中问慎,而此時脸秽,客戶端報文的目標(biāo)終點(diǎn)為web服務(wù)所監(jiān)聽的套接字(IP:Port)上,當(dāng)web服務(wù)需要響應(yīng)客戶端請求時蝴乔,web服務(wù)發(fā)出的響應(yīng)報文的目標(biāo)終點(diǎn)則為客戶端记餐,這個時候,web服務(wù)所監(jiān)聽的IP與端口反而變成了原點(diǎn)薇正,我們說過片酝,netfilter才是真正的防火墻,它是內(nèi)核的一部分挖腰,所以雕沿,如果我們想要防火墻能夠達(dá)到"防火"的目的,則需要在內(nèi)核中設(shè)置關(guān)卡猴仑,所有進(jìn)出的報文都要通過這些關(guān)卡审轮,經(jīng)過檢查后,符合放行條件的才能放行辽俗,符合阻攔條件的則需要被阻止疾渣,于是,就出現(xiàn)了input關(guān)卡和output關(guān)卡崖飘,而這些關(guān)卡在iptables中不被稱為"關(guān)卡",而被稱為"鏈"榴捡。

![iptables詳解(1):
iptables_簡圖.png

也就是其他"鏈",他們就是 "路由前"朱浴、"轉(zhuǎn)發(fā)"吊圾、"路由后"达椰,他們的英文名是

PREROUTING、FORWARD项乒、POSTROUTING

也就是說啰劲,當(dāng)我們啟用了防火墻功能時,報文需要經(jīng)過如下關(guān)卡檀何,也就是說呈枉,根據(jù)實(shí)際情況的不同,報文經(jīng)過"鏈"可能不同埃碱。如果報文需要轉(zhuǎn)發(fā),那么報文則不會經(jīng)過input鏈發(fā)往用戶空間酥泞,而是直接在內(nèi)核空間中經(jīng)過forward鏈和postrouting鏈轉(zhuǎn)發(fā)出去的砚殿。

![iptables詳解(1):
iptables_概念圖2.png

所以,根據(jù)上圖芝囤,我們能夠想象出某些常用場景中似炎,報文的流向:

到本機(jī)某進(jìn)程的報文:PREROUTING --> INPUT

由本機(jī)轉(zhuǎn)發(fā)的報文:PREROUTING --> FORWARD --> POSTROUTING

由本機(jī)的某進(jìn)程發(fā)出報文(通常為響應(yīng)報文):OUTPUT --> POSTROUTING

鏈的概念

現(xiàn)在,我們想象一下悯姊,這些"關(guān)卡"在iptables中為什么被稱作"鏈"呢羡藐?我們知道,防火墻的作用就在于對經(jīng)過的報文匹配"規(guī)則"悯许,然后執(zhí)行對應(yīng)的"動作",所以仆嗦,當(dāng)報文經(jīng)過這些關(guān)卡的時候,則必須匹配這個關(guān)卡上的規(guī)則先壕,但是瘩扼,這個關(guān)卡上可能不止有一條規(guī)則,而是有很多條規(guī)則垃僚,當(dāng)我們把這些規(guī)則串到一個鏈條上的時候集绰,就形成了"鏈",所以,我們把每一個"關(guān)卡"想象成如下圖中的模樣 谆棺,這樣來說栽燕,把他們稱為"鏈"更為合適,每個經(jīng)過這個"關(guān)卡"的報文改淑,都要將這條"鏈"上的所有規(guī)則匹配一遍碍岔,如果有符合條件的規(guī)則,則執(zhí)行規(guī)則對應(yīng)的動作朵夏。
iptables_表.png

表的概念

我們再想想另外一個問題付秕,我們對每個"鏈"上都放置了一串規(guī)則,但是這些規(guī)則有些很相似侍郭,比如询吴,A類規(guī)則都是對IP或者端口的過濾掠河,B類規(guī)則是修改報文,那么這個時候猛计,我們是不是能把實(shí)現(xiàn)相同功能的規(guī)則放在一起呢唠摹,必須能的。

我們把具有相同功能的規(guī)則的集合叫做"表"奉瘤,所以說勾拉,不同功能的規(guī)則,我們可以放置在不同的表中進(jìn)行管理盗温,而iptables已經(jīng)為我們定義了4種表藕赞,每種表對應(yīng)了不同的功能,而我們定義的規(guī)則也都逃脫不了這4種功能的范圍卖局,所以斧蜕,學(xué)習(xí)iptables之前,我們必須先搞明白每種表 的作用砚偶。

iptables為我們提供了如下規(guī)則的分類批销,或者說,iptables為我們提供了如下"表"

filter表:負(fù)責(zé)過濾功能染坯,防火墻均芽;內(nèi)核模塊:iptables_filter

nat表:network address translation,網(wǎng)絡(luò)地址轉(zhuǎn)換功能单鹿;內(nèi)核模塊:iptable_nat

mangle表:拆解報文掀宋,做出修改,并重新封裝 的功能仲锄;iptable_mangle

raw表:關(guān)閉nat表上啟用的連接追蹤機(jī)制布朦;iptable_raw

也就是說,我們自定義的所有規(guī)則昼窗,都是這四種分類中的規(guī)則是趴,或者說,所有規(guī)則都存在于這4張"表"中澄惊。

表鏈關(guān)系

但是我們需要注意的是唆途,某些"鏈"中注定不會包含"某類規(guī)則",就像某些"關(guān)卡"天生就不具備某些功能一樣掸驱,比如肛搬,A"關(guān)卡"只負(fù)責(zé)打擊陸地?cái)橙耍瑳]有防空能力毕贼,B"關(guān)卡"只負(fù)責(zé)打擊空中敵人温赔,沒有防御步兵的能力,C"關(guān)卡"可能比較NB鬼癣,既能防空陶贼,也能防御陸地?cái)橙似》罚珼"關(guān)卡"最屌,海陸空都能防拜秧。
nat 表中的規(guī)則可以被哪些鏈?zhǔn)褂茫篜REROUTING痹屹,OUTPUT,POSTROUTING(centos7中還有INPUT枉氮,centos6中沒有)

filter 表中的規(guī)則可以被哪些鏈?zhǔn)褂茫篒NPUT志衍,F(xiàn)ORWARD,OUTPUT


iptables_流程圖.png

我們在寫Iptables規(guī)則的時候聊替,要時刻牢記這張路由次序圖楼肪,靈活配置規(guī)則。

規(guī)則的概念

說了一圈又說回來了惹悄,在上述描述中我們一直在提規(guī)則春叫,可是沒有細(xì)說,現(xiàn)在說說它俘侠。

先說說規(guī)則的概念,然后再通俗的解釋它蔬将。

規(guī)則:根據(jù)指定的匹配條件來嘗試匹配每個流經(jīng)此處的報文爷速,一旦匹配成功,則由規(guī)則后面指定的處理動作進(jìn)行處理霞怀;

那么我們來通俗的解釋一下什么是iptables的規(guī)則惫东,之前打過一個比方,每條"鏈"都是一個"關(guān)卡"毙石,每個通過這個"關(guān)卡"的報文都要匹配這個關(guān)卡上的規(guī)則廉沮,如果匹配,則對報文進(jìn)行對應(yīng)的處理徐矩,比如說滞时,你我二人此刻就好像兩個"報文",你我二人此刻都要入關(guān)滤灯,可是城主有命坪稽,只有器宇軒昂的人才能入關(guān),不符合此條件的人不能入關(guān)鳞骤,于是守關(guān)將士按照城主制定的"規(guī)則"窒百,開始打量你我二人,最終豫尽,你順利入關(guān)了篙梢,而我已被拒之門外,因?yàn)槟惴?器宇軒昂"的標(biāo)準(zhǔn)美旧,所以把你"放行"了渤滞,而我不符合標(biāo)準(zhǔn)贬墩,所以沒有被放行,其實(shí)蔼水,"器宇軒昂"就是一種"匹配條件"震糖,"放行"就是一種"動作","匹配條件"與"動作"組成了規(guī)則趴腋。

了解了規(guī)則的概念吊说,那我們來聊聊規(guī)則的組成部分,此處只是大概的將規(guī)則的結(jié)構(gòu)列出,后面的文章中會單獨(dú)對規(guī)則進(jìn)行總結(jié)优炬。

規(guī)則由匹配條件和處理動作組成颁井。

匹配條件
匹配條件分為基本匹配條件與擴(kuò)展匹配條件

基本匹配條件:

源地址Source IP,目標(biāo)地址 Destination IP

上述內(nèi)容都可以作為基本匹配條件蠢护。

擴(kuò)展匹配條件:

除了上述的條件可以用于匹配雅宾,還有很多其他的條件可以用于匹配,這些條件泛稱為擴(kuò)展條件葵硕,這些擴(kuò)展條件其實(shí)也是netfilter中的一部分眉抬,只是以模塊的形式存在,如果想要使用這些條件懈凹,則需要依賴對應(yīng)的擴(kuò)展模塊蜀变。

源端口Source Port, 目標(biāo)端口Destination Port

上述內(nèi)容都可以作為擴(kuò)展匹配條件

處理動作

處理動作在iptables中被稱為target(這樣說并不準(zhǔn)確,我們暫且這樣稱呼)介评,動作也可以分為基本動作和擴(kuò)展動作库北。

此處列出一些常用的動作,之后的文章會對它們進(jìn)行詳細(xì)的示例與總結(jié):

ACCEPT:允許數(shù)據(jù)包通過们陆。

DROP:直接丟棄數(shù)據(jù)包寒瓦,不給任何回應(yīng)信息,這時候客戶端會感覺自己的請求泥牛入海了坪仇,過了超時時間才會有反應(yīng)杂腰。

REJECT:拒絕數(shù)據(jù)包通過,必要時會給數(shù)據(jù)發(fā)送端一個響應(yīng)的信息椅文,客戶端剛請求就會收到拒絕的信息颈墅。

SNAT:源地址轉(zhuǎn)換,解決內(nèi)網(wǎng)用戶用同一個公網(wǎng)地址上網(wǎng)的問題雾袱。

MASQUERADE:是SNAT的一種特殊形式恤筛,適用于動態(tài)的、臨時會變的ip上芹橡。

DNAT:目標(biāo)地址轉(zhuǎn)換毒坛。

REDIRECT:在本機(jī)做端口映射。

LOG:在/var/log/messages文件中記錄日志信息,然后將數(shù)據(jù)包傳遞給下一條規(guī)則煎殷,也就是說除了記錄以外不對數(shù)據(jù)包做任何其他操作屯伞,仍然讓下一條規(guī)則去匹配。

filter表

iptables為我們預(yù)定義了4張表豪直,它們分別是raw表劣摇、mangle表、nat表弓乙、filter表末融,不同的表擁有不同的功能。

filter負(fù)責(zé)過濾功能暇韧,比如允許哪些IP地址訪問勾习,拒絕哪些IP地址訪問,允許訪問哪些端口懈玻,禁止訪問哪些端口巧婶,filter表會根據(jù)我們定義的規(guī)則進(jìn)行過濾,filter表應(yīng)該是我們最常用到的表了涂乌,所以此處艺栈,我們以filter表為例,開始學(xué)習(xí)怎樣實(shí)際操作iptables湾盒。

怎樣查看filter表中的規(guī)則呢湿右?使用如下命令即可查看。

[root@lb01 ~]# iptables -t filter -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

filter是默認(rèn)表也可以不指定

[root@lb01 ~]# iptables -nL
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination    

我們使用-t選項(xiàng)历涝,指定要操作的表诅需,使用-L選項(xiàng)漾唉,查看-t選項(xiàng)對應(yīng)的表的規(guī)則荧库,-L選項(xiàng)的意思是,列出規(guī)則赵刑,所以分衫,上述命令的含義為列出filter表的所有規(guī)則,上圖中般此,顯示出了3條鏈蚪战,INPUT鏈、FORWARD鏈铐懊、OUTPUT鏈邀桑,每條鏈中都有自己的規(guī)則,前文中科乎,我們打過一個比方壁畸,把"鏈"比作"關(guān)卡",不同的"關(guān)卡"擁有不同的能力,所以捏萍,從上圖中可以看出太抓,INPUT鏈、FORWARD鏈令杈、OUTPUT鏈都擁有"過濾"的能力走敌,所以,當(dāng)我們要定義某條"過濾"的規(guī)則時逗噩,我們會在filter表中定義掉丽,但是具體在哪條"鏈"上定義規(guī)則呢?這取決于我們的工作場景给赞。比如机打,我們需要禁止某個IP地址訪問我們的主機(jī),我們則需要在INPUT鏈上定義規(guī)則片迅。因?yàn)椴醒覀冊诶碚摽偨Y(jié)中已經(jīng)提到過,報文發(fā)往本機(jī)時柑蛇,會經(jīng)過PREROUTING鏈與INPUT鏈(如果你沒有明白芥挣,請回顧前文),所以耻台,如果我們想要禁止某些報文發(fā)往本機(jī)空免,我們只能在PREROUTING鏈和INPUT鏈中定義規(guī)則,但是PREROUTING鏈并不存在于filter表中盆耽,換句話說就是蹋砚,PREROUTING關(guān)卡天生就沒有過濾的能力照瘾,所以妙同,我們只能在INPUT鏈中定義,當(dāng)然撒桨,如果是其他工作場景析恢,可能需要在FORWARD鏈或者OUTPUT鏈中定義過濾規(guī)則墨坚。
我們可以使用iptables -t filter -L命令列出filter表中的所有規(guī)則,那么舉一反三映挂,我們也可以查看其它表中的規(guī)則泽篮,示例如下。

iptables -t raw -L

iptables -t mangle -L

iptables -t nat -L

其實(shí)柑船,我們可以省略-t filter帽撑,當(dāng)沒有使用-t選項(xiàng)指定表時,默認(rèn)為操作filter表鞍时,即iptables -L表示列出filter表中的所有規(guī)則亏拉。
我們還可以只查看指定表中的指定鏈的規(guī)則,比如,我們只查看filter表中INPUT鏈的規(guī)則

上圖中只顯示了filter表中INPUT鏈中的規(guī)則(省略-t選項(xiàng)默認(rèn)為filter表)专筷,當(dāng)然弱贼,你也可以指定只查看其他鏈,其實(shí)磷蛹,我們查看到的信息還不是最詳細(xì)的信息吮旅,我們可以使用-v選項(xiàng),查看出更多的味咳、更詳細(xì)的信息.

[root@lb01 ~]# iptables -t filter -I INPUT -p tcp -s 10.0.0.0/24 --dport 9999 -j DROP
[root@lb01 ~]# iptables -nvL
Chain INPUT (policy ACCEPT 6 packets, 428 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 DROP       tcp  --  *      *       10.0.0.0/24          0.0.0.0/0            tcp dpt:9999
    0     0 DROP       tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:9999

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 4 packets, 560 bytes)
 pkts bytes target     prot opt in     out     source               destination         

可以看到庇勃,使用-v選項(xiàng)后,iptables為我們展示的信息更多了槽驶,那么责嚷,這些字段都是什么意思呢?我們來總結(jié)一下掂铐,看不懂沒關(guān)系罕拂,等到實(shí)際使用的時候,自然會明白全陨,此處大概了解一下即可爆班。

其實(shí),這些字段就是規(guī)則對應(yīng)的屬性辱姨,說白了就是規(guī)則的各種信息柿菩,那么我們來總結(jié)一下這些字段的含義。

pkts:對應(yīng)規(guī)則匹配到的報文的個數(shù)雨涛。

bytes:對應(yīng)匹配到的報文包的大小總和枢舶。

target:規(guī)則對應(yīng)的target,往往表示規(guī)則對應(yīng)的"動作"替久,即規(guī)則匹配成功后需要采取的措施凉泄。

prot:表示規(guī)則對應(yīng)的協(xié)議,是否只針對某些協(xié)議應(yīng)用此規(guī)則侣肄。

opt:表示規(guī)則對應(yīng)的選項(xiàng)旧困。

in:表示數(shù)據(jù)包由哪個接口(網(wǎng)卡)流入醇份,我們可以設(shè)置通過哪塊網(wǎng)卡流入的報文需要匹配當(dāng)前規(guī)則稼锅。

out:表示數(shù)據(jù)包由哪個接口(網(wǎng)卡)流出,我們可以設(shè)置通過哪塊網(wǎng)卡流出的報文需要匹配當(dāng)前規(guī)則僚纷。

source:表示規(guī)則對應(yīng)的源頭地址矩距,可以是一個IP,也可以是一個網(wǎng)段怖竭。

destination:表示規(guī)則對應(yīng)的目標(biāo)地址锥债。可以是一個IP,也可以是一個網(wǎng)段哮肚。

[root@lb01 ~]# iptables -vL
Chain INPUT (policy ACCEPT 21 packets, 1596 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 DROP       tcp  --  any    any     10.0.0.0/24          anywhere             tcp dpt:distinct
    0     0 DROP       tcp  --  any    any     anywhere             anywhere             tcp dpt:distinct

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 16 packets, 2056 bytes)
 pkts bytes target     prot opt in     out     source               destination         

細(xì)心如你一定發(fā)現(xiàn)了登夫,上圖中的源地址與目標(biāo)地址都為anywhere,看來允趟,iptables默認(rèn)為我們進(jìn)行了名稱解析恼策,但是在規(guī)則非常多的情況下如果進(jìn)行名稱解析,效率會比較低潮剪,所以涣楷,在沒有此需求的情況下,我們可以使用-n選項(xiàng)抗碰,表示不對IP地址進(jìn)行名稱反解狮斗,直接顯示IP地址
如果你習(xí)慣了查看有序號的列表,你在查看iptables表中的規(guī)則時肯定會很不爽弧蝇,沒有關(guān)系碳褒,滿足你,使用--line-numbers即可顯示規(guī)則的編號看疗,示例如下骤视。

[root@lb01 ~]# iptables -nvL --line
Chain INPUT (policy ACCEPT 48 packets, 3588 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1        0     0 DROP       tcp  --  *      *       10.0.0.0/24          0.0.0.0/0            tcp dpt:9999
2        0     0 DROP       tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:9999

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 34 packets, 4355 bytes)
num   pkts bytes target     prot opt in     out     source               destination         

--line-numbers選項(xiàng)并沒有對應(yīng)的短選項(xiàng),不過我們縮寫成--line時鹃觉,centos中的iptables也可以識別专酗。
上圖中INPUT鏈后面的括號中包含policy ACCEPT ,0 packets盗扇,0bytes 三部分祷肯。

policy表示當(dāng)前鏈的默認(rèn)策略,policy ACCEPT表示上圖中INPUT的鏈的默認(rèn)動作為ACCEPT疗隶,換句話說就是佑笋,默認(rèn)接受通過INPUT關(guān)卡的所有請求,所以我們在配置INPUT鏈的具體規(guī)則時斑鼻,應(yīng)該將需要拒絕的請求配置到規(guī)則中蒋纬,說白了就是"黑名單"機(jī)制,默認(rèn)所有人都能通過坚弱,只有指定的人不能通過蜀备,當(dāng)我們把INPUT鏈默認(rèn)動作設(shè)置為接受(ACCEPT),就表示所有人都能通過這個關(guān)卡荒叶,此時就應(yīng)該在具體的規(guī)則中指定需要拒絕的請求碾阁,就表示只有指定的人不能通過這個關(guān)卡,這就是黑名單機(jī)制些楣,但是脂凶,你一定發(fā)現(xiàn)了宪睹,上圖中所顯示出的規(guī)則,大部分都是接受請求(ACCEPT)蚕钦,并不是想象中的拒絕請求(DROP或者REJECT)亭病,這與我們所描述的黑名單機(jī)制不符啊,按照道理來說嘶居,默認(rèn)動作為接受命贴,就應(yīng)該在具體的規(guī)則中配置需要拒絕的人,但是上圖中并不是這樣的食听,之所以出現(xiàn)上圖中的情況胸蛛,是因?yàn)镮PTABLES的工作機(jī)制導(dǎo)致到,上例其實(shí)是利用了這些"機(jī)制"樱报,完成了所謂的"白名單"機(jī)制葬项,并不是我們所描述的"黑名單"機(jī)制,我們此處暫時不用關(guān)注這一點(diǎn)迹蛤,之后會進(jìn)行詳細(xì)的舉例并解釋民珍,此處我們只要明白policy對應(yīng)的動作為鏈的默認(rèn)動作即可,或者換句話說盗飒,我們只要理解嚷量,policy為鏈的默認(rèn)策略即可。

packets表示當(dāng)前鏈(上例為INPUT鏈)默認(rèn)策略匹配到的包的數(shù)量逆趣,0 packets表示默認(rèn)策略匹配到0個包蝶溶。

bytes表示當(dāng)前鏈默認(rèn)策略匹配到的所有包的大小總和。

其實(shí)宣渗,我們可以把packets與bytes稱作"計(jì)數(shù)器"抖所,上圖中的計(jì)數(shù)器記錄了默認(rèn)策略匹配到的報文數(shù)量與總大小,"計(jì)數(shù)器"只會在使用-v選項(xiàng)時痕囱,才會顯示出來田轧。

命令小節(jié)

好了,我們已經(jīng)會使用命令簡單的查看iptables表的規(guī)則了鞍恢,為了方便以后回顧傻粘,我們將上文中的相關(guān)命令總結(jié)一下。

iptables -t 表名 -L

查看對應(yīng)表的所有規(guī)則帮掉,-t選項(xiàng)指定要操作的表弦悉,省略"-t 表名"時,默認(rèn)表示操作filter表旭寿,-L表示列出規(guī)則警绩,即查看規(guī)則崇败。

iptables -t 表名 -L 鏈名

查看指定表的指定鏈中的規(guī)則盅称。

 iptables -t 表名 -v -L

查看指定表的所有規(guī)則肩祥,并且顯示更詳細(xì)的信息(更多字段),-v表示verbose缩膝,表示詳細(xì)的混狠,冗長的,當(dāng)使用-v選項(xiàng)時疾层,會顯示出"計(jì)數(shù)器"的信息将饺,由于上例中使用的選項(xiàng)都是短選項(xiàng),所以一般簡寫為iptables -t 表名 -vL

 iptables -t 表名 -n -L

表示查看表的所有規(guī)則痛黎,并且在顯示規(guī)則時予弧,不對規(guī)則中的IP或者端口進(jìn)行名稱反解,-n選項(xiàng)表示不解析IP地址湖饱。

 iptables --line-numbers -t 表名 -L

表示查看表的所有規(guī)則掖蛤,并且顯示規(guī)則的序號,--line-numbers選項(xiàng)表示顯示規(guī)則的序號井厌,注意蚓庭,此選項(xiàng)為長選項(xiàng),不能與其他短選項(xiàng)合并仅仆,不過此選項(xiàng)可以簡寫為--line器赞,注意,簡寫后仍然是兩條橫杠墓拜,仍然是長選項(xiàng)港柜。

 iptables -t 表名 -v -x -L

表示查看表中的所有規(guī)則,并且顯示更詳細(xì)的信息(-v選項(xiàng))咳榜,不過潘懊,計(jì)數(shù)器中的信息顯示為精確的計(jì)數(shù)值,而不是顯示為經(jīng)過可讀優(yōu)化的計(jì)數(shù)值贿衍,-x選項(xiàng)表示顯示計(jì)數(shù)器的精確值授舟。

實(shí)際使用中,為了方便贸辈,往往會將短選項(xiàng)進(jìn)行合并释树,所以,如果將上述選項(xiàng)都糅合在一起擎淤,可以寫成如下命令奢啥,此處以filter表為例。

iptables --line -t filter -nvxL

當(dāng)然嘴拢,也可以只查看某張表中的某條鏈桩盲,此處以filter表的INPUT鏈為例

iptables --line -t filter -nvxL INPUT

添加規(guī)則

注意點(diǎn):添加規(guī)則時,規(guī)則的順序非常重要

在指定表的指定鏈的尾部添加一條規(guī)則席吴,-A選項(xiàng)表示在對應(yīng)鏈的末尾添加規(guī)則赌结,省略-t選項(xiàng)時捞蛋,表示默認(rèn)操作filter表中的規(guī)則

命令語法:iptables -t 表名 -A 鏈名 匹配條件 -j 動作
示例:

iptables -t filter -A INPUT -s 192.168.1.146 -j DROP

在指定表的指定鏈的首部添加一條規(guī)則,-I選型表示在對應(yīng)鏈的開頭添加規(guī)則

iptables -t 表名 -I 鏈名 匹配條件 -j 動作
示例:

iptables -t filter -I INPUT -s 192.168.1.146 -j ACCEPT

命令語法:iptables -t 表名 -I 鏈名 匹配條件 -j 動作
示例:

iptables -t filter -I INPUT -s 192.168.1.146 -j ACCEPT

在指定表的指定鏈的指定位置添加一條規(guī)則

命令語法:iptables -t 表名 -I 鏈名 規(guī)則序號 匹配條件 -j 動作
示例:

iptables -t filter -I INPUT 5 -s 192.168.1.146 -j REJECT

命令語法:iptables -t 表名 -I 鏈名 規(guī)則序號 匹配條件 -j 動作
示例:

iptables -t filter -I INPUT 5 -s 192.168.1.146 -j REJECT

設(shè)置指定表的指定鏈的默認(rèn)策略(默認(rèn)動作)柬姚,并非添加規(guī)則拟杉。

命令語法:iptables -t 表名 -P 鏈名 動作
示例:

iptables -t filter -P FORWARD ACCEPT

命令語法:iptables -t 表名 -P 鏈名 動作
示例:

iptables -t filter -P FORWARD ACCEPT

上例表示將filter表中FORWARD鏈的默認(rèn)策略設(shè)置為ACCEPT

刪除規(guī)則

注意點(diǎn):如果沒有保存規(guī)則,刪除規(guī)則時請慎重

按照規(guī)則序號刪除規(guī)則量承,刪除指定表的指定鏈的指定規(guī)則搬设,-D選項(xiàng)表示刪除對應(yīng)鏈中的規(guī)則。

[root@lb01 ~]# iptables -nL --line
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination         
1    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
2    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
3    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
4    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0    

命令語法:iptables -t 表名 -D 鏈名 規(guī)則序號
示例:

iptables -t filter -D INPUT 3

表示刪除filter表中INPUT鏈中序號為3的規(guī)則撕捍。

按照具體的匹配條件與動作刪除規(guī)則拿穴,刪除指定表的指定鏈的指定規(guī)則。

命令語法:iptables -t 表名 -D 鏈名 匹配條件 -j 動作
示例:

iptables -t filter -D INPUT -s 192.168.1.146 -j DROP

表示刪除filter表中INPUT鏈中源地址為192.168.1.146并且動作為DROP的規(guī)則忧风。

刪除指定表的指定鏈中的所有規(guī)則贞言,-F選項(xiàng)表示清空對應(yīng)鏈中的規(guī)則,執(zhí)行時需三思阀蒂。

命令語法:iptables -t 表名 -F 鏈名
示例:

iptables -t filter -F INPUT

刪除指定表中的所有規(guī)則该窗,執(zhí)行時需三思。

命令語法:iptables -t 表名 -F
示例:

iptables -t filter -F

修改規(guī)則

注意點(diǎn):如果使用-R選項(xiàng)修改規(guī)則中的動作蚤霞,那么必須指明原規(guī)則中的原匹配條件酗失,例如源IP,目標(biāo)IP等昧绣。

修改指定表中指定鏈的指定規(guī)則规肴,-R選項(xiàng)表示修改對應(yīng)鏈中的規(guī)則,使用-R選項(xiàng)時要同時指定對應(yīng)的鏈以及規(guī)則對應(yīng)的序號夜畴,并且規(guī)則中原本的匹配條件不可省略拖刃。

命令語法:iptables -t 表名 -R 鏈名 規(guī)則序號 規(guī)則原本的匹配條件 -j 動作
示例:

iptables -t filter -R INPUT 3 -s 192.168.1.146 -j ACCEPT

上述示例表示修改filter表中INPUT鏈的第3條規(guī)則,將這條規(guī)則的動作修改為ACCEPT贪绘, -s 192.168.1.146為這條規(guī)則中原本的匹配條件兑牡,如果省略此匹配條件,修改后的規(guī)則中的源地址可能會變?yōu)?.0.0.0/0税灌。

其他修改規(guī)則的方法:先通過編號刪除規(guī)則均函,再在原編號位置添加一條規(guī)則。

修改指定表的指定鏈的默認(rèn)策略(默認(rèn)動作)菱涤,并非修改規(guī)則苞也,可以使用如下命令。

命令語法:iptables -t 表名 -P 鏈名 動作
示例:

iptables -t filter -P FORWARD ACCEPT

上例表示將filter表中FORWARD鏈的默認(rèn)策略修改為ACCEPT

保存規(guī)則

保存規(guī)則命令如下粘秆,表示將iptables規(guī)則保存至/etc/sysconfig/iptables文件中如迟,如果對應(yīng)的操作沒有保存,那么當(dāng)重啟iptables服務(wù)以后

service iptables save
注意點(diǎn):centos7中使用默認(rèn)使用firewalld殷勘,如果想要使用上述命令保存規(guī)則,需要安裝iptables-services引润,具體配置過程請回顧上文。

或者使用如下方法保存規(guī)則

iptables-save > /etc/sysconfig/iptables

可以使用如下命令從指定的文件載入規(guī)則,注意:重載規(guī)則時草讶,文件中的規(guī)則將會覆蓋現(xiàn)有規(guī)則堕战。

iptables-restore < /etc/sysconfig/iptables
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市拍霜,隨后出現(xiàn)的幾起案子嘱丢,更是在濱河造成了極大的恐慌,老刑警劉巖祠饺,帶你破解...
    沈念sama閱讀 218,941評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件越驻,死亡現(xiàn)場離奇詭異,居然都是意外死亡道偷,警方通過查閱死者的電腦和手機(jī)缀旁,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來勺鸦,“玉大人并巍,你說我怎么就攤上這事』煌荆” “怎么了履澳?”我有些...
    開封第一講書人閱讀 165,345評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長怀跛。 經(jīng)常有香客問我距贷,道長,這世上最難降的妖魔是什么吻谋? 我笑而不...
    開封第一講書人閱讀 58,851評論 1 295
  • 正文 為了忘掉前任忠蝗,我火速辦了婚禮,結(jié)果婚禮上漓拾,老公的妹妹穿的比我還像新娘阁最。我一直安慰自己戒祠,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,868評論 6 392
  • 文/花漫 我一把揭開白布速种。 她就那樣靜靜地躺著姜盈,像睡著了一般。 火紅的嫁衣襯著肌膚如雪配阵。 梳的紋絲不亂的頭發(fā)上馏颂,一...
    開封第一講書人閱讀 51,688評論 1 305
  • 那天,我揣著相機(jī)與錄音棋傍,去河邊找鬼救拉。 笑死,一個胖子當(dāng)著我的面吹牛瘫拣,可吹牛的內(nèi)容都是我干的亿絮。 我是一名探鬼主播,決...
    沈念sama閱讀 40,414評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼麸拄,長吁一口氣:“原來是場噩夢啊……” “哼派昧!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起拢切,我...
    開封第一講書人閱讀 39,319評論 0 276
  • 序言:老撾萬榮一對情侶失蹤蒂萎,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后失球,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體岖是,經(jīng)...
    沈念sama閱讀 45,775評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年实苞,在試婚紗的時候發(fā)現(xiàn)自己被綠了豺撑。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,096評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡黔牵,死狀恐怖聪轿,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情猾浦,我是刑警寧澤陆错,帶...
    沈念sama閱讀 35,789評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站金赦,受9級特大地震影響音瓷,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜夹抗,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,437評論 3 331
  • 文/蒙蒙 一绳慎、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦杏愤、人聲如沸靡砌。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽通殃。三九已至,卻和暖如春厕宗,著一層夾襖步出監(jiān)牢的瞬間画舌,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評論 1 271
  • 我被黑心中介騙來泰國打工媳瞪, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留骗炉,地道東北人照宝。 一個月前我還...
    沈念sama閱讀 48,308評論 3 372
  • 正文 我出身青樓蛇受,卻偏偏與公主長得像,于是被迫代替她去往敵國和親厕鹃。 傳聞我的和親對象是個殘疾皇子兢仰,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,037評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 1.安全技術(shù) (1)入侵檢測與管理系統(tǒng)(Intrusion Detection Systems): 特點(diǎn)是不阻斷任...
    尛尛大尹閱讀 2,469評論 0 2
  • (本文源于轉(zhuǎn)載或摘抄整理) 一:前言 防火墻,其實(shí)說白了講剂碴,就是用于實(shí)現(xiàn)Linux下訪問控制的功能的把将,它分為硬件的...
    JackyTsuuuy閱讀 8,976評論 1 6
  • 一. 什么是防火墻 防火墻,就是用于實(shí)現(xiàn)Linux下訪問控制的功能的忆矛,它分為硬件的或者軟件的防火墻兩種察蹲。無論是在哪...
    InnocenceYWQ閱讀 1,055評論 0 3
  • iptables俗稱防火墻,或許我們已經(jīng)不在陌生催训,但是作為openstack基礎(chǔ)洽议,這里還是對其做一些補(bǔ)充,了解更多...
    ximitc閱讀 1,795評論 0 8
  • 今天早上起床漫拭,還沒睜開惺忪的雙眼亚兄,朦朧中看到閨蜜捧著一杯水進(jìn)來,她每天在起早貪黑地工作與考公采驻,真的很拼审胚,親眼目睹她...
    書鎂閱讀 84評論 0 0