iptables 防火墻技術詳解

目錄

前言

1 iptables概述

1.1 Netfilter與iptables關系

1.1.1 Netfilter

1.1.2 iptables

1.1.3 兩者關系

2 iptables的表、鏈結構

2.1 四表五鏈結構介紹

2.1.1 基本概念

2.1.2 四表功能***

2.1.3 五鏈功能***

2.2 數據包過濾的匹配流程***

2.2.1 規則表應用順序***

2.2.2 規則鏈匹配順序

2.2.3 規則鏈內匹配順序

2.2.4 數據包匹配流程詳解

3 編寫防火墻規則

3.1 iptables安裝配置

3.1.1 關閉firewalld

3.1.2 安裝iptables

3.1.3 設置開機啟動

3.2 基本語法與控制類型

3.2.1 語法構成

3.2.2 注意事項不指定表名時,默認使用 filter 表

3.2.3 數據包控制類型

3.3 基本操作命令

3.3.1 常用管理參數

3.3.2 添加新規則

3.3.3 查看規則列表

3.3.4 刪除清空規則

3.3.5 設置默認策略

3.4 規則的匹配條件

3.4.1 通用匹配

3.4.2 隱含匹配

3.4.3?拓展

3.4.4 顯式匹配

4 總結


前言

????????在企業網絡環境中,各種應用系統(如Web網站、電子郵件系統、FTP服務器、數據庫系統等)都需要通過網絡為用戶提供服務。如何有效保護這些服務器,過濾不必要的訪問請求甚至惡意入侵,成為網絡安全的重要課題。

????????Linux系統中的iptables防火墻正是為解決這些問題而設計。它工作在網絡層,對TCP/IP數據包實施精細化的過濾和限制,屬于典型的包過濾防火墻(網絡層防火墻)。基于內核實現的iptables具有卓越的性能和穩定性,在全球范圍內獲得了廣泛應用。

????????本文將系統介紹iptables防火墻的核心概念、結構原理、匹配機制和規則配置方法,幫助讀者全面掌握這一重要的網絡安全技術。

1 iptables概述

1.1 Netfilter與iptables關系

1.1.1 Netfilter
  • Linux防火墻功能由Netfilter組件提供

  • Netfilter工作在內核空間,集成在Linux內核中

  • 采用模塊化設計,具有良好的可擴充性

  • 與IP協議棧無縫契合,支持數據包過濾、地址轉換和處理操作

  • 官網文檔:https://netfilter.org/documentation/

1.1.2 iptables
  • 屬于用戶空間(User Space)的防火墻管理體系

  • 管理Linux防火墻的命令行程序

  • 位于/sbin/iptables目錄下

  • 使插入、修改和刪除數據包過濾表中的規則變得容易

1.1.3 兩者關系
  • netfilter:內核態的防火墻功能體系

  • iptables:用戶態的防火墻管理工具

  • 后期簡稱為iptables,基于內核防火墻,內置raw、mangle、nat和filter四個規則表

2 iptables的表、鏈結構

2.1 四表五鏈結構介紹

2.1.1 基本概念
  • 規則表:容納各種規則鏈的容器

  • 規則鏈:容納各種防火墻規則的鏈條

  • 規則:對數據包進行過濾或處理的具體規則

  • 結構關系:表里有鏈,鏈里有規則

2.1.2 四表功能***
  1. raw表:決定是否對數據包進行狀態跟蹤

    • 包含鏈:OUTPUT、PREROUTING

  2. mangle表:修改數據包內容,做流量整形,設置標記

    • 包含鏈:INPUT、OUTPUT、FORWARD、PREROUTING、POSTROUTING

  3. nat表:負責網絡地址轉換,修改源/目標IP地址或端口

    • 包含鏈:OUTPUT、PREROUTING、POSTROUTING

  4. filter表:負責過濾數據包,決定是否放行

    • 包含鏈:INPUT、FORWARD、OUTPUT

2.1.3 五鏈功能***
  1. INPUT:處理入站數據包,匹配目標IP為本機的數據包

  2. OUTPUT:處理出站數據包

  3. FORWARD:處理轉發數據包,匹配流經本機的數據包

  4. PREROUTING路由選擇前處理數據包,用于DNAT

  5. POSTROUTING路由選擇后處理數據包,用于SNAT

2.2 數據包過濾的匹配流程***

2.2.1 規則表應用順序***

raw → mangle → nat → filter

2.2.2 規則鏈匹配順序
  1. 主機型防火墻

  • 入站數據:PREROUTING → INPUT → 本機應用程序
  • 出站數據:本機應用程序 → OUTPUT → POSTROUTING
  1. 網絡型防火墻

  • 轉發數據:PREROUTING → FORWARD → POSTROUTING
2.2.3 規則鏈內匹配順序
  • 自上向下依次檢查,找到匹配規則即停止(LOG策略除外)

  • 找不到匹配規則時,按該鏈的默認策略處理

  • 默認策略不參與鏈內規則的順序編排

2.2.4 數據包匹配流程詳解
  1. 入站數據流向:外界數據包 → PREROUTING → 路由選擇 → INPUT → 應用程序

  2. 轉發數據流向:外界數據包 → PREROUTING → 路由選擇 → FORWARD → POSTROUTING

  3. 出站數據流向:本機數據包 → 路由選擇 → OUTPUT → POSTROUTING

3 編寫防火墻規則

3.1 iptables安裝配置

3.1.1 關閉firewalld
systemctl stop firewalld.service
systemctl disable firewalld.service
sentenforce 0
3.1.2 安裝iptables
yum -y install iptables iptables-services
3.1.3 設置開機啟動
systemctl start iptables.service
systemctl enable iptables.service

3.2 基本語法與控制類型

3.2.1 語法構成

iptables 【-t 表名】【管理參數】【鏈名】【匹配條件】【-j 控制類型】

3.2.2 注意事項不指定表名時,默認使用 filter
  • 不指定鏈名時,默認指表內所有鏈

  • 除非設置鏈的默認策略,否則必須指定匹配條件

  • 參數、鏈名、控制類型使用大寫字母

3.2.3 數據包控制類型
ACCEPT允許通過
DROP直接丟包,不回應
REJECT拒絕通過,回應
LOG記錄日志信息后傳遞給下一條規則
SNAT修改數據包源地址
DNAT修改數據包目的地址
MASQUERADE偽裝成非固定公網IP地址

3.3 基本操作命令

3.3.1 常用管理參數
選項功能描述示例
-A在指定鏈末尾追加規則iptables -A INPUT
-I在指定鏈中插入新規則iptables -I INPUT
-P指定默認規則iptables -P OUTPUT ACCEPT
-D刪除規則iptables -t nat -D INPUT
-R修改、替換規則iptables -t nat -R INPUT
-L查看規則iptables -t nat -L
-n數字形式顯示iptables -L -n
-v顯示詳細信息iptables -v -L
--line-number顯示規則編號iptables -L --line-number
-F清除鏈中所有規則iptables -F
-X清空自定義鏈規則iptables -X
-Z清空鏈計數器iptables -Z
-S查看鏈的所有規則iptables -t nat -S
3.3.2 添加新規則
iptables -t filter -A INPUT -p icmp -j REJECT???????
#在filter表 INPUT鏈 行末添加:禁止所有ICMP請求進入本機,并告知被拒者
解釋:其他計算機將無法成功 ping 通你的服務器iptables -I INPUT 2 -p tcp --dport 22 -j ACCEPT????????
#在filter表 INPUT鏈 第2行添加:允許所有目標端口為 22 的 TCP 請求進入本機
解釋:開放了服務器的 SSH 遠程登錄端口,允許外部連接
3.3.3 查看規則列表
iptables -L INPUT --line-numbers
iptables -nL INPUT
iptables -vnL --line-numbers
3.3.4 刪除清空規則
iptables -D INPUT 5
iptables -F INPUT
iptables -t nat -F
3.3.5 設置默認策略
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

3.4 規則的匹配條件

3.4.1 通用匹配
  1. 協議匹配-p 協議名

  2. 地址匹配-s 源地址-d 目的地址

  3. 接口匹配-i 入站網卡-o 出站網卡

iptables -A FORWARD ! -p icmp -j ACCEPT
#在filter表 FORWARD鏈 行末添加:接收所有非ICMP請求進入本機iptables -A INPUT -s 192.168.80.11 -j DROP
#在filter表 INPUT鏈 行末添加:拒絕 IP地址為 192.168.80.11 的數據進入本機,并丟棄不回應iptables -I INPUT -i ens33 -s 192.168.80.0/24 -j DROP 
#在filter表 INPUT鏈 行首添加:拒絕 192.168.80.0/24網段的數據通過ens33網卡進入本機,并丟棄不回應
3.4.2 隱含匹配
  1. 端口匹配--sport 源端口--dport 目的端口

  2. TCP標記匹配--tcp-flags TCP標記

  3. ICMP類型匹配--icmp-type ICMP類型

iptables -A INPUT -p tcp --sport 1000:3000 -j REJECT
#在filter表 INPUT鏈 行末添加:拒絕所有從外部發起、且源端口號在1000到3000范圍內的TCP連接,并告知被拒者iptables -A INPUT -p icmp --icmp-type 8 -j DROP????????
#丟棄所有發往本機的 ICMP Echo Request 請求包,并丟棄不回應
3.4.3?拓展

??--icmp-type 8?vs ?-p icmp

-p icmp -j DROP-p icmp --icmp-type 8 -j DROP
這會丟棄所有類型的 ICMP 包,包括 Echo Request (8)、Echo Reply (0)、Destination Unreachable (3) 等

只丟棄 ICMP Echo Request 包(即入站 ping 請求)。其他類型的 ICMP 包(如出站 ping 的回復、網絡錯誤消息等)仍然被允許

影響:?你不僅無法被?ping?通,還可能影響路徑 MTU 發現、網絡診斷等關鍵功能,可能導致網絡連接問題影響:?效果非常精準。你的服務器仍然可以正常?ping?通外部(因為能收到 Echo Reply (Type 0)),也能接收其他重要的網絡控制消息,只是別人無法?ping?通你
3.4.4 顯式匹配
  1. 多端口匹配-m multiport --sport/dport 端口列表

  2. IP范圍匹配-m iprange --src-range IP范圍

  3. MAC地址匹配-m mac --mac-source MAC地址

  4. 狀態匹配-m state --state 連接狀態

iptables -A INPUT -p tcp -m multiport --dport 80,22,21,20,53 -j ACCEPT
#在filter表 INPUT鏈 行末添加:接受所有端口號為80,22,21,20,53的TCP數據進入本機iptables -A FORWARD -m state --state NEW -p tcp ! --syn -j DROP
#在filter表 FORWARD鏈 行末添加:拒絕所有 新連接狀態且沒有syn標志 的TCP數據,并丟棄不回應

4 總結

????????iptables作為Linux系統中最強大的防火墻工具,提供了靈活而精細的網絡數據包控制能力。通過本文的系統學習,我們掌握了:

  1. 核心架構:理解了netfilter與iptables的關系,以及四表五鏈的結構設計理念

  2. 匹配機制:掌握了數據包在表和鏈間的流轉流程匹配優先級

  3. 規則配置:學會了使用各種管理選項進行規則的添加、查看、刪除和修改

  4. 匹配條件:熟悉了通用匹配隱含匹配顯式匹配三種匹配方式的應用場景

????????在實際生產環境中,iptables的合理配置對網絡安全至關重要。建議遵循"默認拒絕,按需開放"的原則,結合具體的業務需求設計防火墻規則。同時,要注意規則的測試和驗證,避免因配置失誤導致的服務中斷。通過持續學習和實踐,能夠更加熟練地運用iptables構建堅固的網絡安全防護體系。

????????重要提醒:在對遠程服務器進行iptables配置時,務必先設置允許SSH連接的規則,然后再設置默認策略為DROP,防止因配置失誤導致無法遠程連接服務器。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/96793.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/96793.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/96793.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

SOME/IP-SD報文中 Entry Format(條目格式)-理解筆記3

🎯 一、核心目標:解決“找服務”的問題 想象一下,一輛現代汽車里有上百個智能設備(ECU),比如: 自動駕駛控制器(需要“車速”服務)中控大屏(需要“導航”和“音…

AAA服務器技術

一、AAA認證架構理解AAA基本概念與架構先介紹: AAA是什么(認證、授權、計費)重點理解: 為什么需要AAA?它的三大功能分別解決什么問題?關聯后續: 這是所有后續協議(RADIUS/TACACS&…

客戶生命周期價值幫助HelloFresh優化其營銷支出

1 引言 了解客戶的長期價值對HelloFresh至關重要。客戶生命周期價值(CLV)代表了客戶與公司關系的整個過程中所產生的總價值。通過預測這一指標,我們可以更明智地決定如何分配營銷資源,以獲得最大的影響。 在本文中,我…

Vue 2 中的 v-model和Vue3中的v-model

你問的是 v-model&#xff08;不是 v-modal 吧 &#x1f604;&#xff09;&#xff0c;我來幫你梳理一下 Vue2 和 Vue3 的 v-model 區別。&#x1f539; Vue 2 中的 v-model語法<input v-model"msg">v-model 本質上是 語法糖&#xff0c;等價于&#xff1a;<…

樸素貝葉斯算法學習總結

一、貝葉斯理論基礎 1. 貝葉斯思想的核心 貝葉斯算法由 18 世紀英國數學家托馬斯?貝葉斯提出&#xff0c;其核心是解決 “逆概” 問題 —— 區別于 “正向概率” 已知條件求結果概率的思路&#xff0c;逆概是通過觀測到的結果&#xff0c;反推導致該結果的原因概率。比如在日常…

【Protues仿真】基于AT89C52單片機的舵機和直流電機控制

目錄 1 PWM信號 1.1 三個最基本的量 1.1.1 周期 T&#xff08;Period&#xff09; 1.1.2脈沖寬度 Th&#xff08;High Time&#xff09; 1.1.3占空比 D&#xff08;Duty Cycle&#xff09; 1.2 為什么要用 PWM 1.3 關鍵參數對照表 1.4單片機里產生 PWM 的四種套路 1.4…

vue家教預約平臺設計與實現(代碼+數據庫+LW)

摘要 隨著互聯網技術的不斷發展&#xff0c;在線家教平臺逐漸成為家長和學生選擇教育服務的重要途徑。尤其在現代社會中&#xff0c;個性化教育需求日益增多&#xff0c;傳統的線下家教形式已無法完全滿足廣大家長和學生的需求。在線家教平臺不僅能為學生提供更多選擇&#xf…

AI系列 - Claude 與 Qwen 模型自動補全對比:誰更勝一籌?

Claude 與 Qwen 模型自動補全對比&#xff1a;誰更勝一籌&#xff1f; 導讀&#xff1a;隨著大語言模型的快速發展&#xff0c;自動補全功能在代碼編寫、文本生成等領域變得越來越重要。本文將對比 Anthropic 的 Claude 系列模型與 Alibaba 的 Qwen 系列模型在自動補全任務中的…

【ARM】MDK在debug模式下斷點的類型

1、 文檔目標本文旨在深入探討嵌入式開發環境中&#xff08;以MDK為例&#xff09;調試模式下的斷點類型&#xff0c;幫助開發者全面了解不同斷點的工作原理及其應用場景。通過掌握這些知識&#xff0c;開發者可以更高效地進行代碼調試&#xff0c;快速定位和解決問題。2、 問題…

CF2133C 下界(The Nether)

CF2133C 下界&#xff08;The Nether&#xff09; 洛谷題目傳送門 題目描述 這是一道交互題。 最近發現下界&#xff08;The Nether&#xff09;后&#xff0c;Steve 在他的世界中建造了一個由 nnn 個下界傳送門組成的網絡&#xff0c;每個傳送門位于不同的位置。 每個傳送…

無線USB轉換器TOS-WLink網盤更新--TOS-WLink使用幫助V1.0.pdf

1&#xff0c;編寫原因 隨著當前視頻越來越多&#xff0c;對于首次接觸到WLink的朋友、首次開箱使用的朋友不夠友好&#xff0c;常常感覺無從下手&#xff0c;為此編寫了TOS-WLink使用幫助V1.0.pdf&#xff1b;按照文檔進行一步一步驅動安裝&#xff0c;配網&#xff1b;文檔中…

Redis面試精講 Day 29:Redis安全防護與最佳實踐

【Redis面試精講 Day 29】Redis安全防護與最佳實踐 在“Redis面試精講”系列的第29天&#xff0c;我們聚焦于一個在生產環境中至關重要、卻常被開發者忽視的核心主題——Redis的安全防護與最佳實踐。隨著Redis廣泛應用于高并發、分布式系統中&#xff0c;其暴露在公網或內網中…

【數據結構】LeetCode160.相交鏈表 138.隨即鏈表復制 牛客——鏈表回文問題

文章目錄一、相交鏈表問題問題描述解題思路分析思路一&#xff1a;暴力遍歷法思路二&#xff1a;雙指針對齊法&#xff08;最優解&#xff09;二、鏈表的回文結構問題描述解題思路完整代碼三、 隨即鏈表的復制問題描述解題思路復雜度分析一、相交鏈表問題 問題描述 給定兩個單…

Mysql InnoDB 底層架構設計、功能、原理、源碼系列合集【四、事務引擎核心 - MVCC與鎖機制】

Mysql InnoDB 底層架構設計、功能、原理、源碼系列合集 一、InnoDB 架構先導。【模塊劃分&#xff0c;各模塊功能、源碼位置、關鍵結構體/函數】 二、內存結構核心 - 緩沖池與性能加速器 三、日志系統 - 事務持久化的基石 四、事務引擎核心 - MVCC與鎖機制 五、InnoDB 高階…

[ pytorch ] 基于CLIP的zero-shot圖像分類

論文&#xff1a;Learning Transferable Visual Models From Natural Language Supervision 地址&#xff1a;Learning Transferable Visual Models From Natural Language Supervision 一、關于CLIP 基于圖文匹配的特征學習&#xff1a;該論文證明了預測哪個標題與哪個圖像…

SP95N65CTO:一款高性能650V SiC MOSFET的全面解析

碳化硅&#xff08;SiC&#xff09;功率器件因其優異的性能&#xff0c;在高頻、高溫、高效率的應用中越來越受到重視。本文將以SP95N65CTO為例&#xff0c;詳細介紹這款650V SiC MOSFET的關鍵特性、電氣參數與應用場景。一、產品概述SP95N65CTO是一款采用TOLI&#xff08;TO-2…

week4-[二維數組]平面上的點

week4-[二維數組]平面上的點 題目描述 有 NNN 個二維平面上的點&#xff0c;每個點的坐標都是整數且坐標范圍都在 0~9990\sim 9990~999 之間&#xff0c;求其中出現最頻繁的點的出現次數及其坐標。 輸入格式 第一行有一個整數 NNN&#xff0c;表示平面上點的個數。 接下來 NN…

領域專用AI模型訓練指南:醫療、法律、金融三大垂直領域微調效果對比

領域專用AI模型訓練指南&#xff1a;醫療、法律、金融三大垂直領域微調效果對比 &#x1f31f; Hello&#xff0c;我是摘星&#xff01; &#x1f308; 在彩虹般絢爛的技術棧中&#xff0c;我是那個永不停歇的色彩收集者。 &#x1f98b; 每一個優化都是我培育的花朵&#xff0…

在自動駕駛中ESKF實現GINS時,是否將重力g作為變量考慮進去的目的是什么?

在自動駕駛的ESKF中&#xff0c;是否將重力 g 作為估計變量&#xff0c;可以從多個維度來比較這兩種方法的差異。對比維度不將重力 g 作為變量將重力 g 作為變量核心假設重力矢量 g 是已知且恒定的完美參考量。重力矢量 g 是需要被估計或校準的量&#xff0c;其值可能存在不確定…

Dify 從入門到精通(第 55/100 篇):Dify 的模型微調(進階篇)

Dify 從入門到精通&#xff08;第 55/100 篇&#xff09;&#xff1a;Dify 的模型微調 Dify 入門到精通系列文章目錄 第一篇《Dify 究竟是什么&#xff1f;真能開啟低代碼 AI 應用開發的未來&#xff1f;》介紹了 Dify 的定位與優勢第二篇《Dify 的核心組件&#xff1a;從節點…