一,Iptables詳解(1):iptables概念


  參考:http://www.zsythink.net/archives/tag/iptables/page/2/

  在計算機領域,防火牆是用於保護信息安全的設備,其會依照用戶定義的規則,允許或限制數據的傳輸。
  

 

  •      用於保護內網安全的一種設備
  •   依據規則進行防護
  •   用戶定義規則
  •   允許或拒絕外部用戶訪問

  防火牆分類

  邏輯上划分,防火牆可以大體分為主機防火牆和網絡防火牆
  主機防火牆:針對於單個主機進行防護
  網絡防火牆:針對網絡進行防護,處於網絡邊緣,防火牆背后是本地局域網
  網絡防火牆主外(服務集體),主機防火牆主內(服務個人)
  

  物理上划分,防火牆可分為硬件防火牆和軟件防火牆
  硬件防火牆:在硬件級別實現防火牆功能,另一部分基於軟件實現,其性能高,硬件成本高

  軟件防火牆:應用軟件處理邏輯運行於通用硬件平台之上的防火牆,其性能相較於硬件防火牆低,成本較低,對於 Linux系統已自帶,直接使用即可

  防火牆性能

  •   吞吐量
  •   並發連接
  •   新建連接
  •   時延
  •   抖動

  硬件防火牆

 

   軟件防火牆

  軟件防火牆是單獨使用具備配置數據包通過規則的軟件來實現數據包過濾。多見於單主機系統或個人計算機。

  Web應用防火牆(WAF)

  Web應用防火牆是對web防護(網頁保護)的安全防護設備(軟件),主要用於截獲所有HTTP數據或僅僅滿足某些規則的 會話。多見於雲平台中。  

  硬件防火牆和軟件防火牆對比

  硬件防火牆有獨立的硬件設備,運算效率較高,價格略高,可為計算機網絡提供安全防護。
  軟件防火牆必須部署在主機系統之上,相較於硬件防火牆運算效率低,在一定程度上會影響到主機系統性能,一般用 於單機系統或個人計算機中,不直接用於計算機網絡中。  

  iptables

  iptables是什么?

  •   iptables不是防火牆,是防火牆用戶代理
  •   用於把用戶的安全設置添加到安全框架中
  •   安全框架是防火牆
  •   安全框架的名稱為netfilter
  •   netfilter位於內核空間中,是Linux操作系統核心層內部的一個數據包處理模塊
  •   iptables是用於在用戶空間對內核空間的netfilter進行操作的命令行工具
  •   netfilter/iptables功能

  netfilter/iptables可簡稱為iptables,為Linux平台下的包過濾防火牆,是開源的,內核自帶的,可以代替成本較高的 企業級硬件防火牆,能夠實現如下功能:

  •   數據包過濾,即防火牆
  •   數據包重定向,即轉發
  •   網絡地址轉換,即可NAT  

  注:

  平常我們使用iptables並不是防火牆的“服務”,而服務是由內核提供的。

  iptables概念

  iptables工作依據------規則(rules)

  iptables是按照規則(rules)來辦事的,而規則就是運維人員所定義的條件;規則一般定義為“如果數據包頭符合這樣的 條件,就這樣處理這個數據包”。

  規則存儲在內核空間的數據包過濾表中,這些規則分別指定了源地址、目的地址,傳輸協議(TCP、UDP、ICMP)和服 務類型(HTTP、FTP)等。
  當數據包與規則匹配時,iptables就根據規則所定義的方法來處理這些數據包,比如放行(ACCEPT)、拒絕(REJECT)、 丟棄(DROP)等

配置防火牆主要工作就是對iptables規則進行添加、修改、刪除等
  小結:

  •   工作依據是規則
  •   規則存在表中
  •   規則指定了什么?源地址或目的地址或傳輸協議的類型
  •   如果數據包備匹配到,按照規則指定的動作去執行

  iptables中鏈的概念

  當客戶端訪問服務器端的web服務時,客戶端發送訪問請求報文至網卡,而tcp/ip協議棧是屬於內核的一部分,
所 以,客戶端的請求報文會通過內核的TCP協議傳輸到用戶空間的web服務,而客戶端報文的目標地址為web服務器
所 監聽的套接字(ip:port)上,當web服務器響應客戶端請求時,web服務所回應的響應報文的目標地址為客戶端地址,
我們說過,netfilter才是真正的防火牆,屬於內核的一部分,所以,我們要想讓netfilter起到作用,我們就需要在內
核中設置“關口”,所以進出的數據報文都要通過這些關口,經檢查,符合放行條件的准允放行,符合阻攔條件的則被
阻止,於是就出現了input和output關口,然而在iptables中我們把關口叫做“鏈”。

  在計算機領域,防火牆是用於保護信息安全的設備,其會依照用戶定義的規則,允許或限制數據的傳輸。
  

 

  •      用於保護內網安全的一種設備
  •   依據規則進行防護
  •   用戶定義規則
  •   允許或拒絕外部用戶訪問

  防火牆分類

  邏輯上划分,防火牆可以大體分為主機防火牆和網絡防火牆
  主機防火牆:針對於單個主機進行防護
  網絡防火牆:針對網絡進行防護,處於網絡邊緣,防火牆背后是本地局域網
  網絡防火牆主外(服務集體),主機防火牆主內(服務個人)
  

  物理上划分,防火牆可分為硬件防火牆和軟件防火牆
  硬件防火牆:在硬件級別實現防火牆功能,另一部分基於軟件實現,其性能高,硬件成本高

  軟件防火牆:應用軟件處理邏輯運行於通用硬件平台之上的防火牆,其性能相較於硬件防火牆低,成本較低,對於 Linux系統已自帶,直接使用即可

  防火牆性能

  •   吞吐量
  •   並發連接
  •   新建連接
  •   時延
  •   抖動

  硬件防火牆

 

   軟件防火牆

  軟件防火牆是單獨使用具備配置數據包通過規則的軟件來實現數據包過濾。多見於單主機系統或個人計算機。

  Web應用防火牆(WAF)

  Web應用防火牆是對web防護(網頁保護)的安全防護設備(軟件),主要用於截獲所有HTTP數據或僅僅滿足某些規則的 會話。多見於雲平台中。  

  硬件防火牆和軟件防火牆對比

  硬件防火牆有獨立的硬件設備,運算效率較高,價格略高,可為計算機網絡提供安全防護。
  軟件防火牆必須部署在主機系統之上,相較於硬件防火牆運算效率低,在一定程度上會影響到主機系統性能,一般用 於單機系統或個人計算機中,不直接用於計算機網絡中。  

  iptables

  iptables是什么?

  •   iptables不是防火牆,是防火牆用戶代理
  •   用於把用戶的安全設置添加到安全框架中
  •   安全框架是防火牆
  •   安全框架的名稱為netfilter
  •   netfilter位於內核空間中,是Linux操作系統核心層內部的一個數據包處理模塊
  •   iptables是用於在用戶空間對內核空間的netfilter進行操作的命令行工具
  •   netfilter/iptables功能

  netfilter/iptables可簡稱為iptables,為Linux平台下的包過濾防火牆,是開源的,內核自帶的,可以代替成本較高的 企業級硬件防火牆,能夠實現如下功能:

  •   數據包過濾,即防火牆
  •   數據包重定向,即轉發
  •   網絡地址轉換,即可NAT  

  注:

  平常我們使用iptables並不是防火牆的“服務”,而服務是由內核提供的。

  iptables概念

  iptables工作依據------規則(rules)

  iptables是按照規則(rules)來辦事的,而規則就是運維人員所定義的條件;規則一般定義為“如果數據包頭符合這樣的 條件,就這樣處理這個數據包”。

  規則存儲在內核空間的數據包過濾表中,這些規則分別指定了源地址、目的地址,傳輸協議(TCP、UDP、ICMP)和服 務類型(HTTP、FTP)等。
  當數據包與規則匹配時,iptables就根據規則所定義的方法來處理這些數據包,比如放行(ACCEPT)、拒絕(REJECT)、 丟棄(DROP)等

配置防火牆主要工作就是對iptables規則進行添加、修改、刪除等
  小結:

  •   工作依據是規則
  •   規則存在表中
  •   規則指定了什么?源地址或目的地址或傳輸協議的類型
  •   如果數據包備匹配到,按照規則指定的動作去執行

  iptables中鏈的概念

  當客戶端訪問服務器端的web服務時,客戶端發送訪問請求報文至網卡,而tcp/ip協議棧是屬於內核的一部分,
所 以,客戶端的請求報文會通過內核的TCP協議傳輸到用戶空間的web服務,而客戶端報文的目標地址為web服務器
所 監聽的套接字(ip:port)上,當web服務器響應客戶端請求時,web服務所回應的響應報文的目標地址為客戶端地址,
我們說過,netfilter才是真正的防火牆,屬於內核的一部分,所以,我們要想讓netfilter起到作用,我們就需要在內
核中設置“關口”,所以進出的數據報文都要通過這些關口,經檢查,符合放行條件的准允放行,符合阻攔條件的則被
阻止,於是就出現了input和output關口,然而在iptables中我們把關口叫做“鏈”。

 

   上面的舉例中,如果客戶端發到本機的報文中包含的服務器地址並不是本機,而是其他服務器,此時本機就應該能夠
進行轉發,那么這個轉發就是本機內核所支持的IP_FORWARD功能,此時我們的主機類似於路由器功能,所以我們會
看到在iptables中,所謂的關口並只有上面所提到的input及output這兩個,應該還有“路由前”,“轉發”,“路由后”,
它們所對應的英文名稱分別為“PREROUTING”,“FORWARD”,“POSTROUTING”,這就是我們說到的5鏈
  INPUT

  OUTPUT

  PREROUTING

  FORWARD

  POSTROUTING

 

   通過上圖可以看出,當我們在本地啟動了防火牆功能時,數據報文需要經過以上關口,根據各報文情況,
各報名經常 的“鏈”可能不同,如果報文目標地址是本機,則會經常input鏈發往本機用戶空間,如果報
文目標不是本機,則會直接 在內核空間中經常forward鏈和postrouting鏈轉發出去。

  所以,根據上圖,我們能夠想象出某些常用場景中,報文的流向:

  到本機某進程的報文:PREROUTING --> INPUT

  由本機轉發的報文:PREROUTING --> FORWARD --> POSTROUTING

  由本機的某進程發出報文(通常為響應報文):OUTPUT --> POSTROUTING

  

  有的時候我們也經常聽到人們在稱呼input為“規則鏈”,這又是怎么回事呢?
我們知道,防火牆的作用在於對經過的數 據報文進行規則匹配,然后執行
對應的“動作”,所以數據包經過這些關口時,必須匹配這個關口規則,但是
關口規則 可能不止一條,可能會有很多,當我們把眾多規則放在一個關口
上時,所有的數據包經常都要進行匹配,那么就形成 了一個要匹配的規則
鏈條,因此我們也把“鏈”稱作“規則鏈”。

 

   INPUT:處理入站數據包

  OUTPUT:處理出站數據包
  FORWARD:處理轉發數據包(主要是將數據包轉發至本機其它網卡)

  當數據報文經過本機時,網卡接收數據報文至緩沖區,內核讀取報文ip首部,發現報文不是送到本機時(目的ip 不是本機),由內核直接送到forward鏈做匹配,匹配之后若符合forward的規則,再經由postrouting送往下一 跳或目的主機。
  PREROUTING:在進行路由選擇前處理數據包,修改到達防火牆數據包的目的IP地址,用於判斷目標主機

  POSTROUTING:在進行路由選擇后處理數據包,修改要離開防火牆數據包的源IP地址,判斷經由哪一接口送往 下一跳
  

  iptables中表的概念

  每個“規則鏈”上都設置了一串規則,這樣的話,我們就可以把不同的“規則鏈”組合成能夠完成某一特定功能集合分 類,而這個集合分類我們就稱為表,iptables中共有5張表,學習iptables需要搞明白每種表的作用。

  •   filter: 過濾功能,確定是否放行該數據包,屬於真正防火牆,內核模塊:iptables_filter
  •   nat: 網絡地址轉換功能,修改數據包中的源、目標IP地址或端口;內核模塊:iptable_nat
  •   mangle: 對數據包進行重新封裝功能,為數據包設置標記;內核模塊:iptable_mangle
  •   raw: 確定是否對數據包進行跟蹤;內核模塊:iptables_raw
  •   security:是否定義強制訪問控制規則;后加上的

  

  iptables中表鏈之間的關系

  我們在應用防火牆時是以表為操作入口的,只要在相應的表中的規則鏈上添加規則即可實現某一功能。那么我們就應 該知道哪張表包括哪些規則鏈,然后在規則鏈上操作即可。

  •   filter表可以使用哪些鏈定義規則:INPUT,FORWARD,OUTPUT
  •   nat表中可以使用哪些鏈定義規則:PREROUTING,OUTPUT ,POSTROUTING,INPUT
  •   mangle 表中可以使用哪些鏈定義規則:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING
  •   raw表中可以使用哪些鏈定義規則:PREROUTING,OUTPUT

 

   iptables中表的優先級

  raw-mangle-nat-filter(由高至低)

  數據包經由iptables的流程

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM