Linux防火墻之基本原理

本系列文章主要講述Linux防火墻的基本原理和基礎使用方法:

1.什么是防火墻:

當我們把計算機連入互聯網與其他計算機進行通信時,這無疑也將自己的信息暴露了,那就意味著可能會有一些心懷不軌的人會利用這些信息來攻擊自己的主機,尤其是作為一臺服務器向互聯網用戶提供服務時,就迫切需要一種隔離和保護機制,來隔離外部網絡,達到保護自我的目的。而這種隔離機制就叫做防火墻。那顯而易見,既然要達到隔離機制,那就要工作在邊緣地帶,根據其所處的位置,我們可以將其分為網絡防火墻(工作在網絡入口位置)和主機防火墻(工作于主機之上)。

2.Linux之上的防火墻:

在Linux之上,為了達到隔離機制,同樣需要防火墻,Linux之上的實現方式是工作于內核空間的netfilter,以及工作于用戶空間提供給用戶定義防火墻策略的iptables,那他們基本的工作原理是什么呢?

對一個數據包的基本處理過程是:

 主機通過物理網卡接收數據包,通過解分裝數據包,查看數據包的ip首部信息判斷是否是發送給本機的,如果是則數據包從內核空間轉交給監聽在某個對應端口號上的應用程序,從而完成通信。

 當本機要向某主機發送數據時,從tcp/ip協議棧的上層通過層層分裝之后,通過向內核發起系統調用,從而將數據包交給物理網卡,由物理網卡向外發送數據包。

 當解分裝數據包查看ip首部信息后,發現該數據包是要通過本機進行轉發,那么本機通過查看路由表,從而進行對數據包的轉發。

正是基于對數據包的處理機制,Linux防火墻正是在這些數據包必經之處對其進行檢查,然后根據用戶定義的規則進行相應的處理。linux上通過五個鉤子函數prerouting,iuput,output,forward,postrouting對應五條定義規則的鏈prerouting,input,output,forward,postrouting從而實現對數據包進行處理,之所以叫做鉤子函數是因為當一個數據包到達時,這幾個函數像鉤子一樣將其勾住,從上而下對其進行檢查,從而決定對數據包的處理動作。如下圖所示,在linux內核之中,對數據包的處理要經過prerouting,路由選擇,從而判斷數據是進入本機,或者是通過本機轉發,對于本機發送的數據則是從用戶空間進入內核空間,經過postrouting之后流出本機。而linux之中的防火墻netfilter不僅提供fileter(數據包過濾)功能,還有其他三個功能,分別是raw(與連接追蹤機制有關),mangle(修改數據包的首部信息),nat(地址轉換),這四個功能對應四個表。于是總結來說就是:linux的netfilter功能提供四個表對應四個功能,通過往每個功能上的鏈來指定規則,從而達到對數據包實現不同的處理。

iptables-routing.jpg

(該圖取自互聯網)

根據上圖我們可以清晰的看到:

數據報文的流向:

 . 流入本機:PREROUTING –> INPUT 

 . 由本機流出:OUTPUT –> POSTROUTING

 . 轉發:PREROUTING –> FORWARD –> POSTROUTING

路由功能發生的時刻:

 . 報文進入本機后:判斷目標主機是本機或其他主機

 . 報文離開本機之前:判斷經由哪個接口送往下一站

每個表上所能對應的鏈,需要強調的是每個位置能實現的表(功能)在圖中從上而下代表處理的優先級是遞減的,總結為:

 . raw:prerouting,output

 . mangle:prerouting,forward,postrouting,input,output

 . nat:prerouting,postrouting,output

 . filter:input,output,forward

以上就是netfilter的基本工作原理,而要想通過netfilter來實現安全策略,重點就是選擇數據包經過的不同位置上基于端口號,目的地址,源地址等來實現過濾以保證主機的安全。

原創文章,作者:zhangbao,如若轉載,請注明出處:http://www.www58058.com/54775

(0)
zhangbaozhangbao
上一篇 2016-12-27 12:01
下一篇 2016-12-27 12:53

相關推薦

  • MariaDB之MHA配置

    工作拓撲 一、MHA簡明:     MHA(Master HA)是一款開源的MySQL的高可用程序,它為MySQL主從復制架構提供了    automating master failover 功能。MHA在監控到master節點故障時,會提升其中    擁有最新數據的…

    2014-10-08
  • 備份練習

    課外整理 cp 功能: 復制文件或目錄說明: cp指令用于復制文件或目錄,如同時指定兩個以上的文件或目錄,且最后的目的地是一個已經存在的目錄,則它會把前面指定的所有文件或目錄復制到此目錄中。若同時指定多個文件或目錄,而最后的目的地并非一個已存在的目錄,則會出現錯誤信息參數:     -a 或 –archiv…

    Linux干貨 2016-08-08
  • linux下的打包與壓縮

    linux壓縮或解壓縮工具有很多,除了已經很少有人使用的compress外,現在常用的還有tar,bzip2,xz 和gzip等,我們來說說它們的用法。 先來說bzip2。bunzip2和bzcat可以由bzip2指定選項來執行同樣的結果,這里只介紹bzip2的用法。使用bzip2這個工具創建的文件以.bz2,.bz,.tbz,.tar.bz2或者…

    Linux干貨 2017-04-16
  • 第1周-1:計算機的組成及其功能以及部分常見Linux發行版簡介

    一、計算機的組成及其功能: 計算機主要由硬件部分和軟件部分組成。 1、硬件部分 (1)中央處理器 由控制器和運算器兩大部分組成,是計算機的大腦,硬件部分里最關鍵的部分。決定著整個計算機系統的性能。 控制器負責協調計算機硬件的其他部分同步工作,對其他的硬件進行發號施令。是計算機系統的司令??刂破鲝拇鎯ζ髦凶x取指令,分析指令的含義,要完成什么操作,需要什么數據,…

    Linux干貨 2016-11-01
  • 計算機與操作系統

    計算機系統=Hardware+Software Linux操作系統=GNU/kernel+程序 (user space) ————– apps   shell    (人機交互接口) lib call(半層)  (kernel space) —&#…

    Linux干貨 2017-02-14
  • 馬哥教育N22期第八周作業

    1、請描述網橋、集線器、二層交換機、三層交換機、路由器的功能、使用場景與區別。 設備 功能 使用場景 區別 網橋 根據MAC地址來轉發幀,本地通信只限本網段內, 相當于中繼器,線路比較長保證信號不變形的傳輸 工作在物理層,相當于一個物理接口 集線器 接收到的數據包進行廣播轉發,所有端口都能收到此數據,通過MAC確認是不是發給自己的包進行回應 廣播形式轉發數據…

    Linux干貨 2016-11-14
欧美性久久久久