Linux防火牆機制

2021-08-03 01:36:01 字數 3863 閱讀 2822

資料報過濾(packet filtering)技術是在網路層對資料報進行選擇,選擇的依據是系統內設定的過濾邏輯,稱為訪問控制表(access control lable,acl)。通過檢查資料流中每個資料報的源位址和目的位址,所用的埠號和協議狀態等因素,或他們的組合來確定是否允許該資料報通過。

包過濾防火牆的優點是它對使用者來說是透明的,處理速度快且易於維護。缺點是:非法訪問一旦突破防火牆,即可對主機上的軟體和配置漏洞進行攻擊;資料報的源位址、目的位址和ip的埠號都在資料報的頭部,可以很輕易地偽造。「ip位址欺騙」是黑客針對該型別防火牆比較常用的攻擊手段。

包過濾是在ip層實現的,因此,它可以只用路由器來完成。包過濾根據包的源ip位址、目的ip位址、源埠、目的埠及包傳遞方向等報頭資訊來判斷是否允許包通過,過濾使用者定義的內容,如ip位址。其工作原理是系統在網路層檢查資料報,與應用層無關。包過濾器的應用非常廣泛,因為cpu用來處理包過濾的時間可以忽略不計。而且這種防護措施對使用者透明,合法使用者在進出網路時,根本感覺不到它的存在,使用起來很方便。這樣系統就具有很好的傳輸效能,易擴充套件。

但是這種防火牆不太安全,因為系統對應用層資訊無感知--也就是說,它們不理解通訊的內容,不能在使用者級別上進行過濾,即不能識別不同的使用者和防止位址的盜用。如果攻擊者把自己主機的ip位址設成乙個合法主機的ip位址,就可以很輕易地通過包過濾器,這樣更容易被黑客攻破。基於這種工作機制,包過濾防火牆有以下缺陷:

1、通訊資訊:包過濾防火牆只能訪問部分資料報的頭資訊。

2、通訊和應用狀態資訊:包過濾防火牆是無狀態的,所以它不可能儲存來自於通訊和應用的狀態資訊。

3、資訊處理:包過濾防火牆處理資訊的能力是有限的。

**服務型防火牆在應用層上實現防火牆功能。它能提供部分與傳輸有關的狀態,能外圈提供與應用相關的狀態和部分傳輸的資訊,它還能處理和管理資訊。

從核心2.4之後使用全新的核心包過慮管理工具--iptables,這個工具使使用者更易於理解其工作原理,更容易被使用,也具有更強大的功能。

iptables只是乙個管理核心包過濾的工具,可以加入、插入或刪除核心包過濾**(鏈)中的規則。實際上真正執行這些過濾規則的是netfilter(linux核心中乙個通用架構)及其相關模組(如iptables模組和nat模組)。

netfilter是linux核心中乙個通用架構,它提供一系列的「表」(tables),每個表由若干「鏈」(chains)組成,而每條鏈中可以由一條或數條規則(rule)組成。可以這樣理解,netfilter是表的容器,表是鏈的容器,鏈是規則的容器。

系統預設的表為「filter」,該表中包含了input、forward和output 3個鏈。每一條鏈中可以有一條或數條規則,每一條規則都是這樣定義的:「如果資料報頭符合這樣的條件,就這樣處理這個資料報」。當乙個資料報到達乙個鏈時,系統就會從第一條規則開始檢查,看是否符合該規則所定義的條件,如果滿足,系統將根據該條規則所定義的方法處理該資料報;如果不滿足則繼續檢查下一條規則;最後,如果資料報不符合該鏈中任何一條規則,系統就會根據該鏈預先定義的策略(policy)來處理該資料報。

當資料報進入系統時,系統首先根據路由表決定將資料報發給哪一條鏈,則可能有以下3種情況:

1、資料報的目的位址是本機,則系統將資料報送往input鏈,如果通過規則檢查,則該包被發給相應的本地程序處理;如果沒有通過規則檢查,系統將丟棄該包。

2、資料報的上的位址不是本機,也就是說這個包將被**,則系統將資料報送往forward鏈,如果通過規則檢查,該包被發給相應的本地程序處理;如果沒有通過規則檢查,系統將丟棄該包。

3、資料報是由本地系統程序產生的,則系統將其送往output鏈,如果通過規則檢查,則該包被發給相應的本地程序處理;如果沒有通過規則檢查,系統將丟棄該包。

使用者可以給各鏈定義規則,當資料報到達其中的每一條鏈,iptables就會根據鏈中定義的規則來處理這個包。iptables將資料報的頭資訊與它所傳遞到的鏈中的每條規則進行比較,看它是否和每條規則完全匹配。如果資料報與某條規則匹配,iptables就對該資料報執行由該規則指定的操作。例如某條鏈中的規則決定要丟棄(drop)資料報,資料報就會在該鏈處丟棄;如果鏈中規則接受(accept)資料報,資料報就可以繼續前進;但是,如果資料報與這條規則不匹配,那麼它將與鏈中的下一條規則進行比較。如果該資料報不符合該鏈中的任何一條規則,那麼iptables將根據該鏈預先定義的預設策略來決定如何處理該資料報,理想的預設策略應該告訴iptables丟棄(drop)該資料報。

netfilter/iptables的最大優點是它可以配置有狀態的防火牆,這是ipfwadm和ipchains等以前的工具都無法提供的一種重要功能。有狀態的防火牆能夠指定並記住為傳送或接收資訊包所建立的連線的狀態。防火牆可以從資訊包的連線跟蹤狀態獲得該資訊。在決定新的資訊包過濾時,防火牆所使用的這些狀態資訊可以增加其效率和速度。這裡有4種有效狀態,名稱分別為established、invalid、new和related。

狀態established指出該資訊包屬於已經建立的連線,該連線一直用於傳送和接收資訊包並且完全有效。invalid狀態指出該資訊包與任何已知的流或連線都不相關聯,它可能包含錯誤的資料或頭。狀態new表示該資訊包已經或將啟動新的連線,或者它與尚未用於傳送和接收資訊包的連線相關聯。最後,related表示該資訊包正在啟動新連線,以及它與已建立的連線想關聯。

netflter/iptables的另乙個重要優點是,它使使用者可以完全控制防火牆配置和資訊包過濾。可以定製自己的規則來滿足特定需求,從而只允許想要的網路流量進入系統。

1、規則(rule)

規則(rule)就是網路管理員預定的條件,規則一般定義為「如果資料報頭符合這樣的條件,就這樣處理這個資料報」。規則儲存在核心空間的資訊包過濾表中,這些規則分別指定了源位址、目的位址、傳輸協議(tcp、udp、icmp)和服務型別(如http、ftp、smtp)。當資料報與規則匹配時,iptables就根據規則所定義的方法來處理這些資料報,如放行(accept)、拒絕(reject)、或丟棄(drop)等。配置防火牆的主要規則就是新增、修改和刪除這些規則。

2、鏈(chains)

鏈(chains)是資料報傳播的路徑,每一條鏈其實就是眾多規則中的乙個檢查清單,每一條鏈中可以有一條或數條規則。當乙個資料報到達乙個鏈時,iptables就會從鏈中的第一條規則開始檢查,看該資料報是否滿足規則所定義的條件,如果滿足,系統就會根據該條規則所定義的方法處理該資料報,否則iptables將繼續檢查下一條規則。如果該資料報不符合鏈中任何一何況規則,iptables就會根據該鏈預先定義的預設策略來處理該資料報。

3、表(tables)

表(tables)提供特定的功能,iptables內建3個表,即filter表、nat表和mangle表,分別用於實現包過濾,網路位址轉換和包重構的功能。

(1)filter表。filter表主要用於過濾資料報,該錶根據系統管理員預定義的一組規則過濾符合條件的資料報。對防火牆而言,主要利用filter表中指定一系列規則來實現對資料報進行過濾操作。

filter表是iptables預設的表,如果沒有指定使用哪個表,iptables就預設使用filter表來執行所有的命令。filter表包含了input鏈(處理進入的資料報)、forward鏈(處理**的資料報)和output鏈(處理本地生成的資料報)。在filter表中只允許對資料報進行接受或丟棄的操作,而無法對資料報進行更改。

(2)nat表。nat青主要用於網路位址轉換nat,該錶可以實現一對

一、一對多和多對多的nat工作,iptables就是使用該錶實現共享上網功能的。nat表包含了prerouting鏈(修改即將到來的資料報)、output鏈(修改在路由之前本地生成的資料報)和postrouting鏈(修改即將出去的資料報)。

(3)mangle表。mangle表主要用於對指定的包進行修改,因為某些特殊應用可能去改寫資料報的一些傳輸特性,例如理性資料報的ttl和tos等,不過在實際應用中該表的使用率不高。

(五)、關閉系統防火牆

由於系統的防火牆功能也是使用iptables實現的,如果使用者在系統的iptables之上設定規則,很容易發生衝突,所以在進行iptables學習之前,建議關閉系統的防火牆功能。

防火牆 防火牆安全

作為計算機的第一道屏障,防火牆的重要性不言而喻,儘管防火牆在面臨網路攻擊時仍有很大的缺陷,不如無法阻止自內而外的攻擊,對複雜多變的網路攻擊攻擊無法預警和像ids所做的那樣。但防火牆依然是伺服器乃至個人機的一道不可或缺的屏障。木桶原理 本文將對防火牆做乙個初步的簡介,顯然像我們知道的那樣,防火牆是一款...

linux防火牆新增埠並開閉防火牆

安裝 yum install firewalld 啟動 systemctl start firewalld 檢視狀態 systemctl status firewalld 禁用,禁止開機啟動 systemctl disable firewalld 開機啟用 systemctl enable fire...

Linux防火牆配置

重啟後生效 開啟 chkconfig iptables on 關閉 chkconfig iptables off 2 即時生效,重啟後失效 開啟 service iptables start 關閉 service iptables stop 需要說明的是對於linux下的其它服務都可以用以上命令執行...