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