您好,登錄后才能下訂單哦!
IPTABLES/netfilter(http://www.netfilter.org) 其實大多數(shù)人都認為iptables是linux系統(tǒng)上的一個服務(wù),其實不是的. 我們linux系統(tǒng)上的服務(wù)比如說httpd服務(wù)在啟動起來的時候,是不是在后臺啟動一個相應(yīng)的服務(wù)進程且在網(wǎng)卡上監(jiān)聽一個端口,而iptables卻不然,那么iptables到底是什么呢?其實iptables只是一個工具而已.我們的linux系統(tǒng)有用戶空間,和內(nèi)核空間,而iptables有兩個組件,一是netfilter, netfilter組件只是用來過濾防火墻規(guī)則,及作出相應(yīng)的處理機制的,它是集成在內(nèi)核中的一部分,也就是說它是工作在內(nèi)核空間的,那么大家都知道用戶是不可能直接跟內(nèi)核空間打交道的,那么netfilter只是工作在內(nèi)核空間對規(guī)則進行處理的,那么規(guī)則從何而來呢? 是從iptables的第二個組件iptables而來的,我們上面說了IPTABLES只是一個工作在用戶空間的一個工具而已,那么用戶就使用這個工具的一個命令來跟工作在內(nèi)核空間中的netfiter組件打交道的.其實IPTABLES防火墻就是這樣的.
IPTABLES常用的表和鏈有三個filter表 nat表 mangle表, 和五個鏈 INPUT鏈 OUTPUT鏈 FORWARE鏈 POSTROUTING鏈 PREROUTING鏈, 下面來介紹下它們的各個功能呢個功能,
filter表主要是過濾數(shù)據(jù)包的,IPTABLES幾乎所有的數(shù)據(jù)包過濾都在此表中實現(xiàn)的,filter表也是IPTABLES中默認的表,此表中還包含三個鏈如下
1.1 INPUT鏈
過濾所有的目標(biāo)地址是本機的數(shù)據(jù)包
1.2 OUTPUT鏈
過濾所有從本機出去的數(shù)據(jù)包
1.3 FORWORD鏈
過濾所有從本機路過的數(shù)據(jù)包
nat表主要是用于做網(wǎng)絡(luò)地址轉(zhuǎn)換的(NAT) 在IPTABLES中可以做SNAT(源地址轉(zhuǎn)換),DNAT(目標(biāo)地址轉(zhuǎn)換),PNAT(即跟SNAT差不多,不一樣的是SNAT的源地址是固定的,而PNAT的源地址是不固定的,當(dāng)使用ppp 或pppoe的方式連接互聯(lián)網(wǎng)的時候一般適應(yīng)這中) 。 nat表中包含兩個鏈如下
2.1 PREROUTING鏈
在數(shù)據(jù)包到達防火墻的時候改變目標(biāo)地址 DNAT應(yīng)用于此鏈.
2.2 OUTPUT鏈
可以改變本地產(chǎn)生的數(shù)據(jù)包的目標(biāo)地址
2.3 POSTROUTING鏈
在數(shù)據(jù)包離開防火墻的時候改變源地址,SNAT應(yīng)用于次鏈
mangle表主要是修改數(shù)據(jù)包頭部信息的,此表中包含以下5條鏈
3.1 PREROUTING鏈,
在數(shù)據(jù)包進入防火墻之后,也稱為路由前,
3.2 POSTROUTING鏈,
在數(shù)據(jù)包確定目標(biāo)地址后,也稱為路由后,
3.3 OUTPUT鏈
從本機出去的時間包路由前
3.4 INPUT鏈
數(shù)據(jù)包進入本機后,路由后
3.5 FORWARD鏈
第一次路由判斷之后,最后一次路由判斷之前改變數(shù)據(jù)包
IPTABLES的狀態(tài)跟蹤連接有4種,分別是,NEW,ESTABLISHED,RELATED,INVALID,除了從本機出去的數(shù)據(jù)包有nat表的OUTPUT鏈處理外,其他說有的狀態(tài)跟蹤都在nat表中的PREROUTING鏈中處理,下面來說下4種狀態(tài)是什么,
1,NEW狀態(tài)
NEW狀態(tài)的數(shù)據(jù)包說明這個數(shù)據(jù)包是收到的第一個數(shù)據(jù)包,
2,ESTABLISHED狀態(tài),
只要發(fā)送并接到應(yīng)答,一個數(shù)據(jù)包的狀態(tài)就從NEW變?yōu)?/span>ESTABLEISHED,而且該狀態(tài)會繼續(xù)匹配這個連接后繼數(shù)據(jù)包,
3,RELATED狀態(tài)
當(dāng)一個數(shù)據(jù)包的狀態(tài)處于ESTABLSHED狀態(tài)的連接有關(guān)系的時候,就會被認為是RELATED,也就是說一個鏈接想要是RELATED狀態(tài),首先要有一個ESTABLISHED的連接,
4,INVALID狀態(tài)
不能被識別屬于哪個連接狀態(tài)或沒有任何關(guān)系的狀態(tài),一般這中數(shù)據(jù)包要被拒絕的
iptables在RHEL的系統(tǒng)上默認安裝的, IPTABLES的命令選項主要分為這么幾大類,規(guī)則管理,鏈管理,默認管理,查看,匹配條件,處理動作,基本應(yīng)該就這些了吧,下面來一一說名,
#iptables -A 添加一條新規(guī)則
#iptables -I 插入一條新規(guī)則 -I 后面加一數(shù)字表示插入到哪行
#iptables -D 刪除一條新規(guī)則 -D 后面加一數(shù)字表示刪除哪行
#iptables -R 替換一條新規(guī)則 -R 后面加一數(shù)字表示替換哪行
#iptables -F 清空鏈中的所有規(guī)則
#iptables -N 新建一個鏈
#iptables -X 刪除一個自定義鏈,刪除之前要保證次鏈是空的,而且沒有被引用
#iptables -E 重命名鏈
3.默認管理類
#iptables -P 設(shè)置默認策略
#iptables -L 查看規(guī)則 -L還有幾個子選項如下
#iptables -L -n 以數(shù)字的方式顯示
#iptables -L -v 顯示詳細信息
#iptables -L -x 顯示精確信息
#iptables -L --line-numbers 顯示行號
5.1 基本匹配
條件匹配也可以使用 ! 取反
-s 源地址
-d 目標(biāo)地址
-p 協(xié)議{tcp|udp|icmp}
-i 從哪個網(wǎng)絡(luò)接口進入,比如 -i eth0
-o 從哪個網(wǎng)絡(luò)接口出去,比如 -o eth0
5.2擴展匹配
5.2.1隱含擴展匹配
-p {tcp|udp} --sport 指定源端口
-p {tcp|udp} --dport 指定目標(biāo)端口
5.2.2顯示擴展匹配
-m state --state 匹配狀態(tài)的
-m mutiport --source-port 端口匹配 ,指定一組端口
-m limit --limit 3/minute 每三分種一次
-m limit --limit-burst 5 只匹配5個數(shù)據(jù)包
-m string --string --algo bm|kmp --string "xxxx" 匹配字符串
-m time --timestart 8:00 --timestop 12:00 表示從哪個時間到哪個時間段
-m time --days 表示那天
-m mac --mac-source xx:xx:xx:xx:xx:xx 匹配源MAC地址
-m layer7 --l7proto qq 表示匹配騰訊qq的 當(dāng)然也支持很多協(xié)議,這個默認是沒有的,需要我們給內(nèi)核打補丁并重新編譯內(nèi)核及iptables才可以使用 -m layer7 這個顯示擴展匹配,
6,處理動作類
-j ACCEPT 允許
-j REJECT 拒絕
-j DROP 拒絕并提示信息
-j SNAT 源地址轉(zhuǎn)換
-j DNAT 目標(biāo)地址轉(zhuǎn)換
-j REDIRECT 重定向
-j MASQUERAED 地址偽裝
-j LOG --log-prefix "說明信息,自己隨便定義" 記錄日志
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。