一、初識(shí)防火墻
Firewall:防火墻,隔離工具;工作于主機(jī)或網(wǎng)絡(luò)邊緣,對(duì)于進(jìn)出本主機(jī)或本網(wǎng)絡(luò)的報(bào)文根據(jù)事先定義的檢查規(guī)則作匹配檢測(cè),對(duì)于能夠被規(guī)則匹配到的報(bào)文作出相應(yīng)處理的組件;
防火墻類型分為: 主機(jī)防火墻 和網(wǎng)絡(luò)防火墻
實(shí)現(xiàn)方法分為:軟件防火墻(軟件邏輯)和硬件防火墻(硬件和軟件邏輯)
二、iptables五種鏈接

iptables五種鏈接分別是prerouting、input 、output 、forward 、postrouting
- prerouting:流入的數(shù)據(jù)包進(jìn)入路由表之前。
- input :通過(guò)路由表判斷后目的地址是本機(jī),然后進(jìn)入本機(jī)內(nèi)部資源。
- output :由本機(jī)產(chǎn)生的數(shù)據(jù)向外轉(zhuǎn)發(fā)
- forward :通過(guò)路由表判斷目的地址是本機(jī),然后通過(guò)路由轉(zhuǎn)發(fā)到其他地方。
- postrouting:傳出的數(shù)據(jù)包到達(dá)網(wǎng)卡出口前。
iptables的四張表
現(xiàn)在用的比較多的表是前兩個(gè):
- 表(功能):
filter:過(guò)濾,防火墻;
nat:network address translation;用于修改源IP或目標(biāo)IP,也可以改端口;
mangle:拆解報(bào)文,做出修改,并重新封裝起來(lái);
raw:關(guān)閉nat表上啟用的連接追蹤機(jī)制;
- 表(功能)和鏈對(duì)應(yīng)關(guān)系:
raw:PREROUTING, OUTPUT
mangle:PREROUTING,INPUT,F(xiàn)ORWARD,OUTPUT,POSTROUTING
nat:PREROUTING,[INPUT,]OUTPUT,POSTROUTING
filter:INPUT,F(xiàn)ORWARD,OUTPUT
- 處理優(yōu)先級(jí):raw-->mangle-->nat-->filter
- 報(bào)文流向:
流入本機(jī):PREROUTING --> INPUT
由本機(jī)流出:OUTPUT --> POSTROUTING
轉(zhuǎn)發(fā):PREROUTING --> FORWARD --> POSTROUTING

三、iptables規(guī)則
1、添加規(guī)則時(shí)的考量點(diǎn):
(1) 要實(shí)現(xiàn)哪種功能:判斷添加到哪個(gè)表上;
(2) 報(bào)文流經(jīng)的路徑:判斷添加到哪個(gè)鏈上;
2、鏈的規(guī)則
鏈上的規(guī)則次序,即為檢查的次序;因此,隱含一定的應(yīng)用法則:
(1) 同類規(guī)則(訪問(wèn)同一應(yīng)用),匹配范圍小的放上面;
(2) 不同類的規(guī)則(訪問(wèn)不同應(yīng)用),匹配到報(bào)文頻率較大的放在上面;
(3) 將那些可由一條規(guī)則描述的多個(gè)規(guī)則合并起來(lái);
(4) 設(shè)置默認(rèn)策略;
3、匹配規(guī)則:
組成部分:根據(jù)規(guī)則匹配條件來(lái)嘗試匹配報(bào)文,一旦匹配成功,就由規(guī)則定義的處理動(dòng)作作出處理;
匹配條件:
基本匹配條件:內(nèi)建
擴(kuò)展匹配條件:由擴(kuò)展模塊定義;
4、處理動(dòng)作:
基本處理動(dòng)作:內(nèi)建
擴(kuò)展處理動(dòng)作:由擴(kuò)展模塊定義;
自定義處理機(jī)制:自定義鏈
四、iptables命令:
高度模塊化,由諸多擴(kuò)展模塊實(shí)現(xiàn)其檢查條件或處理動(dòng)作的定義;
/usr/lib64/xtables/
適用IPv6報(bào)文:libip6t_
適用IPv4報(bào)文:libipt_, libxt_
規(guī)則格式:
iptables [-t table] COMMAND chain [-m matchname [per-match-options]] -j targetname [per-target-options]
-t table:raw, mangle, nat, [filter]#表
rule-specification = [matches...] [target] #規(guī)則格式,matches匹配條件,target處理動(dòng)作
match = -m matchname [per-match-options] #指明一個(gè)匹配模塊 定義它的選項(xiàng)和值
target = -j targetname [per-target-options]#指明一個(gè)處理動(dòng)作的擴(kuò)展 并定義它的選項(xiàng)
- 查詢filter表有三個(gè)鏈
[root@bogon ~]# iptables -t filter -L#查詢filter表有三個(gè)鏈
Chain INPUT (policy ACCEPT) #指明那個(gè)表(默認(rèn)法則+黑名單)
target prot opt source destination #(執(zhí)行動(dòng)作-端口-選擇-原地址-目標(biāo)地址)
ACCEPT all -- anywhere anywhere #(允許-所有端口-任意地址-任意地址)
Chain FORWARD (policy ACCEPT)
Chain OUTPUT (policy ACCEPT)
- 查詢mangle表有五個(gè)鏈
[root@bogon ~]# iptables -t mangle -L#查詢mangle表有五個(gè)鏈
Chain PREROUTING (policy ACCEPT)
Chain INPUT (policy ACCEPT)
Chain FORWARD (policy ACCEPT)
Chain OUTPUT (policy ACCEPT)
Chain POSTROUTING (policy ACCEPT)
- 查詢nat表有四個(gè)鏈
[root@bogon ~]# iptables -t nat -L#查詢nat表有四個(gè)鏈
Chain PREROUTING (policy ACCEPT)
Chain INPUT (policy ACCEPT)
Chain OUTPUT (policy ACCEPT)
Chain POSTROUTING (policy ACCEPT)
- 查詢r(jià)aw表有兩個(gè)鏈
[root@bogon ~]# iptables -t raw -L#查詢r(jià)aw表有兩個(gè)鏈
Chain PREROUTING (policy ACCEPT)
Chain OUTPUT (policy ACCEPT)
五、鏈管理:
- 1、 -N:new, 自定義一條新的規(guī)則鏈;
[root@bogon ~]# iptables -N in_web_rules#只能調(diào)用內(nèi)建鏈
- 2、 -X: delete,刪除自定義的規(guī)則鏈;
[root@bogon ~]# iptables -X in_web_rules#注意:僅能刪除 用戶自定義的 引用計(jì)數(shù)為0的 空的 鏈;
- 3、 -P:Policy,設(shè)置默認(rèn)策略;對(duì)filter表中的鏈而言,其默認(rèn)策略有:
ACCEPT:接受(內(nèi)建)
DROP:丟棄(內(nèi)建)
REJECT:拒絕(擴(kuò)展)
[root@bogon ~]# iptables -P FORWARD DROP或ACCEPT#關(guān)閉或打開轉(zhuǎn)發(fā)報(bào)文
[root@bogon ~]# iptables -vnL#查詢狀態(tài)
- 4、 -E:重命名自定義鏈;引用計(jì)數(shù)不為0的自定義鏈不能夠被重命名,也不能被刪除;
[root@bogon ~]# iptables -E in_web_rules in_web
六、規(guī)則管理:
- 1、-A:append,追加;
- 2、-I:insert, 插入,要指明位置,省略時(shí)表示第一條;
- 3、-D:delete,刪除;
(1) 指明規(guī)則序號(hào);
(2) 指明規(guī)則本身;
4、-R:replace,替換指定鏈上的指定規(guī)則;
5、-F:flush,清空指定的規(guī)則鏈;
[root@bogon ~]# iptables -F IN_public#清空指定的規(guī)則
- 6、-Z:zero,置零;
iptables的每條規(guī)則都有兩個(gè)計(jì)數(shù)器:
(1) 匹配到的報(bào)文的個(gè)數(shù);
(2) 匹配到的所有報(bào)文的大小之和;
[root@bogon ~]# iptables -Z INPUT_ZONES 1#把這個(gè)鏈第一條規(guī)則置零
- 7、查看:
-L:list, 列出指定鏈上的所有規(guī)則;
-n:numberic,以數(shù)字格式顯示地址和端口號(hào);
-v:verbose,詳細(xì)信息;
-vv, -vvv
-x:exactly,顯示計(jì)數(shù)器結(jié)果的精確值;
--line-numbers:顯示規(guī)則的序號(hào);
[root@bogon ~]# iptables -L -n --line-numbers #顯示當(dāng)前表鏈并編號(hào)
[root@bogon ~]# iptables -L -n --line-numbers -v#顯示詳細(xì)信息
[root@bogon ~]# iptables -vnL INPUT#顯示INPUT信息