11

iptables - 碁峰資訊epaper.gotop.com.tw/pdf/AXN003000.pdf · 2004-07-09 · kl#456m n ip tables of j TU Filter Table Fp\qWr,l 3st Packet F ilter " Filter Table upv wx yz{3T| !

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: iptables - 碁峰資訊epaper.gotop.com.tw/pdf/AXN003000.pdf · 2004-07-09 · kl#456m n ip tables of j TU Filter Table Fp\qWr,l 3st Packet F ilter " Filter Table upv wx yz{3T| !

3 防火牆管理程式

一 iptables

Netfilter 防火牆機制

iptables 架構

iptables 語法

範例練習

Page 2: iptables - 碁峰資訊epaper.gotop.com.tw/pdf/AXN003000.pdf · 2004-07-09 · kl#456m n ip tables of j TU Filter Table Fp\qWr,l 3st Packet F ilter " Filter Table upv wx yz{3T| !

3-2

Linux防火牆-iptables

上個章節我們討論了有關防火牆的類型、原則與篩選等觀念,接

在來本書將開始介紹在 Linux 作業系統中,用來針對 Netfilter 防

火牆進行管理的主要工具- iptables,由於它是功能極為精細的應

用程式,因此建議讀者在使用前,必須完全了解其結構及語法,

以免產生管理上的錯誤。

3-1 Netfilter 防火牆機制

由 2.4.x 版開始, Linux 核心( Kernel)內建的防火牆就改為

「Netfilter」,並使用 iptables 為其管理工具,在此之前的防火牆機

制為「 IPFW」,而用來進行管理的程式為 ipfwadm( 2.0.x)與 ipchains

(2.1.x/2.2.x)等。

因為 iptables 具有較佳的相容性,因此在 2.4.x 核心版本的環境中,

仍然允許使用者使用舊版的 ipchains 程式來設定防火牆,但在使用

前需先行載入「 ipchains」模組。在 ipchains 模組載入後,接著要執

行以下三項指令,便可開始使用 ipchains 程式:

# ipchains -F

# ipchains –X

# rmmod ipchains

目前在 Netfilter 中,提供的重要機制如下:

傳統 ipchains 的任何功能,例如來源與目的封包過濾、導

向以及偽裝等。

可以針對特定使用者、群組、PID 等限制網路連結的過濾

存取。

Page 3: iptables - 碁峰資訊epaper.gotop.com.tw/pdf/AXN003000.pdf · 2004-07-09 · kl#456m n ip tables of j TU Filter Table Fp\qWr,l 3st Packet F ilter " Filter Table upv wx yz{3T| !

3-3

防火牆管理程式-iptables 3

可以設定封包在進出路由表之前,進行預先的處理。

可以針對外面自動建立與現有連線有關的過濾處理。

增強的封包檢視, iptables 可以檢查所有 6 個 TCP 旗標,

並可詳細指定一連串的來源或目的地端連接埠,而非只有

單一或單一範圍的連接埠。

支援硬體位址(MAC Address)的篩選條件。

一定比例的限制條件,可以抵擋拒絕服務的攻擊與連接埠

掃描,而且也限制重覆的程序上登入的次數。

服務的優先順序類型(TOS),傳輸可依優先順序到不同的

排列,以提高服務的可靠度與降低花費。

提供 Source NAT(SNAT)與 Destination NAT(DNAT)的

功能。

圖 3-1 SNAT 與 DNAT

所謂「網路位址轉譯」(Network Address Translation,NAT),

它是定義於 RFC 1631 中的 Internet 標準,主要是用來簡化及保

存 IP 位址,它可讓原本無法上網,而且使用內部 IP 位址的主機

可以成功的連接 Internet。

Page 4: iptables - 碁峰資訊epaper.gotop.com.tw/pdf/AXN003000.pdf · 2004-07-09 · kl#456m n ip tables of j TU Filter Table Fp\qWr,l 3st Packet F ilter " Filter Table upv wx yz{3T| !

3-4

Linux防火牆-iptables

「 iptables」程式的功能都是屬於封包階層的工作,而這些工作是利

用不同的「原則表」(Rule Tables)來定義。在 iptables 中包含 3 個

內建的原則表:Filter Table、NAT Table 與 Mangle Table,它們分別

代表對經過防火牆的封包進行篩選、轉譯與改寫的動作,而每一個

原則表又是由數個「鏈」(Chain)所組成。舉例來說,在 Filter Table

中除了自訂的鏈之外,還包含 3 個內建的鏈:INPUT Chain、OUTPUT

Chain 和 FORWARD Chain。

圖 3-2 預設的原則表與鏈

Filter Table 是 iptables 中的預設原則表,也就是說,在執行時若沒

有指定其他參數,則 iptables 會套用 Filter Table 中的原則,而其他

二種原則表都需要配合指令參數的使用。

因為在防火牆的運用上, iptables 主要是使用預設的 Filter Table 功

能,所以有人就稱它為「封包過濾器」(Packet Filter)。Filter Table

可以將封包擷取,然後透過預先定義的原則來判斷是否傳送此封

包。由於它運作於網路階層,所以不論是否傳送封包,都不會影響

到封包中的資料內容。

Page 5: iptables - 碁峰資訊epaper.gotop.com.tw/pdf/AXN003000.pdf · 2004-07-09 · kl#456m n ip tables of j TU Filter Table Fp\qWr,l 3st Packet F ilter " Filter Table upv wx yz{3T| !

3-5

防火牆管理程式-iptables 3

封包過濾原理

下圖是表示在 Filter Table 中,內建的 3 個原則鏈與防火牆傳送封包

之間的流程圖:

圖 3-3 防火牆傳送封包的流程圖

上圖中表示,當一個封包抵達圖中的任何一個鏈時,則此鏈就會開

始比對這個封包,以決定後續的處理,例如丟棄或接受。而一般用

來進行比對的項目與說明如下表所示:

比對項目 說明

位址 針對封包內的位址資訊進行比對,可利用的資訊有:來

源位址、目的地位址與網路卡位址等。

連接埠 封包內存放於傳輸層的連接埠資訊,可用來進行比對的

項目包含:來源連接埠與目的地連接埠等。

通訊協定 指某一種指定類型的通訊協定,NetFilter 可以進行比對

的通訊協定有:TCP、UDP 與 ICMP 等。

介面 指封包接收或輸出時,使用的網路介面卡名稱。

切割 表示當資料封包在不能支援它原來大小的網路媒介上傳

輸時,將其封包切割為較小單元的處理程序。

計數器 可針對封包的計數單位進行條件比對。

Page 6: iptables - 碁峰資訊epaper.gotop.com.tw/pdf/AXN003000.pdf · 2004-07-09 · kl#456m n ip tables of j TU Filter Table Fp\qWr,l 3st Packet F ilter " Filter Table upv wx yz{3T| !

3-6

Linux防火牆-iptables

其實每個鏈都是一個檢查清單,它會利用預先設定的原則來對封包

內容進行判斷,若是判斷的結果不符合(Match),則會交由鏈中的

下一個原則繼續處理。若是到最後已沒有任何原則可供判斷,則核

心就會利用鏈的預設原則來作出決定,但為了安全性的考量,一般

原則通常會要求核心丟棄此封包。

以下是防火牆傳送封包時的步驟說明:

1 當防火牆攔截到封包後,核心首先會檢查此封包的目的地,而這

個檢查的過程便稱為「路由」(Routing)。

2 如果目的地址為本機,則此封包就會流向 INPUT 鏈,而由本機程

序來負責接管。之後交由 OUTPUT 鏈處理,如果此封包可被此處

的原則所接受,則這個封包可送至它所指向的界面。

3 此時如果核心沒有啟動轉送功能(Forwarding),或是不知道如何

轉送此封包,則這個封包就會被丟棄。

4 若是轉送功能已啟動,則此封包就會被指向另一個網路界面,而

流向 FORWARD 鏈,如果此封包可被此處的原則所接受,則這個

封包可送至它所指向的界面。

Page 7: iptables - 碁峰資訊epaper.gotop.com.tw/pdf/AXN003000.pdf · 2004-07-09 · kl#456m n ip tables of j TU Filter Table Fp\qWr,l 3st Packet F ilter " Filter Table upv wx yz{3T| !

3-7

防火牆管理程式-iptables 3

3-2 iptables 架構

上個小節我們曾提到,在 iptables 中包含 3 個內建原則表,以處理

不同類型的封包流向,同時這些原則表都以單獨的模組(Module)

型態存在系統中。為了提高原則表的使用效能,每一個系統內建的

原則表中,尚包含相關聯的模組延伸(Module Extension),這些模

組延伸會在第一次關聯時自動的載入系統。

Filter Table

若沒有使用指令列的選項,防火牆預設使用的原則表為 Filter

Table,以下是 Filter Table 的一些基本特性與篩選功能:

包含三個內建的鏈: INPUT Chain、 OUTPUT Chain 和

FORWARD Chain。

允許自訂使用者定義的鏈

包含說明檔

支援 ACCEPT 與 DROP 等二種目標(Target)。

延伸記錄(Logging)功能:個別的篩選記錄訊息可以使用

自訂的字首字串,而訊息的記錄層級就在 /etc/syslog.conf

檔案中設定,因此允許啟動或關閉記錄功能,以及定義記

錄檔路徑等。

TCP 狀態旗標:所有的 TCP 狀態旗標都可進行檢查,然後

再以檢查的結果來決定篩選類型。

延伸的封包退回功能:在 ICMP 錯誤或 TCP 的 RST(Reset)

訊息中,可以指定「REJECT」(退回)的動作,在 IPv4 中

規定 TCP 必須接受 RST 或 ICMP 為錯誤時的提示訊息。

Page 8: iptables - 碁峰資訊epaper.gotop.com.tw/pdf/AXN003000.pdf · 2004-07-09 · kl#456m n ip tables of j TU Filter Table Fp\qWr,l 3st Packet F ilter " Filter Table upv wx yz{3T| !

3-8

Linux防火牆-iptables

將封包置於佇列:「QUEUE」(佇列)是一種特殊的動作,

它可將封包重導至本機端的佇列程式中,若沒有任何等待

的應用程式,則此封包將被丟棄。

可利用 IP 表頭中的通訊協定、來源與目的地 IP 位址、輸

入與輸出介面等項目進行篩選。

支援 TCP、UDP 與 ICMP 表頭欄位的篩選功能。

在 Filter Table 中包含二個模組延伸:「 target」與「match」,

前者包含「REJECT」封包處理動作及「LOG」功能,而後

者則包含多個模組以支援以下類型的篩選:

目前連接狀態:利用 TCP、UDP 與 ICMP 的連接狀態資訊,

以維護封包的連續性,也就是說,當初始連接建立後,後

續的封包也將被識別與接受。

多連接埠範圍(Multiport):可以將欲進行篩選的來源與目

的地連接埠內容,以逗點區隔的方式列為清單,以方便多

個連接埠的同時篩選。

乙太網路 MAC 來源位址:這種篩選方式特別使用在本地網

路的驗證(Authentication),因為 MAC 位址只能在相鄰的

主機及路由器間傳遞。

傳送端的使用者、群組、程序或程序群組識別碼:在本地

網路的傳出封包篩選時,可以利用多項產生此封包的應用

程式識別碼為基準。

IP 表頭的 TOS(Type of Service)欄位:TOS 欄位篩選可

用來指定本地封包的優先順序(Priority),例如在本地主機

與本地路由器間傳遞與轉送封包。

「mark」欄位:用來將封包標示為某個號碼,當封包被比

對成功時,就可透過此欄位的設定值,來將該封包標示一

個號碼,此號碼最大不可以超過 4294967296。

Page 9: iptables - 碁峰資訊epaper.gotop.com.tw/pdf/AXN003000.pdf · 2004-07-09 · kl#456m n ip tables of j TU Filter Table Fp\qWr,l 3st Packet F ilter " Filter Table upv wx yz{3T| !

3-9

防火牆管理程式-iptables 3

封包篩選速率限制:在進行封包篩選時,可以限制某段時

間內封包的平均流量,例如每秒、分、小時或天比對的次

數,預設值為每小時平均一次。除了進行封包數量的比對

外,也可條件達成時,設定暫停封包的比對動作,以避免

因駭客使用 Flooding 攻擊法而導致服務被阻斷。

Mangle Table

在 Mangle Table 中包含三種類型的動作延伸,下表為各個延伸的名

稱及說明:

動作延伸名稱 說明

TTL 修改 Time-To-Live 資訊

MARK 允許在封包中的「mark」欄位指定一個值

TOS 支援 IP 表頭「TOS」欄位值的設定

除了以上的三種動作延伸外,Mangle Table 擁有以下二個內建的鏈

可供使用:

PREROUTING:通常表示在封包進行路由前,以及封包由

某一界面進入後,尚未交給路由判斷的處理,在此大多進

行目的地 IP 的轉譯動作(DNAT)。

OUTPUT:由本地程序產生的封包才會經過此鏈的處理。

NAT Table

NAT Table 擁有 PREROUTING、POSTROUTING 與 OUTPUT 三個內

建鏈,主要功能為進行一對一、一對多與多對多等網址轉譯工作,

由於轉譯工作的特性,需進行目的地網址轉譯的封包,就不需要進

Page 10: iptables - 碁峰資訊epaper.gotop.com.tw/pdf/AXN003000.pdf · 2004-07-09 · kl#456m n ip tables of j TU Filter Table Fp\qWr,l 3st Packet F ilter " Filter Table upv wx yz{3T| !

3-10

Linux防火牆-iptables

行來源網址轉譯,反之亦然。因此為了提升改寫封包的效率,在防

火牆運作時,每個封包只會經過這個規則表一次。

若將封包過濾的規則定義在此,將會造成無法對同一封包進行多次

比對,因此這個規則表除了作網址轉譯外,最好不要做其他用途。

以下是在 NAT Table 中內建的鏈名稱與說明:

PREROUTING:通常進行目的地 IP 的轉譯動作(DNAT)。

OUTPUT:由本地程序產生的封包才會經過此鏈的處理。

POSTROUTING:此鏈的使用時機為通過路由表後,與送

至網路介面卡之前,在此大多進行來源 IP 的轉譯動作

(SNAT)。

另外,NAT Table 也支援目的地的延伸模組,它可用來進行來源位

址、目的地位址與連接埠轉譯的工作,此模組支援以下的 NAT 型式:

Source NAT(SNAT):改變第一個封包的來源位址。

Destination NAT(DNAT):改變第一個封包的目的地位址。

MASQUERADE:它是屬於 SNAT 的一種特殊型態,若是一

部主機 IP Masquerade 功能連線到 Internet,則其他連接此

部主機的電腦即使沒有獲得正式指定的 IP 位址,也可與

Internet 進行連接。

REDIRECT:它是屬於 DNAT 的一種特殊型態,其主要功

能是將封包轉送至本地網路的主機,而不論在 IP 封包表頭

目的地欄位中顯示的位址為何。

Page 11: iptables - 碁峰資訊epaper.gotop.com.tw/pdf/AXN003000.pdf · 2004-07-09 · kl#456m n ip tables of j TU Filter Table Fp\qWr,l 3st Packet F ilter " Filter Table upv wx yz{3T| !

3-11

防火牆管理程式-iptables 3

圖 3-4 IP Masquerade 功能

「封包偽裝」 (Masquerading) 是 SNAT 的特例,它只用於動態

分配的 IP 地址,例如標準的撥接(如果用靜態 IP 地址,則使用

SNA T)。您無需明確地將 masquerading 放進來源地址,因為它

會使用封包傳出界面作為來源地址。但更重要的是,如果該連接

中斷,則連線也會同時中斷,當再次連線使用新的 IP 地址時就

會出現問題。

3-3 iptables 語法

在了解 iptables 程式的基本原理後,接下來這個小節我們將開始介

紹 iptables 程式的使用方法,以及各項選項與參數的介紹。

以下是 iptable 的語法結構:

iptables [-t table] command [match] [-j target/jump]