Netfilter L7應用層 防火牆 開源碼 過濾

教防火牆認識HTTP協定 簡易實作第七層過濾控管

2016-08-02
本文將使用Linux系統中預設的Netfilter/iptables,藉由其資料控管能力進行簡單的L7應用層過濾功能,讓網管人員能夠禁止內部人員瀏覽某些網站以及阻止內部人員下載某些類型檔案。
相信在很多的情況下,網管人員總是希望能夠禁止內部使用人員不要瀏覽某些網站或限制下載某些類型的檔案(例如EXE等執行檔)以避免資安危害,但在一般的情況下,想要完成這些功能,通常需要架設L7等級的防火牆,例如Proxy。

雖然在開源碼社碼中有許多相關的解決方案,但如果只是為了一些簡單的運用,似乎又沒有必要為此再架設複雜的L7防火牆。

因此,本文將介紹在Linux系統上都會預設的Netfilter/iptables軟體,藉由它的L7資料控管功能來進行簡單的L7應用層過濾功能。

為簡化說明起見,本文將利用Netfilter/iptables來完成如下的兩種功能:

1. 禁止內部人員瀏覽某些網站
2. 禁止內部人員下載某些類型檔案

認識Netfilter/iptables

Netfilter/iptables為目前開源碼社群最普遍的防火牆(Firewall)軟體,一般的Linux系統均會預設此類軟體,其中Netfilter指的是系統核心(Kernel)用來實際過濾封包的機制,而iptables則提供用以設定Netfilter機制的使用者程式。

Netfilter採用規則表格(Table)與規則鏈(Chain)的方式來制定過濾規則(Rule)以過濾來往的封包。

相關的說明以及所提供的表格說明如下:

·Filter table:過濾表格,一般主要的過濾規則大多設定在此表格中。包含INPUT、OUTPUT、FORWARD等規則鏈,可利用封包的通訊協定、來源目的IP與埠等資訊進行過濾,可透過封包MAC資訊來過濾,能限制最大封包流量(如每分鐘最多能通過多少的封包),以避免拒絕服務(Denial Of Service)攻擊。

·Mangle table:修改規則表格,主要用來修改來往封包的內容。包含PREROUTING和OUTPUT等規則鏈,可修改封包的TTL MARK TOS等資訊,通常用來辨別網路服務的種類。

·Nat table:也就是NAT規則表格,主要用來實作SNAT、DNAT等功能。包含PREROUTING、OUTPUT、POSTROUTING等規則鏈,並支援SNAT DNAT等功能。

·Raw table:包含PREROUTING及OUTPUT等規則鏈。

此表格通常應用在那些非NAT的情況下來提高性能。例如大流量的Web網站,可以讓Web的通訊埠不再讓iptables做數據包的鏈接跟蹤處理,以提高Web網站效能。

在了解相關的表格與規則鏈後,接著以封包傳遞流程為例來說明Netfilter的處理流程,如圖1所示。


▲圖1 Netfilter的處理流程。

當封包進入主機後,首先會先經過PREROUTING規則鏈,通常會在此規則鏈中做一個前置處理,接著會判別封包的目的位址,如果目的位址為本機,即將封包傳遞至INPUT規則鏈處理。而後經由OUTPUT規則鏈處理,最後再經由POSTROUTING規則鏈處理。如果目的位址不為本機,則轉發至FORWARD規則鏈,最後也經由POSTROUTING規則鏈處理後將封包發出。

Netfilter即是在上述的規則鏈上設定規則來過濾封包。以系統而言,Netfilter是屬於核心的機制,使用者無法直接設定,所以需要一個應用程式(iptables)來控制Netfilter機制,這也是下面要繼續說明iptables程式功能的原因。

iptables語法說明

iptables是Netfilter的管理程式,使用者可利用此程式來設定Netfilter防火牆規則。

以下將為各位簡略說明iptables的語法結構,結構如下:


[-t table]:用來指定要設定那個規則表格的規則,如未指定即預設為filter規則表格。


追蹤我們Featrue us

本站使用cookie及相關技術分析來改善使用者體驗。瞭解更多

我知道了!