2021-05-12 14:32:11
iptables簡單介紹
什麼是防火牆?
防火牆是工作在主機或網路邊緣,能夠對其所匹配到的報文根據事先定義好的規則作出相應處理的元件,可以是軟體,也可以是硬體,還能軟硬結合實現。
UNIX/Linux中對防火牆的實現
早期在
openBSD
中通過核心中的ipfw
實現簡單的資料包過濾功能、後來在Linux 2.2核心
中使用ipchains
來取代,意為鏈、後來在Linux 2.4核心
中被iptables
所取代,意為表。
netfilter/iptables原理
事實上
Linux 2.6
實現防火牆是通過核心中的netfilter
框架完成的,iptables
其實不止指的是一個在使用者空間的應用程式,其實還是核心中的一個存放特定規則的模組,所以iptables
的全稱應該為netfilter/iptables
。
netfilter的勾點函數
網路防火牆一般都設定在整個網路的邊緣,才能對所有出入的資料包進行分析和進行相應的處理,作為一個主機防火牆應該在資料包文出入主機時在
TCP/IP協定棧
的特定位置對資料包文進行攔截並執行對應動作,那麼在netfilter
架構中分別有五個位置可以作為防火牆的攔截點,我們稱它們為hook function
(勾點函數)。
資料流經過netfilter大致路程圖
四表五鏈
五鏈
PREROUTING
資料包文進入TCP/IP協定棧路由選擇前會被
PREROUTING
“鉤”住,分析其封包對其相應操作,注意
:PREROUTING
鏈不能對封包進行過濾,PREROUTING
鏈是整個netfilter
框架中的第一關
INPUT
通過
PREROUTING
後進行路由選擇如果封包是進入本機內部,則轉發到INPUT
鏈,INPUT
鏈能夠通過實現定義好的規則對封包進行篩選如果被匹配則執行相應動作,INPUT
鏈可以對封包進行過濾,INPUT
鏈是資料包文進入使用者空間的必經之路
FORWARD
通過
PREROUTING
後進行路由選擇如果封包只是通過本機進行轉發,則轉發到FORWARD
鏈,FORWARD
鏈能夠通過事先定義好的規則對封包進行匹配檢查並執行相應動作,INPUT
鏈可以對封包進行過濾,正是有了FORWARD
鏈iptables
才能夠作為一個網路防火牆執行在網路邊緣對進出網路的資料包文進行過濾
OUTPUT
封包從使用者空間的進程通過路由選擇特定的網絡卡介面後轉到
OUTPUT
鏈,OUTPUT
鏈能夠通過實現定義好的規則對資料包文進行匹配檢查並執行相應動作,OUTPUT
鏈可以對封包進行過濾
POSTROUTING
封包從
OUTPUT
或FORWARD
轉發而來,到達netfilter
框架中的最後一關,分析封包並執行對應動作,和POSTROUTING
一樣不能對封包進行過濾
四表
iptables
之所以被稱為iptables
是其過濾封包的規則是通過四張表的來定義
filter
整個
iptables
最關鍵的表,實現封包的過濾,可以由INPUT,FORWARD,OUTPUT
這三個能夠實現過濾功能的鏈組成
nat
學過網路的同學應該都知道
NAT(Network Address Translation)網路地址轉換
,正是應為有了這項技術才使得我們現今還能夠有IPv4
可以使用,在iptables
中也可以實現NAT
的相關功能, 例如SNAT, DNAT, MASQUERADE
等功能,nat表可以由PREROUTING, FORWARD, POSTROUTING
組成
mangle
mangle
可以對匹配到的報文的資料包進行拆解,做出修改,重新封裝等操作,一般我們用的很少,五個鏈都能實現mangle
的功能
raw
raw
關閉NAT
的連線追蹤機制,防止在高並行的存取下伺服器的記憶體溢位導致故障,可由PREROUTING,OUTPUT
實現
定義規則的”潛規則”
新增規則時的考量點
實現哪些功能: 判斷新增在哪張表上
報文的流經路徑: 判斷新增在哪個鏈上
鏈上規則的次序
1.同類規則(存取同一程式),匹配範圍小的放在上面
2.不同類的規則(存取不同應用), 匹配到報文頻率高的放上面
3.將那些可由一條規則描述的多個規則合併成一個
4.設定預設策略
總結
本文只對
iptables
進行原理方面的簡單介紹,作者水平不高,如果發現錯誤還望海涵並及時通知我,在這裡不勝感激。
更多iptables相關教學見以下內容:
CentOS 7.0關閉預設防火牆啟用iptables防火牆 http://www.linuxidc.com/Linux/2015-05/117473.htm
iptables使用範例詳解 http://www.linuxidc.com/Linux/2014-03/99159.htm
Linux防火牆iptables詳細教學 http://www.linuxidc.com/Linux/2013-07/87045.htm
iptables的備份、恢復及防火牆指令碼的基本使用 http://www.linuxidc.com/Linux/2013-08/88535.htm
Linux下防火牆iptables用法規則詳解 http://www.linuxidc.com/Linux/2012-08/67952.htm
Linux下iptables防火牆設定 http://www.linuxidc.com/Linux/2015-10/123843.htm
本文永久更新連結地址:http://www.linuxidc.com/Linux/2016-04/130031.htm
相關文章