Linux網絡服務之Linux防火牆

Linux網絡服務之Linux防火牆

本文核心:

  1. 熟悉Linux防火牆的表、鏈結構;
  2. 理解數據包匹配的基本流程;
  3. 掌握iptables概念和編寫其規則;

一、前言

​ 在之前的各種服務配置過程中,我們在啓動服務之前,對於防火牆的設置一般都是直接在命令行輸入“systemctl stop firewalld”以及“setenforce 0” 兩條命令來關閉防火牆SELinux的功能。這樣簡單粗暴的操作對防護牆的認知顯然是粗淺而不夠完善的,那麼本文就針對linux防火牆作具體的講解以及相關的配置。

二、相關概念概述

2.1 何爲防火牆?

​ 防火牆,(英文:firewall),是通過有機結合各類用於安全管理與篩選的軟件和硬件設備,幫助計算機網絡於其內、外網之間構建一道相對隔絕的保護屏障,以保護用戶資料與信息安全性的一種技術。

​ 簡單舉例來說,防火牆就好比家家戶戶的家門外面的防盜門,主要是起一定的保護作用。雖然這樣理解防火牆的概念有失偏頗,不過個人認爲比較方便理解一點。不過話說回來,在生產環境中,真正意義上的防火牆是硬件防火牆。那我們先來談談防火牆的分類。

​ 從物理層面上說,一般分爲硬件防火牆和軟件防火牆,其區別顧名思義,實際上的差別也很明顯:

  • 硬件防火牆:在硬件級別實現部分防火牆功能,另一部分功能基於軟件實現,性能高,成本高。一般在數據中心大型企業公司中常用
  • 軟件防火牆:應用軟件處理邏輯運行與通用硬件平臺之上的防火牆,性能低,成本低。一般的筆記本電腦檯式機都有防火牆,想必稍微瞭解使用過計算機的都知道,在下就不再贅述了。

2.2爲什麼需要防火牆?

​ 存在的就是合理的,既然存在防火牆,有防火牆的相關技術,那麼就一定有其存在的意義與價值。因此,我們需要了解其實際的功能,才能明白其真正的價值。

​ 防火牆的主要功能如下:

  • 病毒侵入檢測

  • 網絡地址轉換

  • 網絡操作的審計監控

  • 強化網絡安全服務

    ​ 上述專業術語對於初學者而言可能實在是晦澀難懂,其實簡單來說,就是防止病毒、避免網絡被侵入、監控網絡數據與信息、增強網絡安全。其重要性就在於其提供了記錄計算機網絡之中的數據信息、防止工作人員訪問存在安全隱患的網站與控制不安全服務的功能,從而避免自身網絡出現故障的問題。

    ​ 那麼對於防火牆也有其自身的發展,畢竟技術在不斷進步。防火牆就是一種在內部與外部網絡的中間過程中發揮作用的防禦系統,具有安全防護的價值與作用,通過防火牆可以實現內部與外部資源的有效流通,及時處理各種安全隱患問題,進而提升了信息數據資料的安全性。因此,因爲技術的發展,防火牆也有其自身的類型。

2.3防火牆的主要類型

(1)過濾型防火牆

​ 過濾型防火牆是在網絡層與傳輸層中,可以基於數據源頭的地址以及協議類型等標誌特徵進行分析,確定是否可以通過。在符合防火牆規定標準之下,滿足安全性能以及類型纔可以進行信息的傳遞,而一些不安全的因素則會被防火牆過濾、阻擋。

(2)應用代理類型防火牆

應用代理防火牆主要的工作範圍就是在OSI的最高層,位於應用層之上。其主要的特徵是可以完全隔離網絡通信流,通過特定的代理程序就可以實現對應用層的監督與控制。這兩種防火牆是應用較爲普遍的防火牆,其他一些防火牆應用效果也較爲顯著,在實際應用中要綜合具體的需求以及狀況合理的選擇防火牆的類型,這樣纔可以有效地避免防火牆的外部侵擾等問題的出現。

(3)複合型

目前應用較爲廣泛的防火牆技術當屬複合型防火牆技術,綜合了包過濾防火牆技術以及應用代理防火牆技術的優點,譬如發過來的安全策略是[包過濾](https://baike.baidu.com/item/%E5%8C%85%E8%BF%87%E6%BB%A4/2724082)策略,那麼可以針對報文的報頭部分進行訪問控制;如果安全策略是代理策略,就可以針對報文的內容數據進行訪問控制,因此複合型防火牆技術綜合了其組成部分的優點,同時摒棄了兩種防火牆的原有缺點,大大提高了防火牆技術在應用實踐中的靈活性和安全性。

以上是對防火牆的概念概述,下面主要將針對其中的軟件防火牆進行具體介紹,即Linux防火牆。Linux系統的防火牆主要工作在網絡層,針對TCP/IP數據包實施過濾和限制,屬於典型的包過濾防火牆(或稱爲網絡層防火牆)。Linux系統的防火牆體系基於內核編碼實現,具有非常穩定的性能和極高的效率,也因此獲得廣泛的應用。

三、Linux防火牆之iptables及netfilter

3.1iptables與netfilter的聯繫

​ iptables其實不是真正的防火牆,我們可以把它理解成一個客戶端代理, 用戶通過iptables這個代理,將用戶的安全設定執行到對應的“安全框架"中,這個"安全框架"纔是真正的防火牆,這個框架的名字叫netfilter。
​ netfilter纔是防火牆真正的安全框架(framework) ,netfilter位於內核空間。
​ iptables其實是一個命令行工具, 位於用戶空間,我們用這個工具操作真正的框架。
​ netfilter/iptables (之後簡稱爲iptables) 組成Linux平臺下的包過濾防火牆,與大多數的Linux軟件一 樣, 這個包過濾防火牆是免費的,它可以代替昂貴的商業防火牆解決方案,完成封包過濾、封包重定向和網絡地址轉換(NAT) 等功能。
​ Netfilter是Linux操作系統核心層內部的一個數據包處理模塊,它具有如下功能:
​ 網絡地址轉換(Network Address Translate)、數據包內容修改以及數據包過濾的防火牆功能

​ 所以說,雖然我們使用service iptables start啓動iptables"服務" ,但是其實準確的來說,iptables並沒有一 個守護進程, 所以並不能算是真正意義上的服務,而應該算是內核提供的功能。

3.2iptables的表、鏈結構(四表五鏈很關鍵)

首先來解釋一下什麼是iptables的表,什麼是iptables的鏈。

3.2.1表的概念

iptables管理者四個不同的表,其功能分別由獨立的內核模塊實現。

filter表:負責過濾功能,防火牆;內核魔抗:iptable_filter

nat表:network address translation, 網絡地址轉換;內核模塊:iptable_nat

mangle表:拆解報文,做出修改,並且重新封裝的功能;iptable_mangle

raw表:關閉nat表上啓用的連接追蹤機制;iptable_raw

3.2.2鏈的概念

​ 防火牆的作用在於對經過的數據包報文匹配規則(之後會講述規則的相關概念),然後執行對應的動作,當數據包報文經過防火牆的各個關卡時,將匹配與之對應的規則,而其中的各個關卡上可能並非只有一條規則,那麼這些規則串聯起來就形成了鏈,當數據包經過時,就要將鏈上(就是上面的“關卡”)的所有的規則都匹配一次,符合則執行對應操作。

​ 其實,簡單舉個例子,這個鏈就好比古時候各個城池之間的關隘一般,每個關卡都會去對應匹配驗證來往人的身份或者是通關文牒(就好比是上述的規則),檢查其是否允許通過的過程。

​ 當然,鏈的具體結構如下所示:

Linux網絡服務之Linux防火牆

下面對這五條鏈作簡要概念解釋:

  1. PREROUTING鏈:進來的數據包應用此規則鏈中的策略
  2. INPUT鏈:外出的數據包應用此規則鏈中的策略
  3. FORWARD鏈:轉發數據包時應用此規則鏈中的策略
  4. OUTPUT鏈:對數據包作路由選擇前應用此鏈中的規則(所有的數據包進來的時候都先由這個鏈處理)
  5. POSTROUTING鏈:對數據包作路由選擇後應用此鏈中的規則(所有的數據包出來的時侯都先由這個鏈處理)

其中,INPUT、OUTPUT鏈主要作用在主機型防火牆中,即主要針對服務器本機進行保護的防火牆,而其餘的多用在“網網絡型防火牆”中,如使用Linux防火牆作爲網關服務器,在公司內網與Internet之間進行安全。

3.2.3iptables的表和鏈的關係

​ 四表五鏈的關係如下圖所示:

Linux網絡服務之Linux防火牆

根據上圖,則可以理解爲表中包含與之相對應的鏈,鏈中則應該對應着各種匹配規則。其實我們在實際的使用過程中,往往是通過“表”作爲操作入口,對規則進行定義。

表——功能

鏈——鉤子

raw表中的規則可以被這些鏈使用: PREROUTING, OUTPUT
mangle表中的規則可以被這些鏈使用: PREROUTING, INPUT, FORWARD, OUTPUT, POSTROUTING
nat表中的規則可以被這些鏈使用: PREROUTING, OUTPUT, POSTROUTING (centos7中還有INPUT, centos6中沒有)
filter表中的規則可以被這些鏈使用: INPUT, FORWARD,OUTPUT

四、數據包過濾的匹配流程

我們從規則鏈之間的順序角度來理解數據包過濾的匹配流程:

Linux網絡服務之Linux防火牆

五、iptables的語法格式

iptables [-t 表名] 選項 [鏈名] [條件] [-j 控制類型]

常見參數

-P 設置默認策略:iptables

-P INPUT (DROP|ACCEPT)

-F 清空規則鏈

-L 查看規則鏈

-A 在規則鏈的末尾加入新規則

-I num 在規則鏈的頭部加入新規則

-D num 刪除某一條規則

-s 匹配來源地址IP/MASK,加歎號"!"表示除這個IP外。

-d 匹配目標地址

-i 網卡名稱 匹配從這塊網卡流入的數據

-o 網卡名稱 匹配從這塊網卡流出的數據

-p 匹配協議,如tcp,udp,icmp

--dport num 匹配目標端口號

--sport num 匹配來源端口號

六、小結

​ 本文主要介紹的是防火牆的相關知識,以及着重介紹Linux系統的防火牆理論知識,介紹什麼是iptables及其與netfilter之間的關係。

​ 其次闡述iptables的四表五鏈以及二者之間的關係,最後給出iptables的語法格式。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章