首頁 > 軟體

iptables簡單介紹

2020-06-16 17:43:48

什麼是防火牆?

防火牆是工作在主機或網路邊緣,能夠對其所匹配到的報文根據事先定義好的規則作出相應處理的元件,可以是軟體,也可以是硬體,還能軟硬結合實現。

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鏈可以對封包進行過濾,正是有了FORWARDiptables才能夠作為一個網路防火牆執行在網路邊緣對進出網路的資料包文進行過濾

OUTPUT

封包從使用者空間的進程通過路由選擇特定的網絡卡介面後轉到OUTPUT鏈,OUTPUT鏈能夠通過實現定義好的規則對資料包文進行匹配檢查並執行相應動作,OUTPUT鏈可以對封包進行過濾

POSTROUTING

封包從OUTPUTFORWARD轉發而來,到達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. 報文的流經路徑: 判斷新增在哪個鏈上

鏈上規則的次序

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


IT145.com E-mail:sddin#qq.com