Linux防火牆基礎

leikj發表於2024-05-30

一、安全技術和防火牆

1.安全技術

  • 入侵檢測系統(lntrusion Detection Systems)
  • 入侵防禦系統(lntrusion Prevention System)
  • 防火牆(Firewalld)
  • 防水牆(Waterwall)

2.防火牆分類

  • 按保護範圍劃分:

主機防火牆:服務範圍為當前一臺主機
網路防火牆:服務範圍為防火牆一側的區域網

  • 按實現方式劃分:

硬體防火牆:在專用硬體級別實現部分功能的防火牆
軟體防火牆:執行於通用硬體平臺之上的防火牆的應用軟體

  • 按網路協議劃分:

網路層防火牆:OSI模型下四層,又稱為包過濾防火牆
應用層防火牆/代理伺服器:proxy 代理閘道器,OSI模型七層

二、Linux防火牆的基本認識

1.Netfilter
Linux防火牆是由Netfilter元件提供的,Netfilter工作在核心空間,整合在linux核心中。

2.防火牆工具

  • iptables
  • firewalld
  • nftables

3.Netfilter中五個鉤子函式和報文流向
Netfilter在核心中選取五個位置放了五個hook function勾子函式——INPUT、OUTPUT、FORWARD、PREROUTING、POSTROUTING ,而這五個hook function向使用者開放,使用者可以透過一個命令工具iptables向其寫入規則。

三種報文流向:

  • 流入本機:PREROUTING --> INPUT-->使用者空間程序(訪問我的服務)
  • 流出本機:使用者空間程序 -->OUTPUT--> POSTROUTING(穿過我)
  • 轉發:PREROUTING --> FORWARD --> POSTROUTING(分攤流量)

三、iptables

1.iptables概述

iptables是Linux系統的防火牆, IP資訊包過濾系統,它實際上由兩個元件netfilter和iptables組成。
iptables 屬於“使用者態”(User Space, 又稱為使用者空間)的防火牆管理體系。是一種用來管理Linux防火牆的命令程式,它使插入、修改和刪除資料包過濾表中的規則變得容易,通常位於/sbin/iptables目錄下。

2.iptables的表、鏈結構(四表五鏈)

表中有鏈,鏈中有規則

  • 表的作用:規定了如何處理資料包
  • 鏈的作用:容納各種防火牆規則
  • 規則的作用:對資料包進行過濾或處理

四表

ptables是基於核心的防火牆,其中內建了raw、mangle、 nat和filter四個規則表。表中所有規則配置後,立即生效,不需要重啟服務。

表名 作用
raw 是否跟蹤資料流量
mangle 是否標記資料流量
nat 負責網路地址轉換,用來修改資料包中的源、目標IP地址或埠
filter (是防火牆的預設表)負責過濾資料包,確定是否放行該資料包(過濾)。包含三個鏈:PREROUTING、POSTROUTING、OUTPUT

五鏈

鏈名 作用
input 處理需要進入本機的流量
output 處理從本機出來的流量,一般不在此鏈上做配置
forward 處理需要被本機轉發的流量
prerouting 處理在路由判斷前的資料,在不明確是給本機的資料還是轉發給別的機器的資料前就進行處理
postrouting 處理在路由判斷後的資料包,明確是給自己還是給別人的資料後 進行處理

核心中資料包的傳輸過程

1.當一個資料包進入網路卡時,資料包首先進入PREROUTING鏈,核心根據資料包目的IP判斷是否需要轉送出去;
2.如果資料包是進入本機的,資料包就會沿著圖向下移動,到達INPUT鏈。資料包到達INPUT鏈後,任何程序都會收到它。本機上執行的程式可以傳送資料包,這些資料包經過OUTPUT鏈,然後到達;
3.如果資料包是要轉發出去的,且核心允許轉發,資料包就會向右移動,經過FORWARD鏈,然後到達POSTROUTING鏈輸出。

3.實際操作

iptables語法
命令格式:

iptables [-t 表名] 管理選項 [鏈名] [匹配條件] [-j 控制型別]

點選檢視程式碼
管理選項:表示iptables規則的操作方式,如插入、增加、刪除、檢視等;
匹配條件:用來指定要處理的資料包的特徵,不符合指定條件的資料包將不會處理;
控制型別:指的是資料包的處理方式,如允許、拒絕、丟棄等。 

`注意事項:`
不指定表名時,預設指filter表
不指定鏈名時,預設指表內的所有鏈
除非設定鏈的預設策略,否則必須指定匹配條件
選項、鏈名、控制型別使用大寫字母,其餘均為小寫

  • 管理選項
管理選項 用法示例
-A 在指定鏈末尾追加一條 iptables -A INPUT (操作)
-I 在指定鏈中插入一條新的,未指定序號預設作為第一條 iptables -I INPUT 編號(操作)
-P 指定預設規則 iptables -P OUTPUT ACCEPT (操作)
-D 刪除 iptables -t nat -D INPUT 2 (操作)
-p 服務名稱 icmp tcp-R修改、替換某一條規則 iptables -t nat -R INPUT (操作)
-L 檢視 iptables -t nat -L (檢視)
-n 所有欄位以數字形式顯示(比如任意ip地址是0.0.0.0而不是anywhere,比如顯示協議埠號而不是服務名) iptables -L -n,iptables -nL,iptables -vnL (檢視)
-v 檢視時顯示更詳細資訊,常跟-L一起使用 (檢視)
--line-number 規則帶編號 iptables -t nat -L -n --line-number /iptables -t nat -L --line-number
-F 清除鏈中所有規則 iptables -F (操作)
-N 新加自定義鏈-X清空自定義鏈的規則,不影響其他鏈 iptables -X
-Z 清空鏈的計數器(匹配到的資料包的大小和總和)iptables -Z
-S 看鏈的所有規則或者某個鏈的規則/某個具體規則後面跟編號
  • 匹配條件
通用匹配
協議匹配 -p 協議名
地址匹配 -s 源地址、-d目的地址 【可以是IP、網段、域名、空(任何地址)】
介面匹配 -i入站網路卡、-o出站網路卡
埠號匹配 --sport 指定源埠號 、--dport 指定目的埠號
  • 控制型別

對於防火牆,資料包的控制型別非常關鍵,直接關係到資料包的放行、封堵及做相應的日誌記錄等。在 iptables 防火牆體系中,最常用的幾種控制型別如下:

控制型別 作用ACCEPT允許資料包透過
DROP 直接丟棄資料包,不給出任何回應資訊
REJECT 拒絕資料包透過,必要時會給資料傳送端一個響應資訊
LOG 在/var/log/messages 檔案中記錄日誌資訊,然後將資料包傳遞給下一條規則
SNAT 修改資料包的源地址
DNAT 修改資料包的目的地址
MASQUERADE 偽裝成一個非固定公網IP地址

防火牆規則的“匹配即停止”對於 LOG 操作來說是一個特例,因為 LOG 只是一種輔助 動作,並沒有真正處理資料包。

檢視規則表

iptables -vnL
iptables -vnL --line-numbers

點選檢視程式碼
[root@node1 ~]#  iptables -vnL    //檢視規則表,L寫最後
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)   //input鏈,預設規則允許
 pkts bytes target     prot opt in     out     source         destination    //規則
#包數 位元組數 目標地址   協議      進     出      源地址          目的地址
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source         destination         

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source         destination 
 

[root@node1 ~]# iptables -vnL --line-numbers  //顯示各條規則在鏈內的順序號

相關文章